我正在尝试使用 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/