mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
add test
This commit is contained in:
parent
9cb10bb214
commit
1a646df52a
@ -0,0 +1,23 @@
|
||||
package cn.hutool.crypto.asymmetric;
|
||||
|
||||
import cn.hutool.crypto.SecureUtil;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
@SuppressWarnings("FieldCanBeLocal")
|
||||
public class IssueI6OQJATest {
|
||||
|
||||
private static final String privateKey = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAOgjgkzy33Kg3XzV4r0dpa3o6klM85TVn5jS6woBsTRuU0SsDJzqjXdF34G9uZgbHN74RHoOjO2sRM98tnjEJ8WvqqPBOimvpBeTqVGrWRXtelXhPXaSfYdipGIp2stHr270GTg5+chTrfOn7rp1PA09AoRM+HULaU31St0wntf/AgMBAAECgYBwb9qJ6M1f2RjOgU58aSK5dGoeLN6CRWIzBF4Bj8ZD7ff4+Bh33Ie+sKJMVhfR27gFK10HfYq3B8ygbvh20BOumU9U6xFMOff5yPjOoCAFfa7k69hjPaq8Ls/H9kT4sG+djZAyc43JVjUv0J9VFRlCtgEJHNpWUlTPLaqc+1ScEQJBAP1Ewd2nStmXjgHeMiB+NBhY0QSIN5HBW07MlmsMbJir+OWN0t8YKoYZXynei6UDu6wrwTCCDRhcSCpFy9bA9+cCQQDqpGouK8zhvcM/yT1C+f/Hh9cFIlqLKsHssmSva0lTKVE5O7104VXEwNjufjRwaGLc0bRgs/aJh8W7EcGp2zwpAkEAjsk40xIB7PK4qOzwLcl47VEFZhy114K/S4mkM+3pO5mY1TJD9GrXborXT++bowibwdFZNVPctiMwvERlS0m3eQJBAKEKvyV5QmEdEMjSoY06cGbNwLHxZhtl+TsvJROQmv7MuMaDTgDON0OW6Eynqe4Mdu3/r8E/QtIZsYg3I6gkpCECQQDijoNBop46kR/udUEPCaMjy3lzUVklAGAMKE+mc7n50+A3CeMDXAYU/OCf7vMjo2Uq44CE/yIHtYURn0usCzoB";
|
||||
private static final String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDoI4JM8t9yoN181eK9HaWt6OpJTPOU1Z+Y0usKAbE0blNErAyc6o13Rd+BvbmYGxze+ER6DoztrETPfLZ4xCfFr6qjwTopr6QXk6lRq1kV7XpV4T12kn2HYqRiKdrLR69u9Bk4OfnIU63zp+66dTwNPQKETPh1C2lN9UrdMJ7X/wIDAQAB";
|
||||
|
||||
@Test
|
||||
public void genKeyTest() {
|
||||
Assert.assertEquals(passCryto("123"), passCryto("123"));
|
||||
}
|
||||
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
private String passCryto(final String value){
|
||||
return SecureUtil.rsa(privateKey, publicKey)
|
||||
.encryptBase64(value, KeyType.PrivateKey);
|
||||
}
|
||||
}
|
@ -25,27 +25,27 @@ public class RSATest {
|
||||
|
||||
@Test
|
||||
public void generateKeyPairTest() {
|
||||
KeyPair pair = KeyUtil.generateKeyPair("RSA");
|
||||
final KeyPair pair = KeyUtil.generateKeyPair("RSA");
|
||||
Assert.assertNotNull(pair.getPrivate());
|
||||
Assert.assertNotNull(pair.getPublic());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void rsaCustomKeyTest() {
|
||||
KeyPair pair = KeyUtil.generateKeyPair("RSA");
|
||||
byte[] privateKey = pair.getPrivate().getEncoded();
|
||||
byte[] publicKey = pair.getPublic().getEncoded();
|
||||
final KeyPair pair = KeyUtil.generateKeyPair("RSA");
|
||||
final byte[] privateKey = pair.getPrivate().getEncoded();
|
||||
final byte[] publicKey = pair.getPublic().getEncoded();
|
||||
|
||||
RSA rsa = SecureUtil.rsa(privateKey, publicKey);
|
||||
final RSA rsa = SecureUtil.rsa(privateKey, publicKey);
|
||||
|
||||
// 公钥加密,私钥解密
|
||||
byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
|
||||
byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
|
||||
final byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
|
||||
final byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
|
||||
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt, CharsetUtil.CHARSET_UTF_8));
|
||||
|
||||
// 私钥加密,公钥解密
|
||||
byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PrivateKey);
|
||||
byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
|
||||
final byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PrivateKey);
|
||||
final byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
|
||||
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt2, CharsetUtil.CHARSET_UTF_8));
|
||||
}
|
||||
|
||||
@ -60,14 +60,14 @@ public class RSATest {
|
||||
Assert.assertNotNull(rsa.getPrivateKeyBase64());
|
||||
|
||||
// 公钥加密,私钥解密
|
||||
byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
|
||||
final byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
|
||||
|
||||
byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
|
||||
final byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
|
||||
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt, CharsetUtil.CHARSET_UTF_8));
|
||||
|
||||
// 私钥加密,公钥解密
|
||||
byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PrivateKey);
|
||||
byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
|
||||
final byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PrivateKey);
|
||||
final byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
|
||||
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt2, CharsetUtil.CHARSET_UTF_8));
|
||||
}
|
||||
|
||||
@ -82,14 +82,14 @@ public class RSATest {
|
||||
Assert.assertNotNull(rsa.getPrivateKeyBase64());
|
||||
|
||||
// 公钥加密,私钥解密
|
||||
byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
|
||||
final byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
|
||||
|
||||
byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
|
||||
final byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
|
||||
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt, CharsetUtil.CHARSET_UTF_8));
|
||||
|
||||
// 私钥加密,公钥解密
|
||||
byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PrivateKey);
|
||||
byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
|
||||
final byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PrivateKey);
|
||||
final byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
|
||||
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt2, CharsetUtil.CHARSET_UTF_8));
|
||||
}
|
||||
|
||||
@ -104,14 +104,14 @@ public class RSATest {
|
||||
Assert.assertNotNull(rsa.getPrivateKeyBase64());
|
||||
|
||||
// 公钥加密,私钥解密
|
||||
byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
|
||||
final byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
|
||||
|
||||
byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
|
||||
final byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
|
||||
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt, CharsetUtil.CHARSET_UTF_8));
|
||||
|
||||
// 私钥加密,公钥解密
|
||||
byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PrivateKey);
|
||||
byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
|
||||
final byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PrivateKey);
|
||||
final byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
|
||||
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt2, CharsetUtil.CHARSET_UTF_8));
|
||||
}
|
||||
|
||||
@ -127,37 +127,37 @@ public class RSATest {
|
||||
Assert.assertNotNull(rsa.getPrivateKeyBase64());
|
||||
|
||||
// 公钥加密,私钥解密
|
||||
byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
|
||||
byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
|
||||
final byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PublicKey);
|
||||
final byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
|
||||
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt, CharsetUtil.CHARSET_UTF_8));
|
||||
|
||||
// 私钥加密,公钥解密
|
||||
byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PrivateKey);
|
||||
byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
|
||||
final byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.CHARSET_UTF_8), KeyType.PrivateKey);
|
||||
final byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
|
||||
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt2, CharsetUtil.CHARSET_UTF_8));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void rsaBcdTest() {
|
||||
String text = "我是一段测试aaaa";
|
||||
final String text = "我是一段测试aaaa";
|
||||
|
||||
final RSA rsa = new RSA();
|
||||
|
||||
// 公钥加密,私钥解密
|
||||
String encryptStr = rsa.encryptBcd(text, KeyType.PublicKey);
|
||||
String decryptStr = StrUtil.utf8Str(rsa.decryptFromBcd(encryptStr, KeyType.PrivateKey));
|
||||
final String encryptStr = rsa.encryptBcd(text, KeyType.PublicKey);
|
||||
final String decryptStr = StrUtil.utf8Str(rsa.decryptFromBcd(encryptStr, KeyType.PrivateKey));
|
||||
Assert.assertEquals(text, decryptStr);
|
||||
|
||||
// 私钥加密,公钥解密
|
||||
String encrypt2 = rsa.encryptBcd(text, KeyType.PrivateKey);
|
||||
String decrypt2 = StrUtil.utf8Str(rsa.decryptFromBcd(encrypt2, KeyType.PublicKey));
|
||||
final String encrypt2 = rsa.encryptBcd(text, KeyType.PrivateKey);
|
||||
final String decrypt2 = StrUtil.utf8Str(rsa.decryptFromBcd(encrypt2, KeyType.PublicKey));
|
||||
Assert.assertEquals(text, decrypt2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void rsaBase64Test() {
|
||||
String textBase = "我是一段特别长的测试";
|
||||
StringBuilder text = new StringBuilder();
|
||||
final String textBase = "我是一段特别长的测试";
|
||||
final StringBuilder text = new StringBuilder();
|
||||
for (int i = 0; i < 10; i++) {
|
||||
text.append(textBase);
|
||||
}
|
||||
@ -165,19 +165,19 @@ public class RSATest {
|
||||
final RSA rsa = new RSA();
|
||||
|
||||
// 公钥加密,私钥解密
|
||||
String encryptStr = rsa.encryptBase64(text.toString(), KeyType.PublicKey);
|
||||
String decryptStr = StrUtil.utf8Str(rsa.decrypt(encryptStr, KeyType.PrivateKey));
|
||||
final String encryptStr = rsa.encryptBase64(text.toString(), KeyType.PublicKey);
|
||||
final String decryptStr = StrUtil.utf8Str(rsa.decrypt(encryptStr, KeyType.PrivateKey));
|
||||
Assert.assertEquals(text.toString(), decryptStr);
|
||||
|
||||
// 私钥加密,公钥解密
|
||||
String encrypt2 = rsa.encryptBase64(text.toString(), KeyType.PrivateKey);
|
||||
String decrypt2 = StrUtil.utf8Str(rsa.decrypt(encrypt2, KeyType.PublicKey));
|
||||
final String encrypt2 = rsa.encryptBase64(text.toString(), KeyType.PrivateKey);
|
||||
final String decrypt2 = StrUtil.utf8Str(rsa.decrypt(encrypt2, KeyType.PublicKey));
|
||||
Assert.assertEquals(text.toString(), decrypt2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void rsaDecodeTest() {
|
||||
String PRIVATE_KEY = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAIL7pbQ+5KKGYRhw7jE31hmA" //
|
||||
final String PRIVATE_KEY = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAIL7pbQ+5KKGYRhw7jE31hmA" //
|
||||
+ "f8Q60ybd+xZuRmuO5kOFBRqXGxKTQ9TfQI+aMW+0lw/kibKzaD/EKV91107xE384qOy6IcuBfaR5lv39OcoqNZ"//
|
||||
+ "5l+Dah5ABGnVkBP9fKOFhPgghBknTRo0/rZFGI6Q1UHXb+4atP++LNFlDymJcPAgMBAAECgYBammGb1alndta" //
|
||||
+ "xBmTtLLdveoBmp14p04D8mhkiC33iFKBcLUvvxGg2Vpuc+cbagyu/NZG+R/WDrlgEDUp6861M5BeFN0L9O4hz"//
|
||||
@ -188,52 +188,52 @@ public class RSATest {
|
||||
+ "wfMhrJksfeKbIaMjNLS9b8JynIaXg9iCiyOHmgkMl5gAbPoH/ULXqSKwzBw5mJ2GW1gBlyaSfV3AkA/RJC+adIjsRGg"//
|
||||
+ "JOkiRjSmPpGv3FOhl9fsBPjupZBEIuoMWOC8GXK/73DHxwmfNmN7C9+sIi4RBcjEeQ5F5FHZ";
|
||||
|
||||
RSA rsa = new RSA(PRIVATE_KEY, null);
|
||||
final RSA rsa = new RSA(PRIVATE_KEY, null);
|
||||
|
||||
String a = "2707F9FD4288CEF302C972058712F24A5F3EC62C5A14AD2FC59DAB93503AA0FA17113A020EE4EA35EB53F" //
|
||||
final String a = "2707F9FD4288CEF302C972058712F24A5F3EC62C5A14AD2FC59DAB93503AA0FA17113A020EE4EA35EB53F" //
|
||||
+ "75F36564BA1DABAA20F3B90FD39315C30E68FE8A1803B36C29029B23EB612C06ACF3A34BE815074F5EB5AA3A"//
|
||||
+ "C0C8832EC42DA725B4E1C38EF4EA1B85904F8B10B2D62EA782B813229F9090E6F7394E42E6F44494BB8";
|
||||
|
||||
byte[] aByte = HexUtil.decodeHex(a);
|
||||
byte[] decrypt = rsa.decrypt(aByte, KeyType.PrivateKey);
|
||||
final byte[] aByte = HexUtil.decodeHex(a);
|
||||
final byte[] decrypt = rsa.decrypt(aByte, KeyType.PrivateKey);
|
||||
|
||||
Assert.assertEquals("虎头闯杭州,多抬头看天,切勿只管种地", StrUtil.str(decrypt, CharsetUtil.CHARSET_UTF_8));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void rsaTest2() throws Exception {
|
||||
String publicKeyStr = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDgtQn2JZ34ZC28NWYpAUd98iZ37BUrX/aKzmFbt7clFSs6s" +
|
||||
final String publicKeyStr = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDgtQn2JZ34ZC28NWYpAUd98iZ37BUrX/aKzmFbt7clFSs6s" +
|
||||
"XqHauqKWqdtLkF2KexO40H1YTX8z2lSgBBOAxLsvaklV8k4cBFK9snQXE9/DDaFt6Rr7iVZMldczhC0JNgTz+SHXT6CBHuX3e9S" +
|
||||
"dB1Ua44oncaTWz7OBGLbCiK45wIDAQAB";
|
||||
|
||||
byte[] keyBytes = Base64.decode(publicKeyStr);
|
||||
PublicKey publicKey = KeyUtil.generateRSAPublicKey(keyBytes);
|
||||
final byte[] keyBytes = Base64.decode(publicKeyStr);
|
||||
final PublicKey publicKey = KeyUtil.generateRSAPublicKey(keyBytes);
|
||||
|
||||
byte[] data = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", 16).getBytes();
|
||||
final byte[] data = RandomUtil.randomString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", 16).getBytes();
|
||||
//长度不满足128补0
|
||||
byte[] finalData = ArrayUtil.resize(data, 128);
|
||||
final byte[] finalData = ArrayUtil.resize(data, 128);
|
||||
|
||||
//jdk原生加密
|
||||
Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");
|
||||
final Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");
|
||||
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
|
||||
String result1 = HexUtil.encodeHexStr(cipher.doFinal(finalData));
|
||||
final String result1 = HexUtil.encodeHexStr(cipher.doFinal(finalData));
|
||||
|
||||
//hutool加密
|
||||
RSA rsa = new RSA("RSA/ECB/NoPadding", null, publicKeyStr);
|
||||
final RSA rsa = new RSA("RSA/ECB/NoPadding", null, publicKeyStr);
|
||||
rsa.setEncryptBlockSize(128);
|
||||
String result2 = rsa.encryptHex(finalData, KeyType.PublicKey);
|
||||
final String result2 = rsa.encryptHex(finalData, KeyType.PublicKey);
|
||||
|
||||
Assert.assertEquals(result1, result2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void exponentTest(){
|
||||
String modulus = "BD99BAAB9E56B7FD85FB8BCF53CAD2913C1ACEF9063E7C913CD6FC4FEE040DA44D8" +
|
||||
final String modulus = "BD99BAAB9E56B7FD85FB8BCF53CAD2913C1ACEF9063E7C913CD6FC4FEE040DA44D8" +
|
||||
"ADAA35A9DCABD6E936C402D47278049638407135BAB22BB091396CB6873195C8AC8B0B7AB123" +
|
||||
"C3BF7A6341A4419BDBC0EFB85DBCD9A3AD12C99E2265BDCC1197913749E2AFA568EB7623DA3A" +
|
||||
"361335AA1F9FFA6E1801DDC8228AA86306B87";
|
||||
String publicExponent = "65537";
|
||||
RSA rsa = new RSA(new BigInteger(modulus, 16), null, new BigInteger(publicExponent));
|
||||
final String publicExponent = "65537";
|
||||
final RSA rsa = new RSA(new BigInteger(modulus, 16), null, new BigInteger(publicExponent));
|
||||
|
||||
final String encryptBase64 = rsa.encryptBase64("测试内容", KeyType.PublicKey);
|
||||
Assert.assertNotNull(encryptBase64);
|
||||
|
Loading…
x
Reference in New Issue
Block a user