From 4de7066db43c58b4d081e2c34a5111b0aa1dac16 Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Mon, 05 Aug 2024 16:00:50 +0800
Subject: [PATCH] SM2和SM4方法

---
 src/main/java/com/dji/sample/droneairport/utils/SM4Util.java |   47 +++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 39 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/dji/sample/droneairport/utils/SM4Util.java b/src/main/java/com/dji/sample/droneairport/utils/SM4Util.java
index 2312585..1e721b8 100644
--- a/src/main/java/com/dji/sample/droneairport/utils/SM4Util.java
+++ b/src/main/java/com/dji/sample/droneairport/utils/SM4Util.java
@@ -37,21 +37,52 @@
         return Arrays.copyOf(output, length);
     }
 
+    public static String decrypt(String keys,String secert){
+        byte[] key = keys.getBytes(StandardCharsets.UTF_8);
+        byte[] ming= Base64.getDecoder().decode(secert);
+        byte[] text=decrypt(key,ming);
+        return new String(text, StandardCharsets.UTF_8);
+    }
+
+    public static String encrypt(String keys, String input){
+        byte[] key = keys.getBytes(StandardCharsets.UTF_8);
+        return encrypt(key,input.getBytes());
+    }
+
     public static void main(String[] args) {
         byte[] key = "jsimjrby3wqb7dbq".getBytes(StandardCharsets.UTF_8); // 16字节密钥
 
         // 原始明文
-        String plaintext = "hello";
+        String plaintext = "{\n" +
+                "\"regioncode\": \"650000\",\n" +
+                "\"deviceid\": \"dh11111111111\",\n" +
+                "\"brand\": \"大疆\",\n" +
+                "\"model\": \"M3D\",\n" +
+                "\"longitude\": 120.6670,\n" +
+                "\"latitude\": 30.4567,\n" +
+                "\"height\": 45,\n" +
+                "\"radius\": 10000\n" +
+                "}\n";
 
-        System.out.println("Encoded: " + encrypt(key, plaintext.getBytes(StandardCharsets.UTF_8)));
+        String secert =encrypt(key,plaintext.getBytes());
+        System.out.println(secert);
 
-        // 解码并解密
-        byte[] decoded = Base64.getDecoder().decode(encrypt(key, plaintext.getBytes(StandardCharsets.UTF_8)));
+
+        byte[] ming= Base64.getDecoder().decode(secert);
+        byte[] text=decrypt(key,ming);
+        System.out.println(new String(text, StandardCharsets.UTF_8));
+        System.out.println("封装"+encrypt("jsimjrby3wqb7dbq","hello"));
+        System.out.println("封装"+decrypt("jsimjrby3wqb7dbq","MkzmRdHSy/pB4sdTjNHb4ngG0q7Z+vWzNKdJxJFkhw4Y9tI8R9sapL6ECLyVnKZwiZbmVQFtn+sT294nCVdskK8TUx7CCI3qo21d9I4ONl+XAYnlDCtEa8KSFK3CB3/D9zRt96zEDkv31Av2rdAJW9O7Le1Z13wWGmsEqHjjrXLv5jd/Cop6+BB9+lqDRlhx+ubNOFdUgJALe4wHjZPCMdE0ob44Hx+1iLg7m/WJQWc="));
+        // 直接加密
+        String encryptedBase64 = encrypt(key, plaintext.getBytes(StandardCharsets.UTF_8));
+//        System.out.println("Encrypted (Base64): " + encryptedBase64);
+
+        // 直接解密
+        byte[] decoded = Base64.getDecoder().decode(encryptedBase64);
         byte[] decrypted = decrypt(key, decoded);
 
-        // 输出结果
-        System.out.println("Plaintext: " + plaintext);
-        System.out.println("Encrypted (Base64): " + encrypt(key, plaintext.getBytes(StandardCharsets.UTF_8)));
-        System.out.println("Decrypted: " + new String(decrypted, StandardCharsets.UTF_8));
+//        // 输出结果
+//        System.out.println("Plaintext: " + plaintext);
+//        System.out.println("Decrypted: " + new String(decrypted, StandardCharsets.UTF_8));
     }
 }

--
Gitblit v1.9.3