Java简单的helloworld AES加密解密
Java simple helloworld AES encryption decryption
我从另一个 SO 问题中得到了一个代码片段并对其进行了一些修改,但我似乎无法让它工作。谁能弄清楚为什么?它目前正在打印 [B@405e70bc 或类似的值。我想做的就是以加密形式存储密码,唯一目的是防止好奇的眼睛看到它,有没有更好的方法来做到这一点?
String secret = "1234567812345678";
Key key = new SecretKeySpec(secret.getBytes(), "AES");
// Encrypt
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedData = cipher.doFinal("helloworld".getBytes());
// Decrypt
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decryptedData = cipher.doFinal(encryptedData);
System.out.println(decryptedData.toString());
谢谢亚历山大。
这有效
String secret = "1234567812345678";
Key key = new SecretKeySpec(secret.getBytes(), "AES");
// Encrypt
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedData = cipher.doFinal("helloworld".getBytes());
// Decrypt
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decryptedData = cipher.doFinal(encryptedData);
System.out.println(new String(decryptedData, "UTF-8"));
你的加密/解密逻辑没有问题。问题在于您在 byte []
上调用 .toString()
。
改为使用此输出语句:
System.out.println(new String(decryptedData));
请不要将此用于任何重要的事情。标准 Java AES 代码使用固定长度的块密码,可以产生相同的加密字节数据。结果是明文信息逐渐泄露。
如果您希望您的代码更健壮,您应该研究密码块链接和初始化向量。 http://www.javamex.com/tutorials/cryptography/block_modes.shtml
这对您的需求来说可能有点过分了,但我只是想提一下。
我从另一个 SO 问题中得到了一个代码片段并对其进行了一些修改,但我似乎无法让它工作。谁能弄清楚为什么?它目前正在打印 [B@405e70bc 或类似的值。我想做的就是以加密形式存储密码,唯一目的是防止好奇的眼睛看到它,有没有更好的方法来做到这一点?
String secret = "1234567812345678";
Key key = new SecretKeySpec(secret.getBytes(), "AES");
// Encrypt
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedData = cipher.doFinal("helloworld".getBytes());
// Decrypt
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decryptedData = cipher.doFinal(encryptedData);
System.out.println(decryptedData.toString());
谢谢亚历山大。
这有效
String secret = "1234567812345678";
Key key = new SecretKeySpec(secret.getBytes(), "AES");
// Encrypt
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedData = cipher.doFinal("helloworld".getBytes());
// Decrypt
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decryptedData = cipher.doFinal(encryptedData);
System.out.println(new String(decryptedData, "UTF-8"));
你的加密/解密逻辑没有问题。问题在于您在 byte []
上调用 .toString()
。
改为使用此输出语句:
System.out.println(new String(decryptedData));
请不要将此用于任何重要的事情。标准 Java AES 代码使用固定长度的块密码,可以产生相同的加密字节数据。结果是明文信息逐渐泄露。
如果您希望您的代码更健壮,您应该研究密码块链接和初始化向量。 http://www.javamex.com/tutorials/cryptography/block_modes.shtml
这对您的需求来说可能有点过分了,但我只是想提一下。