产品经理:小凌,这里有个简单的需求,将用户的敏感信息加密保存起来,需要尽快实现。
程序猿:好,没有问题,半个小时就搞定。
说完以后,小凌就动手起来了,打开百度搜索“Java加密算法”,复制了如下代码:
//加密
public static byte[] encrypt(String content, String password) {
try {
//构造密钥生成器,指定为AES算法
KeyGenerator kgen = KeyGenerator.getInstance("AES");
//初始化密钥生成器,指定随机源
kgen.init(128, new SecureRandom(password.getBytes()));
//产生原始对称密钥
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
//根据字节数组生成AES密钥
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
//根据指定算法AES自成密码器
Cipher cipher = Cipher.getInstance("AES");
byte[] byteContent = content.getBytes("utf-8");
//初始化密码器
cipher.init(Cipher.ENCRYPT_MODE, key);
//加密
byte[] result = cipher.doFinal(byteContent);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
加密写好了,哦不,是复制好了,既然有加密,那必须有解密,总不能将加密的信息直接显示出来,解密如下:
//解密
public static byte[] decrypt(byte[] content, String password) {
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128, new SecureRandom(password.getBytes()));
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher = Cipher.getInstance("