This commit is contained in:
Looly
2023-03-23 23:50:59 +08:00
parent e81a63c6ad
commit c8309ef5fb
57 changed files with 764 additions and 505 deletions

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.codec.binary.Base64;
import cn.hutool.core.codec.HexUtil;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.text.StrUtil;
import cn.hutool.core.util.ByteUtil;
import cn.hutool.crypto.asymmetric.AsymmetricAlgorithm;
import cn.hutool.crypto.asymmetric.RSA;
import cn.hutool.crypto.digest.DigestAlgorithm;
@@ -298,7 +299,7 @@ public class SecureUtil {
* @since 3.3.0
*/
public static HMac hmac(final HmacAlgorithm algorithm, final String key) {
return new HMac(algorithm, StrUtil.utf8Bytes(key));
return new HMac(algorithm, ByteUtil.toUtf8Bytes(key));
}
/**
@@ -336,7 +337,7 @@ public class SecureUtil {
* @since 3.3.0
*/
public static HMac hmacMd5(final String key) {
return hmacMd5(StrUtil.utf8Bytes(key));
return hmacMd5(ByteUtil.toUtf8Bytes(key));
}
/**
@@ -375,7 +376,7 @@ public class SecureUtil {
* @since 3.3.0
*/
public static HMac hmacSha1(final String key) {
return hmacSha1(StrUtil.utf8Bytes(key));
return hmacSha1(ByteUtil.toUtf8Bytes(key));
}
/**
@@ -414,7 +415,7 @@ public class SecureUtil {
* @since 5.6.0
*/
public static HMac hmacSha256(final String key) {
return hmacSha256(StrUtil.utf8Bytes(key));
return hmacSha256(ByteUtil.toUtf8Bytes(key));
}
/**

View File

@@ -1,10 +1,10 @@
package cn.hutool.crypto.asymmetric;
import cn.hutool.core.codec.binary.Base64;
import cn.hutool.core.codec.HexUtil;
import cn.hutool.core.codec.binary.Base64;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.text.StrUtil;
import cn.hutool.core.util.ByteUtil;
import java.io.InputStream;
import java.nio.charset.Charset;
@@ -63,7 +63,7 @@ public interface AsymmetricEncryptor {
* @return 加密后的bytes
*/
default byte[] encrypt(final String data, final Charset charset, final KeyType keyType) {
return encrypt(StrUtil.bytes(data, charset), keyType);
return encrypt(ByteUtil.toBytes(data, charset), keyType);
}
/**
@@ -74,7 +74,7 @@ public interface AsymmetricEncryptor {
* @return 加密后的bytes
*/
default byte[] encrypt(final String data, final KeyType keyType) {
return encrypt(StrUtil.utf8Bytes(data), keyType);
return encrypt(ByteUtil.toUtf8Bytes(data), keyType);
}
/**

View File

@@ -1,11 +1,11 @@
package cn.hutool.crypto.asymmetric;
import cn.hutool.core.codec.HexUtil;
import cn.hutool.core.codec.binary.Base64;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ByteUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.codec.HexUtil;
import cn.hutool.core.text.StrUtil;
import cn.hutool.crypto.CryptoException;
import cn.hutool.crypto.KeyUtil;
import cn.hutool.crypto.SecureUtil;
@@ -14,11 +14,7 @@ import cn.hutool.crypto.SignUtil;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.security.InvalidAlgorithmParameterException;
import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.*;
import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
import java.security.spec.AlgorithmParameterSpec;
@@ -198,7 +194,7 @@ public class Sign extends BaseAsymmetric<Sign> {
* @since 5.7.0
*/
public byte[] sign(final String data, final Charset charset) {
return sign(StrUtil.bytes(data, charset));
return sign(ByteUtil.toBytes(data, charset));
}
/**

View File

@@ -1,12 +1,12 @@
package cn.hutool.crypto.digest;
import cn.hutool.core.io.file.FileUtil;
import cn.hutool.core.codec.HexUtil;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.io.file.FileUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ByteUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.codec.HexUtil;
import cn.hutool.core.text.StrUtil;
import cn.hutool.crypto.CryptoException;
import cn.hutool.crypto.SecureUtil;
@@ -169,7 +169,7 @@ public class Digester implements Serializable {
* @since 4.6.0
*/
public byte[] digest(final String data, final Charset charset) {
return digest(StrUtil.bytes(data, charset));
return digest(ByteUtil.toBytes(data, charset));
}
/**

View File

@@ -1,11 +1,11 @@
package cn.hutool.crypto.digest.mac;
import cn.hutool.core.codec.binary.Base64;
import cn.hutool.core.io.file.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.codec.HexUtil;
import cn.hutool.core.text.StrUtil;
import cn.hutool.core.codec.binary.Base64;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.io.file.FileUtil;
import cn.hutool.core.util.ByteUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.crypto.CryptoException;
import java.io.ByteArrayInputStream;
@@ -59,7 +59,7 @@ public class Mac implements Serializable {
* @return 摘要
*/
public byte[] digest(final String data, final Charset charset) {
return digest(StrUtil.bytes(data, charset));
return digest(ByteUtil.toBytes(data, charset));
}
/**

View File

@@ -1,9 +1,10 @@
package cn.hutool.crypto.symmetric;
import cn.hutool.core.codec.binary.Base64;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.codec.HexUtil;
import cn.hutool.core.codec.binary.Base64;
import cn.hutool.core.text.StrUtil;
import cn.hutool.core.util.ByteUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.crypto.CryptoException;
import cn.hutool.crypto.SecureUtil;
@@ -51,7 +52,7 @@ public class RC4 implements Serializable {
* @throws CryptoException key长度小于5或者大于255抛出此异常
*/
public byte[] encrypt(final String message, final Charset charset) throws CryptoException {
return crypt(StrUtil.bytes(message, charset));
return crypt(ByteUtil.toBytes(message, charset));
}
/**
@@ -224,7 +225,7 @@ public class RC4 implements Serializable {
final WriteLock writeLock = this.lock.writeLock();
writeLock.lock();
try {
this.sbox = initSBox(StrUtil.utf8Bytes(key));
this.sbox = initSBox(ByteUtil.toUtf8Bytes(key));
} finally {
writeLock.unlock();
}

View File

@@ -1,11 +1,11 @@
package cn.hutool.crypto.symmetric;
import cn.hutool.core.codec.HexUtil;
import cn.hutool.core.codec.binary.Base64;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ByteUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.codec.HexUtil;
import cn.hutool.core.text.StrUtil;
import java.io.InputStream;
import java.io.OutputStream;
@@ -70,7 +70,7 @@ public interface SymmetricEncryptor {
* @return 加密后的bytes
*/
default byte[] encrypt(final String data, final Charset charset) {
return encrypt(StrUtil.bytes(data, charset));
return encrypt(ByteUtil.toBytes(data, charset));
}
/**
@@ -103,7 +103,7 @@ public interface SymmetricEncryptor {
* @return 加密后的bytes
*/
default byte[] encrypt(final String data) {
return encrypt(StrUtil.bytes(data, CharsetUtil.UTF_8));
return encrypt(ByteUtil.toBytes(data, CharsetUtil.UTF_8));
}
/**

View File

@@ -1,7 +1,7 @@
package cn.hutool.crypto;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.text.StrUtil;
import cn.hutool.core.util.ByteUtil;
import cn.hutool.crypto.asymmetric.SM2;
import org.junit.Assert;
import org.junit.Test;
@@ -47,8 +47,8 @@ public class OpensslKeyUtilTest {
genSm2.usePlainEncoding();
final String content = "我是Hanley.";
final byte[] sign = genSm2.sign(StrUtil.utf8Bytes(content));
final boolean verify = genSm2.verify(StrUtil.utf8Bytes(content), sign);
final byte[] sign = genSm2.sign(ByteUtil.toUtf8Bytes(content));
final boolean verify = genSm2.verify(ByteUtil.toUtf8Bytes(content), sign);
Assert.assertTrue(verify);
}
}

View File

@@ -2,7 +2,7 @@ package cn.hutool.crypto;
import cn.hutool.core.io.file.FileUtil;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.text.StrUtil;
import cn.hutool.core.util.ByteUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import cn.hutool.crypto.asymmetric.SM2;
@@ -86,8 +86,8 @@ public class PemUtilTest {
sm2.usePlainEncoding();
final String content = "我是Hanley.";
final byte[] sign = sm2.sign(StrUtil.utf8Bytes(content));
final boolean verify = sm2.verify(StrUtil.utf8Bytes(content), sign);
final byte[] sign = sm2.sign(ByteUtil.toUtf8Bytes(content));
final boolean verify = sm2.verify(ByteUtil.toUtf8Bytes(content), sign);
Assert.assertTrue(verify);
}
}

View File

@@ -1,11 +1,12 @@
package cn.hutool.crypto.asymmetric;
import cn.hutool.core.codec.binary.Base64;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.codec.HexUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.codec.binary.Base64;
import cn.hutool.core.text.StrUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ByteUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.KeyUtil;
import cn.hutool.crypto.SecureUtil;
import org.junit.Assert;
@@ -39,12 +40,12 @@ public class RSATest {
final RSA rsa = SecureUtil.rsa(privateKey, publicKey);
// 公钥加密,私钥解密
final byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PublicKey);
final byte[] encrypt = rsa.encrypt(ByteUtil.toBytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PublicKey);
final byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt, CharsetUtil.UTF_8));
// 私钥加密,公钥解密
final byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PrivateKey);
final byte[] encrypt2 = rsa.encrypt(ByteUtil.toBytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PrivateKey);
final byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt2, CharsetUtil.UTF_8));
}
@@ -60,13 +61,13 @@ public class RSATest {
Assert.assertNotNull(rsa.getPrivateKeyBase64());
// 公钥加密,私钥解密
final byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PublicKey);
final byte[] encrypt = rsa.encrypt(ByteUtil.toBytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PublicKey);
final byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt, CharsetUtil.UTF_8));
// 私钥加密,公钥解密
final byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PrivateKey);
final byte[] encrypt2 = rsa.encrypt(ByteUtil.toBytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PrivateKey);
final byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt2, CharsetUtil.UTF_8));
}
@@ -82,13 +83,13 @@ public class RSATest {
Assert.assertNotNull(rsa.getPrivateKeyBase64());
// 公钥加密,私钥解密
final byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PublicKey);
final byte[] encrypt = rsa.encrypt(ByteUtil.toBytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PublicKey);
final byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt, CharsetUtil.UTF_8));
// 私钥加密,公钥解密
final byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PrivateKey);
final byte[] encrypt2 = rsa.encrypt(ByteUtil.toBytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PrivateKey);
final byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt2, CharsetUtil.UTF_8));
}
@@ -104,13 +105,13 @@ public class RSATest {
Assert.assertNotNull(rsa.getPrivateKeyBase64());
// 公钥加密,私钥解密
final byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PublicKey);
final byte[] encrypt = rsa.encrypt(ByteUtil.toBytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PublicKey);
final byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt, CharsetUtil.UTF_8));
// 私钥加密,公钥解密
final byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PrivateKey);
final byte[] encrypt2 = rsa.encrypt(ByteUtil.toBytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PrivateKey);
final byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt2, CharsetUtil.UTF_8));
}
@@ -127,12 +128,12 @@ public class RSATest {
Assert.assertNotNull(rsa.getPrivateKeyBase64());
// 公钥加密,私钥解密
final byte[] encrypt = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PublicKey);
final byte[] encrypt = rsa.encrypt(ByteUtil.toBytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PublicKey);
final byte[] decrypt = rsa.decrypt(encrypt, KeyType.PrivateKey);
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt, CharsetUtil.UTF_8));
// 私钥加密,公钥解密
final byte[] encrypt2 = rsa.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PrivateKey);
final byte[] encrypt2 = rsa.encrypt(ByteUtil.toBytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PrivateKey);
final byte[] decrypt2 = rsa.decrypt(encrypt2, KeyType.PublicKey);
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt2, CharsetUtil.UTF_8));
}

View File

@@ -1,9 +1,10 @@
package cn.hutool.crypto.asymmetric;
import cn.hutool.core.codec.binary.Base64;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.codec.HexUtil;
import cn.hutool.core.codec.binary.Base64;
import cn.hutool.core.text.StrUtil;
import cn.hutool.core.util.ByteUtil;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.crypto.ECKeyUtil;
import cn.hutool.crypto.KeyUtil;
import cn.hutool.crypto.SecureUtil;
@@ -54,7 +55,7 @@ public class SM2Test {
sm2.setMode(SM2Engine.Mode.C1C2C3);
// 公钥加密,私钥解密
final byte[] encrypt = sm2.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PublicKey);
final byte[] encrypt = sm2.encrypt(ByteUtil.toBytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PublicKey);
final byte[] decrypt = sm2.decrypt(encrypt, KeyType.PrivateKey);
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt, CharsetUtil.UTF_8));
}
@@ -70,7 +71,7 @@ public class SM2Test {
Assert.assertNotNull(sm2.getPrivateKeyBase64());
// 公钥加密,私钥解密
final byte[] encrypt = sm2.encrypt(StrUtil.bytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PublicKey);
final byte[] encrypt = sm2.encrypt(ByteUtil.toBytes("我是一段测试aaaa", CharsetUtil.UTF_8), KeyType.PublicKey);
final byte[] decrypt = sm2.decrypt(encrypt, KeyType.PrivateKey);
Assert.assertEquals("我是一段测试aaaa", StrUtil.str(decrypt, CharsetUtil.UTF_8));
}
@@ -137,8 +138,8 @@ public class SM2Test {
final SM2 sm2 = SmUtil.sm2();
final byte[] sign = sm2.sign(StrUtil.utf8Bytes(content));
final boolean verify = sm2.verify(StrUtil.utf8Bytes(content), sign);
final byte[] sign = sm2.sign(ByteUtil.toUtf8Bytes(content));
final boolean verify = sm2.verify(ByteUtil.toUtf8Bytes(content), sign);
Assert.assertTrue(verify);
}

View File

@@ -1,7 +1,7 @@
package cn.hutool.crypto.asymmetric;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.text.StrUtil;
import cn.hutool.core.util.ByteUtil;
import cn.hutool.crypto.SignUtil;
import org.junit.Assert;
import org.junit.Test;
@@ -61,7 +61,7 @@ public class SignTest {
* @param signAlgorithm 算法
*/
private void signAndVerify(final SignAlgorithm signAlgorithm) {
final byte[] data = StrUtil.utf8Bytes("我是一段测试ab");
final byte[] data = ByteUtil.toUtf8Bytes("我是一段测试ab");
final Sign sign = SignUtil.sign(signAlgorithm);
// 签名
@@ -78,7 +78,7 @@ public class SignTest {
@Test
public void signAndVerifyTest2() {
final String str = "wx2421b1c4370ec43b 支付测试 JSAPI支付测试 10000100 1add1a30ac87aa2db72f57a2375d8fec http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php oUpF8uMuAJO_M2pxb1Q9zNjWeS6o 1415659990 14.23.150.211 1 JSAPI 0CB01533B8C1EF103065174F50BCA001";
final byte[] data = StrUtil.utf8Bytes(str);
final byte[] data = ByteUtil.toUtf8Bytes(str);
final Sign sign = SignUtil.sign(SignAlgorithm.MD5withRSA);
// 签名
@@ -109,7 +109,7 @@ public class SignTest {
@Test
public void signAndVerifyPSSTest() {
final String str = "wx2421b1c4370ec43b 支付测试 JSAPI支付测试 10000100 1add1a30ac87aa2db72f57a2375d8fec http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php oUpF8uMuAJO_M2pxb1Q9zNjWeS6o 1415659990 14.23.150.211 1 JSAPI 0CB01533B8C1EF103065174F50BCA001";
final byte[] data = StrUtil.utf8Bytes(str);
final byte[] data = ByteUtil.toUtf8Bytes(str);
final Sign sign = SignUtil.sign(SignAlgorithm.SHA256withRSA_PSS);
// 签名

View File

@@ -1,6 +1,7 @@
package cn.hutool.crypto.symmetric;
import cn.hutool.core.text.StrUtil;
import cn.hutool.core.util.ByteUtil;
import cn.hutool.crypto.KeyUtil;
import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
@@ -83,8 +84,8 @@ public class DesTest {
final DES des = new DES(
Mode.CTS,
Padding.PKCS5Padding,
StrUtil.bytes("12345678"),
StrUtil.bytes("11223344")
ByteUtil.toUtf8Bytes("12345678"),
ByteUtil.toUtf8Bytes("11223344")
);
final String encryptHex = des.encryptHex(content);