java - 用Java加密字符串

标签 java encryption aes

我正在尝试使用 Java 和 AES Cipher.getInstance("AES/CBC/PKCS5PADDING") 加密和解密字符串。

当我加密数据并尝试将其打印到控制台时,我收到如下字符:

�0� �J�9U\�6N� ��.������͋«D�<(���H(�G�jַ��%���u��^� � �' �bT/�05���0+u )b�ς�{G�d��/�:��~��ٵ�J%���~_ ����_��� �~�W�s�+ ]9�{Y�N ����J {����钇���

这是正确的吗?可以说“它是加密的”吗?我的期望是得到像“WERWEWERWER”这样的文字字符串

最佳答案

那是因为加密的消息以字节为单位(0-255)。要获得您想要的字符串,您需要使用 Base 64 对输出进行编码。

基于此answer您可以在 Java 8 中做到这一点,而无需使用任何库。

import java.util.Base64;

//base64 encoding
byte[] encodedBytes = Base64.getEncoder().encode("Test".getBytes("UTF-8"));
System.out.println("encodedBytes " + new String(encodedBytes));
//base64 decoding
byte[] decodedBytes = Base64.getDecoder().decode(encodedBytes);
System.out.println("decodedBytes " + new String(decodedBytes));

"Test".getBytes("UTF-8") 替换为 AES 的输出

关于java - 用Java加密字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48118208/

相关文章:

java - 如何在 Java 中将 String 转换为 Boolean,但将 null 与 false 区别对待?

java - Canvas 如何确定其裁剪范围?

java - 当 med 从 (ini + end)/2 更改为 ini + (end-ini)/4 时,合并排序算法会发生什么变化?

java - 这是 Java 中最好/安全的加密方法吗?

java - Windows : ClassNotFoundException: org. h2.Driver 上的 Squirrel SQL & H2 插件

java - 如何在 Python pycrypto 中指定 RSA 填充

security - 最有效的公钥加密方法

c++ - 如何通过命令行参数分隔botan加密和解密操作?

python - Ruby 与 Python 中的 AES 加密差异

java - 确定已发生解密