如何处理加密算法中的新行?

时间:2015-10-15 19:58:28

标签: asp.net debugging powershell encryption scripting

我正在将ASP加密算法(在我的一个应用程序中使用)转换为PowerShell,以便加密一组100个随机字符串。在研究我的脚本输出时,我发现有大约120行文本产生。原始应用程序将加密的字符串插入SQL数据库。我将手动将加密的字符串添加到同一个数据库中。

问:我的算法是否引入了新的换行符?为什么我会收到超过100行的输出?这些加密的字符串是否仍可以添加到SQL数据库中?

原始ASP功能:

Function Encrypt(pwd)
    Dim key
    key = "_-#{[}]|!`~>(-<+"

    Dim strRet
    Dim nStrLen
    nStrLen = Len(pwd)
    Dim n
    For n = 1 To nStrLen
        strRet = strRet & Chr(Asc(Mid(pwd, n, 1)) Xor Asc(Mid(key, n, 1)))
    Next

    Encrypt = strRet
End Function

我的PowerShell实施:

function Encrypt ([string]$unencryptedPassword)
{
    $key = "_-#{[}]|!`~>(-<+";
    $nStrLen = $unencryptedPassword.length;

    For ($n=0; $n -lt $nStrLen; $n++)
        {
            $tmpPWD = $unencryptedPassword.substring($n,1);
            $tmpKEY = $key.substring($n,1);

            $tmpPWD = [byte][char]$tmpPWD;
            $tmpKEY = [byte][char]$tmpKEY;

            $tmpResult = $tmpResult + [char]($tmpPWD -bxor $tmpKEY);
        }

    return $tmpResult;
}

非常感谢任何帮助。请询问是否需要更多信息。

1 个答案:

答案 0 :(得分:2)

  

我的算法是否引入了新的行字符?

您的算法会生成 bytes 。这些字节中的一些完全有可能表示ASCII换行符或其他控制字符。是否可以“手动”将这些插入SQL中取决于您是如何做到的。