我目前正致力于使用Java构建的加密系统。在加密处理之前,我需要找到最有效的方法来执行以下操作:
在我得到一个字符串(f.e。'明文")后,我需要将其拆分为字母并将其编码为数字(f.e.0-25)。
在加密过程之后,我需要以相反的方式执行上述操作,以便将加密的消息(以数字编码)解码为字母,然后字母再次成为一个单词。
我的主要目标是以最快的方式做我想做的事。
答案 0 :(得分:0)
虽然你可以使用流:
str.chars().map(c -> c - 'a') // IntStream of 0-25
由于流开销,字节上的普通循环将是最快的:
byte[] bytes = str.getBytes(); // OK, since all chars are in range 0-127
for (int i = 0; i < bytes.length; i++)
bytes[i] = bytes[i] - 'a';
与解密/构建相反:
for (int i = 0; i < bytes.length; i++)
bytes[i] = bytes[i] + 'a';
String plain = new String(bytes);