作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在Kotlin中实施Caesar Cipher。在Caesar Cipher中,您可以通过在字母下方替换固定位置的字母来加密消息。您可以在here上查找更多信息,以及我采用的加密和解密方法。
我的加密正常工作。
注意: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
}
对于大写字母,我的输出很好:
最佳答案
好的,所以我刚刚注意到作者最后给出了解密here的一些说明。
we can use the same function to decrypt, instead we’ll modify the shift value such that shift = 26-shift
fun decrypt(message:String,s:Int=3):String{
var decrpt:String = ""
for(m in message){
if(m.isLetter() && m.isUpperCase())
decrpt+=((m + (26-s) - 65).toInt() % 26 + 65).toChar()
else if(m.isLetter() && m.isLowerCase())
decrpt+=((m + (26-s) - 97).toInt() % 26 + 97).toChar()
else
decrpt+=m
}
return decrpt
}
不过,我很好奇我是否可以使用相反方向的相同移位来解密加密的文本。
关于java - 如何将3个字母的小写字母向后移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63318274/
我是一名优秀的程序员,十分优秀!