|
|
|
@ -1,8 +1,6 @@
|
|
|
|
|
package com.yuyou.openapi.openapi;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.codec.Base64;
|
|
|
|
|
import cn.hutool.core.util.CharsetUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import cn.hutool.crypto.SecureUtil;
|
|
|
|
|
import cn.hutool.crypto.asymmetric.KeyType;
|
|
|
|
|
import cn.hutool.crypto.asymmetric.RSA;
|
|
|
|
@ -17,12 +15,12 @@ public class RSATest {
|
|
|
|
|
@Test
|
|
|
|
|
public void testRSA(){
|
|
|
|
|
// 待加密字符串
|
|
|
|
|
String str = "{\"tag\":{\"tag_key_name\":\"学生姓名\",\"tag_key_mobile\":\"联系方式\",\"tag_key_grade\":\"课程年级\",\"tag_key_course\":\"课程科目\"},\"data\":{\"name\":\"张小兵\",\"mobile\":\"13011112222\",\"grade\":\"三年级\",\"course\":\"数学\"}}";
|
|
|
|
|
String str = "{\"tag\":{\"tag_key_id\":111111,\"tag_key_name\":\"学生姓名\",\"tag_key_ mobile\":\"联系方式\",\"tag_key_ grade\":\"课程年级\",\"tag_key_ course\":\"课程科目\"},\"data\":{\"name\":\"张小兵\",\"mobile\":\"13011112222\",\"grade\":\"三年级\",\"course\":\"数学\"}}";
|
|
|
|
|
|
|
|
|
|
str = "JTdCJTIydGFnJTIyJTNBJTdCJTIydGFnX2tleV9pZCUyMiUzQSUyMklEJXU2ODA3JXU4QkM2JTIyJTJDJTIydGFnX2tleV9uYW1lJTIyJTNBJTIyJXU1QjY2JXU3NTFGJXU1OUQzJXU1NDBEJTIyJTJDJTIydGFnX2tleV8lMjBtb2JpbGUlMjIlM0ElMjIldTgwNTQldTdDRkIldTY1QjkldTVGMEYlMjIlMkMlMjJ0YWdfa2V5XyUyMGdyYWRlJTIyJTNBJTIyJXU4QkZFJXU3QTBCJXU1RTc0JXU3RUE3JTIyJTJDJTIydGFnX2tleV8lMjBjb3Vyc2UlMjIlM0ElMjIldThCRkUldTdBMEIldTc5RDEldTc2RUUlMjIlN0QlMkMlMjJkYXRhJTIyJTNBJTdCJTIybmFtZSUyMiUzQSUyMiV1NUYyMCV1NUMwRiV1NTE3NSUyMiUyQyUyMm1vYmlsZSUyMiUzQSUyMjEzMDExMTEyMjIyJTIyJTJDJTIyZ3JhZGUlMjIlM0ElMjIldTRFMDkldTVFNzQldTdFQTclMjIlMkMlMjJjb3Vyc2UlMjIlM0ElMjIldTY1NzAldTVCNjYlMjIlN0QlN0Q=";
|
|
|
|
|
//先用Base64编码
|
|
|
|
|
String encode = Base64.encode(str);
|
|
|
|
|
System.out.println("Base64加密后的内容为:" + encode);
|
|
|
|
|
// String encode = Base64.encode(str);
|
|
|
|
|
// System.out.println("Base64加密后的内容为:" + encode);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 公钥
|
|
|
|
|
String PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3tTd2ZJj/ivCF7HdfwPc" +
|
|
|
|
@ -69,20 +67,20 @@ public class RSATest {
|
|
|
|
|
|
|
|
|
|
// 加载秘钥
|
|
|
|
|
RSA rsa = SecureUtil.rsa(PRIVATE_KEY, PUBLIC_KEY);
|
|
|
|
|
|
|
|
|
|
// 公钥加密,私钥解密
|
|
|
|
|
byte[] encrypt = rsa.encrypt(StrUtil.bytes(encode, CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
|
|
|
|
|
System.out.println("加密串" + StrUtil.str(encrypt, CharsetUtil.CHARSET_UTF_8));
|
|
|
|
|
// System.out.println("加密"+ Arrays.toString(encrypt));
|
|
|
|
|
byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
|
|
|
|
|
|
|
|
|
|
//Base64解码
|
|
|
|
|
String result = StrUtil.str(decrypt, CharsetUtil.CHARSET_UTF_8);
|
|
|
|
|
String decodeStr = Base64.decodeStr(result);
|
|
|
|
|
System.out.println("Base64解密后的内容为:" + decodeStr);
|
|
|
|
|
|
|
|
|
|
// 公钥加密
|
|
|
|
|
byte[] encrypt = rsa.encrypt(str, KeyType.PublicKey);
|
|
|
|
|
String beforeStr = new String(encrypt);
|
|
|
|
|
System.out.println("加密后的数据:" + beforeStr);
|
|
|
|
|
String encode = Base64.encode(encrypt);
|
|
|
|
|
System.out.println("Base64加密后的数据:" + encode);
|
|
|
|
|
// 私钥解密
|
|
|
|
|
byte[] decode = Base64.decode(encode);
|
|
|
|
|
System.out.println("Base64解密后的数据:" + new String(decode));
|
|
|
|
|
byte[] decrypt = rsa.decrypt(decode, KeyType.PrivateKey);
|
|
|
|
|
String result = new String(decrypt);
|
|
|
|
|
System.out.println("解密后的数据:" + result);
|
|
|
|
|
// 比较
|
|
|
|
|
Assert.assertEquals(str, decodeStr);
|
|
|
|
|
Assert.assertEquals(str, result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|