我正在创建一个算法,它必须使用JCE和AES加密和解密密码.我将把加密文本保存到数据库中,但是我面临两个问题.第一个问题是,加密文本返回的是奇怪的符号,而不是字母,如"cù"▼=¡£¡?Å♠?¡Ç²?",但它返回正确的普通文本.第二个问题是,算法每次都会返回不同的加密文本,如果我要将加密文本保存到数据库并稍后解密,它还会工作吗?或者我必须将值存储为字节[]或字符串.
public static void main(String[] args) throws Exception {
byte[] text1 = "welcome back".getBytes();
byte[] text2 = "hello guys".getBytes();
KeyGenerator gen = KeyGenerator.getInstance("AES");
SecretKey key = gen.generateKey();
Cipher x = Cipher.getInstance("AES");
x.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedText1 = x.doFinal(text1);
byte[] encryptedText2 = x.doFinal(text2);
x.init(Cipher.DECRYPT_MODE,key);
byte[] decryptedText2 = x.doFinal(encryptedText2);
byte[] decryptedText1 = x.doFinal(encryptedText1);
System.out.println(new String(encryptedText1));
System.out.println(new String(encryptedText2));
System.out.println(new String(decryptedText1));
System.out.println(new String(decryptedText2));
}
结果如下:
c~ù▼=¡£¡?Å♠?¡Ç²?
àÉ?<-??Yò*?b?]?
welcome back
hello guys
我能做些什么来解决这些问题吗?非常感谢你.