如何在脚本中重新创建 ASP 加密函数?

How to recreate ASP encryption function in a script?

我目前有一个 ASP Web 应用程序,其中包括对字符串执行加密。我想在我的应用程序之外使用此加密功能来加密一组字符串。我需要使用相同的加密函数,因为这些加密的字符串将被插入到应用程序的数据库中并在应用程序中解密。

问: 是否可以编写powershell脚本来利用ASP加密功能?如果不是,那么读取一组字符串并以与 ASP 应用程序相同的方式加密它们以便稍后可以由应用程序解密它们所需的正确 "tools" 是什么?

加密函数:

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

你有几个选择。

首先,您可以将该脚本函数迁移到 .NET CLR 语言(例如 C# 或 VB),然后将该函数打包到程序集中。然后,您可以使用 add-type cmdlet 从 Powershell 脚本调用该程序集。

Add-Type -Path c:\path\myAssembly.dll

其次,您实际上可以将 C# 或 VB.NET 转换后的源代码直接集成到 Powershell 脚本中,其中添加类型有所不同,-TypeDefinition 开关指向包含源代码的局部变量文本(完全未经测试的示例):

$mySource=@"public class psdemo{
              public int somevalue(){
                  return 100;
              }
          }"@
Add-Type -TypeDefinition $mySource
[psdemo]::somevalue()