Sto*_*one 1 java encryption char
我在Java中使用Cipher,但我不能做以下事情:我想编辑char数组的值来加密它
我该怎么做?
更改每个字符的ASCII值可能是答案,我不知道; 这就是为什么我问你们伙计们!
您可以添加一个inta char,但结果是int- 您必须强制转换char为将其放回数组中,除非您使用复合赋值运算符:
array[x] += someInt;
Run Code Online (Sandbox Code Playgroud)
要么
array[x] = (char) (array[x] + someInt);
Run Code Online (Sandbox Code Playgroud)
但是,通常这不是执行加密的适当方式.您通常会得到不可打印的字符,或者甚至在Unicode中没有特定含义的字符.相反,大多数加密算法都设计用于处理任意二进制数据 - 即字节数组.
通常,您首先将字符串转换为字节数组(例如,使用String.getBytes(charset)- 明确指定编码).然后对字节数组执行加密,为您提供一个新的字节数组.如果你真的需要将其转换回文本,使用的base64这样做-做没有用new String(encryptedBytes),因为你不再需要在一个普通的文本编码编码的文本数据.
在 Java 中,char和int是兼容类型,因此只需将它们添加到+运算符即可。
char c = 'c';
int x = 10;
Run Code Online (Sandbox Code Playgroud)
c + x结果是一个整数,因此您需要进行显式转换才能将其分配给您的字符变量。
c = (char)(c + x); // After this assignment, c = 'm'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19334 次 |
| 最近记录: |