我正在将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;
}
非常感谢任何帮助。请询问是否需要更多信息。
答案 0 :(得分:2)
我的算法是否引入了新的行字符?
您的算法会生成 bytes 。这些字节中的一些完全有可能表示ASCII换行符或其他控制字符。是否可以“手动”将这些插入SQL中取决于您是如何做到的。