【问题标题】:Shift cipher loop function移位密码循环功能
【发布时间】:2016-09-26 08:11:58
【问题描述】:

我想获得一些帮助来修改此代码以使其循环解密功能以从密钥 (1-26) 输出加密消息。我们最简单的方法是什么?另一个 ForEach 循环?

$key = Read-Host "Key value:" 
$msg = Read-Host "Enter Message"
Write-Host "Encrypted Message: " $msg -ForegroundColor "white"
$String = [char[]]$msg

$array = [char[]]$msg
foreach ($letter in $array)
{
    $nbr = [int[]][char]$letter
    if ($nbr -ge 65 -and $nbr -le 90) #UpperCase
    {
        [string]$Snbr = $nbr
        [int]$Nnbr = $Snbr 
        [int]$nkey = $key
        [int]$Enbr = $Nnbr - $nkey 
        if ($Enbr -gt 90) {$Enbr = $Enbr - 26}
        if ($Enbr -lt 65) {$Enbr = $Enbr + 26}
        [string]$ELetter = [char]$Enbr       
    }  

    if ($nbr -ge 97 -and $nbr -le 122) #LowerCase
    {
        [string]$Snbr = $nbr
        [int]$Nnbr = $Snbr 
        [int]$nkey = $key
        [int]$Enbr = $Nnbr - $nkey 
        if ($Enbr -gt 122) {$Enbr = $Enbr - 26}
        if ($Enbr -lt 97)  {$Enbr = $Enbr + 26}
        [string]$ELetter = [char]$Enbr       
    }    
    $EMsg = $EMsg + $ELetter    
}
Write-Host "PlainText: " $EMsg -ForegroundColor "white"

【问题讨论】:

  • 有什么问题?错误的输出,程序崩溃,还是别的什么?
  • 是的,输出错误。现在它只显示一条解密的消息。我需要它来显示所有带有所有键的消息。你能建议一个简单的方法应该如何完成吗?另一个 ForEach 循环?

标签: powershell shift caesar-cipher


【解决方案1】:

也许下一个评论代码存根可能会有所帮助:

$String = [char[]]$msg
$EMsg = ''                     ### initialize `$EMsg` variable
$array = [char[]]$msg
foreach ($letter in $array)
{
    $ELetter = $letter         ### initialize `$ELetter` in advance for case that `$letter`
                               ### is not UpperCase nor LowerCase letter
    $nbr = [int[]][char]$letter
    if ($nbr -ge 65 -and $nbr -le 90) #UpperCase

【讨论】:

    猜你喜欢
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    相关资源
    最近更新 更多