importorg.apache.commons.lang3.ArrayUtils;importorg.apache.tomcat.util.codec.binary.Base64;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjavax.crypto.BadPaddingException;importjavax.crypto.Cipher;importjavax.crypto.IllegalBlockSizeException;importjavax.crypto.NoSuchPaddingException;importjavax.crypto.spec.SecretKeySpec;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.UnsupportedEncodingException;importjava.security.InvalidKeyException;importjava.security.KeyFactory;importjava.security.KeyPair;importjava.security.KeyPairGenerator;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;importjava.security.PrivateKey;importjava.security.PublicKey;importjava.security.Signature;importjava.security.SignatureException;importjava.security.spec.InvalidKeySpecException;importjava.security.spec.PKCS8EncodedKeySpec;importjava.security.spec.X509EncodedKeySpec;importjava.util.HashMap;importjava.util.Map;/*** AES对称加密
* RSA非对称加密
* Hex加密
* 私钥签名,公钥验证*/
public classCryptTest {private static final String UTF8 = "UTF-8";public static void main(String[] args) throwsException {
String data= "hello";/*** AES对称加密*/String key= "$i%2i9343kl3#df5"; //AES 16位的密钥
String aesEncoded =AesUtils.AESEncrypt(key, data);
String aesDecoded=AesUtils.AESDecrypt(key, aesEncoded);
System.out.println("\naesEncoded: " + aesEncoded + "\naesDecoded: " +aesDecoded);/*** RSA非对称加密*/Map keys = RSAUtils.generateKey("appKey");
String publicKey= keys.get("publicKey");
String privateKey= keys.get("privateKey");
String rsaEncoded=RSAUtils.publicEncrypt(publicKey, data);
String rsaDecoded=RSAUtils.privateDecrypt(privateKey, rsaEncoded);
System.out.println("\nrsaEncoded: " + rsaEncoded + "\nrsaDecoded: " +rsaDecoded);
String rsaEncodedBySegment=RSAUtils.publicEncryptBySegment(publicKey, data);
String rsaDecodedBySegment=RSAUtils.privateDecryptBySegment(privateKey, rsaEncodedBySegment);
System.out.println("\nrsaEncodedBySegment: " + rsaEncodedBySegment + "\nrsaDecodedBySegment: " +rsaDecodedBySegment);/*** Hex加密*/String hexEncoded=HexUtils.byte2hex(data.getBytes(UTF8));
String hexDecoded= newString(HexUtils.hex2byte(hexEncoded), UTF8);
System.out.println("\nhexEncoded: " + hexEncoded + "\nhexDecoded: " +hexDecoded);/*** 数字签名*/String si