您可以使用javax.crypto包来加密/解密密码。
首先,您必须定义加密密钥和加密初始向量。例如:
String secret = "Foo12345Bar12345";
String initVector = "randomInitVector";
然后你可以编写方法来加密/解密密码。
public static String encrypt(String value, String secret, String initVector) {
try {
IvParameterSpec iv = new IvParameterSpec(initVector.getBytes());
SecretKeySpec keySpec = new SecretKeySpec(secret.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv);
byte[] encrypted = cipher.doFinal(value.getBytes());
return Base64.encodeBase64String(encrypted);
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
}
public static String decrypt(String value, String secret, String initVector) {
try {
IvParameterSpec iv = new IvParameterSpec(initVector.getBytes());
SecretKeySpec keySpec = new SecretKeySpec(secret.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
cipher.init(Cipher.DECRYPT_MODE, keySpec, iv);
byte[] decrypted = cipher.doFinal(Base64.decodeBase64(str));
return new String(decrypted);
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
}
要运行此代码,您需要将 apache 依赖项添加到您的项目中
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
此外,Java 8 已经有了对 Base64 进行解码/编码的工具:
java.util.Base64.getDecoder() 和 java.util.Base64.getEncoder() 所以你可以用 Java 8 impl 替换 Apache