【发布时间】:2021-04-29 10:10:56
【问题描述】:
但是,我有一个与我在 (text) 下已有的文本相关的 Java 编程任务。 该功能应该如下
getEncryptedText(int shift)
如果要操作的文本是使用凯撒密码的明文,则返回密文的字符串表示形式。
旋转次数取决于移位值;
正移值代表右旋转,负移值代表左旋转
回转。但是,与 Wikipedia 中的说明不同,此方法使用以下字符串作为
清楚的:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
上述以外的其他字符将按原样处理(即不会被加密)
*延伸阅读:https://en.wikipedia.org/wiki/Caesar_cipher
所以这是我到目前为止所做的类方法,我想知道如何保留未包含在明文中的文本字符,例如“!,@,#,$,%......等等”。到目前为止,我尝试了所有方法,但无法成功,但其余的似乎都很好!
public String getEncryptedText(int shift) {
String ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
String cipherText = "";
for (int i = 0; i < text.length(); i++){
{
int charPosition = ALPHABET.indexOf(text.charAt(i));
if(text.charAt(i) == ' ') {
cipherText += " ";
}
else
{
int keyVal = (shift + charPosition) % 62;
char replaceVal = ALPHABET.charAt(keyVal);
cipherText += replaceVal;
}
}
}
return cipherText;
}
【问题讨论】:
标签: java string encryption compare