我正在用Java编写密码,但不能做以下事情:
我想编辑一个char数组的值以对其进行加密
我应该怎么做?
我不知道改变每个字符的ASCII值可能是答案。这就是为什么我问你们!
最佳答案
您可以将int
添加到char
,但是结果是int
-必须将其强制转换为char
才能将其放回数组中,除非使用复合赋值运算符:
array[x] += someInt;
要么
array[x] = (char) (array[x] + someInt);
但是,通常这不是执行加密的适当方法。您通常会遇到无法打印的字符,或者甚至在Unicode中甚至没有特定含义的字符。取而代之的是,大多数加密算法都设计为可处理任意二进制数据-即字节数组。
通常,您会先将字符串转换为字节数组(例如,使用
String.getBytes(charset)
-一定要指定编码)。然后对字节数组执行加密,从而为您提供一个新的字节数组。如果确实需要将其转换回文本,请使用base64这样做-不要使用new String(encryptedBytes)
,因为您不再具有以常规文本编码方式编码的文本数据。