【问题标题】:Kotlin - How to implement Rail Fence Cipher?Kotlin - 如何实现 Rail Fence Cipher?
【发布时间】:2020-12-04 10:30:58
【问题描述】:

我正在研究Rail Fence Cipher 加密。

fun main(){
    println("Enter the message:")
    var message:String = readLine()!!.toUpperCase()
    println("Enter the key:")
    var key:Int = readLine()!!.toInt()
    var skip:Int = 2*(key-1)
    var j=0
    var encryptedMsg:String=""
    var key1 = key

    while(key1>0){
        for(i in (key-key1)..message.length step  skip){
            if(i<=message.length-1)
                encryptedMsg+=message[i]
        }
        key1-=1
        skip = 2*(key1-1)
    }
    println("Encrypted Message: $encryptedMsg")
}
I am having trouble with the last row.

这里我收到一个错误:Step must be positive, was: 0。我也知道 step 不适用于最后一行。那么还有其他选择吗?

【问题讨论】:

    标签: kotlin encryption


    【解决方案1】:
    fun main(){
        println("Enter the message:")
        var message:String = readLine()!!.toUpperCase()
        println("Enter the key:")
        var key:Int = readLine()!!.toInt()
        var skip:Int = 2*(key-1)
        var j=0
        var encryptedMsg:String=""
        var key1 = key
    
        while(key1>0){
            for(i in (key-key1)..message.length step  skip){
                if(i<=message.length-1)
                    encryptedMsg+=message[i]
            }
            key1-=1
            skip = 2*(key1-1)
            if(skip==0) skip=2*(key-1)  //This solves the problem
        }
        println("Encrypted Message: $encryptedMsg")
    }
    

    不过,如果有人在没有两个循环的情况下有更好的建议,我想知道。谢谢。

    【讨论】:

      猜你喜欢
      • 2013-01-09
      • 1970-01-01
      • 2017-10-24
      • 2017-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 2017-11-02
      相关资源
      最近更新 更多