拆分单词并编码为数字
Splitting words and encoding to numbers
我目前正在研究我在 Java 中构建的密码系统。在加密处理之前,我需要找到最有效的方法来执行以下操作:
在我得到一个字符串(f.e. 'plaintext") 之后,我需要将它拆分成它的字母并将它们编码为数字(f.e. 0-25).
在加密过程之后,我需要以相反的方式执行上述操作,以便将加密的消息(以数字编码)解码为字母,然后字母再次成为一个单词。
我的主要目标是以最快的方式做我想做的事。
尽管您可以使用流:
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';
与decrypt/construct相反:
for (int i = 0; i < bytes.length; i++)
bytes[i] = bytes[i] + 'a';
String plain = new String(bytes);
我目前正在研究我在 Java 中构建的密码系统。在加密处理之前,我需要找到最有效的方法来执行以下操作:
在我得到一个字符串(f.e. 'plaintext") 之后,我需要将它拆分成它的字母并将它们编码为数字(f.e. 0-25).
在加密过程之后,我需要以相反的方式执行上述操作,以便将加密的消息(以数字编码)解码为字母,然后字母再次成为一个单词。
我的主要目标是以最快的方式做我想做的事。
尽管您可以使用流:
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';
与decrypt/construct相反:
for (int i = 0; i < bytes.length; i++)
bytes[i] = bytes[i] + 'a';
String plain = new String(bytes);