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