1. MD5加密:
public static void main(String[] args) throws Exception {
MessageDigest md5 = MessageDigest.getInstance("MD5");
BASE64Encoder base64en = new BASE64Encoder();
String encode = base64en.encode(md5.digest("12345".getBytes("utf-8")));
System.out.println(encode);
}
以上采用MD5加密,base64编码输出。其中12345为加密内容。不能解密,一般比对方式,先加密传递数据,在与数据库中加密字段比较。(比较常用)
public static void main(String[] args){
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
String s = new BigInteger(1, md5.digest("abcd123".getBytes("utf-8"))).toString(16);
System.out.println(s);
} catch (Exception e) {
e.printStackTrace();
}
}
以上为普通的MD5加密,第一个参数 1 是正数。abcd123是要加密的内容,toString(16)中的16是16进制输出
2. AES加密/解密: (可以在博客下载完整的工具类AESUtils.java)
加密// AES
private static String AES = UserConstants.AES;
//data是需要加密的内容,key是密钥 通过s.getBytes()获得
public static String encrypt(byte[] data, byte[] key) {
try {
//实例化一个用AES加密算法的密钥生成器
KeyGenerator kgen = KeyGenerator.getInstance(AES); //AES是字符串
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
random.setSeed(key);
kgen.init(128, random);
SecretKey secretKey = kgen.generateKey(); //生成加密密钥
//对数据加密
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] result = cipher.doFinal(data);
//对加密后的内容做base64编码
String base64Result = Base64.getEncoder().encodeToString(result);
return base64Result;
} catch (NoSuchAlgorithmException e) {
throw new IllegalArgumentException(e);
} catch (InvalidKeyException e) {
throw new IllegalArgumentException(e);
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
//解密。decryptStr是已经加密的内容,key是密钥
public static String decrypt(String decryptStr, byte[] key) {
byte[] content;
try {
content = Base64.getDecoder().decode(decryptStr.getBytes());
KeyGenerator kgen = KeyGenerator.getInstance(AES);
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
random.setSeed(key);
kgen.init(128, random);
SecretKey secretKey = kgen.generateKey();//获得加密密钥
//解密数据
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] doFinal = cipher.doFinal(content);
return new String(doFinal);
} catch (NoSuchAlgorithmException e) {
throw new IllegalArgumentException(e);
} catch (InvalidKeyException e) {
throw new IllegalArgumentException(e);
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
参照:https://blog.csdn.net/elim168/article/details/73456866