我正在尝试在 Kotlin 中实现 Caesar Cipher。在 Caesar Cipher 中,您通过将字母替换为字母表中一些固定位置的字母来加密消息。您可以在此处查看更多信息以及我采用的加密和解密方法。
我的加密工作正常。
注意:s 表示字母的转换,默认情况下我将其保留为 3。
fun encrypt(message:String,s:Int=3):String{
var encrpt:String = ""
for(m in message){
if(m.isLetter() && m.isUpperCase())
encrpt+=((m + s - 65).toInt() % 26 + 65).toChar()
else if(m.isLetter() && m.isLowerCase())
encrpt+=((m + s - 97).toInt() % 26 + 97).toChar()
else
encrpt+=m
}
return encrpt
}
对于解密而不是加 3,我减去了 3。但是我在解密时遇到了一些问题,而且这也仅限于小写字母。
这是我的解密代码:
fun decrypt(message:String,s:Int=3):String{
var decrpt:String = ""
for(m in message){
if(m.isLetter() && m.isUpperCase())
decrpt+=((m - s + 65).toInt() % 26 + 65).toChar()
else if(m.isLetter() && m.isLowerCase())
decrpt+=((m - s + 97).toInt() % 26 + 97).toChar()
else
decrpt+=m
}
return decrpt
}
对于大写字母,我的输出很好:
J->G
但是对于小写字母,输出不正确。
j->s
我已将此图像用于字符的十进制值。感谢您调查我的问题。