gpt4 book ai didi

java - AES加密算法输出字符串长度(String)错误?

转载 作者:太空宇宙 更新时间:2023-11-04 13:58:33 24 4
gpt4 key购买 nike

 public static String encryptKey(String key,String text) throws CryptoException 
{
String key1=null;
try {

System.out.println("input parameters length "+key.length()+ " " +text.length());
System.out.println("input parameters value "+key+ " " +text);
Key secretKey = new SecretKeySpec(key.getBytes(), ALGORITHM);
Cipher cipher = Cipher.getInstance(TRANSFORMATION);

cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] inputBytes=text.getBytes();
//System.out.println(inputBytes.length);
byte[] outputBytes = cipher.doFinal(inputBytes);
// key= WriteArray.bytesToString(outputBytes);
key1=outputBytes.toString();


System.out.println("output parameters "+key1.length()+" "+ text.length());
System.out.println("output parameters value "+key1+ " " +text);
}

输入和输出字符串长度不同。为什么会出现这种情况?

是字符串到字节数组转换的问题吗?输出如下所示。

--------------------------------------
Level 1 Encryption Started
input parameters length 16 16
input parameters value 5iafq1b7d8i4hedu vg322qcfmnjbp3nj
output parameters 11 16
output parameters value [B@35851384 vg322qcfmnjbp3nj
--------------------------------------
Level 2 Encryption Started
input parameters length 16 11
input parameters value tvqfpjpul28ovo5c [B@35851384
output parameters 11 11
output parameters value [B@649d209a [B@35851384
--------------------------------------

最佳答案

永远不要将加密数据视为字符串。它是二进制数据,当您调用 outputBytes.toString() 时,几乎可以肯定会发生一些不好的事情。

如果必须将二进制数据视为字符串,则应应用可以处理二进制数据并可靠地生成可用字符串的转换。一个例子是 base64 编码。

在您的问题中,您似乎期望未加密的文本与转换为字符串的加密字节的长度相同。没有理由说这是真的。

您应该期望,如果您加密然后解密加密的字节,您将得到原始消息。但是,加密数据的大小几乎肯定不会相同。

关于java - AES加密算法输出字符串长度(String)错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29564059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com