【问题标题】:How to recreate ASP encryption function in a script?如何在脚本中重新创建 ASP 加密功能?
【发布时间】:2015-10-14 23:50:10
【问题描述】:

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

问:是否可以编写一个powershell脚本来利用ASP加密功能?如果不是,那么读取一组字符串并以与 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

【问题讨论】:

  • 您确定要使用那个加密方法吗?好像不是很健壮。在安全方面最好不要实现自己的东西,而是使用经过验证和测试的东西。
  • 我已采用该应用程序,目前无法更改加密功能。 @梅森

标签: asp.net bash powershell encryption scripting


【解决方案1】:

您有几个选择。

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

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

其次,您实际上可以将 C# 或 VB.NET 转换的源代码直接集成到 Powershell 脚本中,并使用 add-type 的变体,使用 -TypeDefinition 开关指向包含源文本的局部变量(完全未经测试示例):

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

【讨论】:

  • 感谢您的快速回复!我将研究实施这些解决方案之一。如果不需要 powershell,是否有更简单的方法来实现这一点?还是无论如何你都会使用powershell?
  • 为什么不直接在 PowerShell 中编写函数呢?为什么要先通过 CLR 语言?
  • 谢谢,希望它们对你有用。如果您需要在支持/管理类型环境中解密这些字符串,那么是的,Powershell 可能是我要采取的路线。我确信 PS 是微软试图让人们追求的方向,而不是使用像 vbscript 这样的旧语言的基于脚本的解决方案。
  • 当然可以,@briantist,但就他已经完成的工作而言,迁移的代码选项似乎更符合他的需求。不过不错的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多