Linux上的PowerShell核心加密

时间:2018-02-17 00:43:16

标签: encryption aes powershell-core

有没有办法在Linux系统上将Windows PowerShell程序集或类文件加载到PowerShell Core?我正在尝试运行一个调用“System.Security.Cryptography.AesManaged”类来加密字符串的脚本,但我收到以下错误:

New-Object : Cannot find type [System.Security.Cryptography.AesManaged]: verify that the assembly containing this type is loaded.
At /root/Acid/enc/Decrypt.ps1:10 char:19
+ ...    $aesManaged = New-Object "System.Security.Cryptography.AesManaged"
+                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidType: (:) [New-Object], PSArgumentException
    + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

这是我初始化对象的PowerShell代码:

function Create-AesManagedObject($key, $IV) {
    $aesManaged = New-Object "System.Security.Cryptography.AesManaged"
    $aesManaged.Mode = [System.Security.Cryptography.CipherMode]::CBC
    $aesManaged.Padding = [System.Security.Cryptography.PaddingMode]::Zeros
    $aesManaged.BlockSize = 128
    $aesManaged.KeySize = 256
    if ($IV) {
        if ($IV.getType().Name -eq "String") {
            $aesManaged.IV = [System.Convert]::FromBase64String($IV)
        }
        else {
            $aesManaged.IV = $IV
        }
    }
    if ($key) {
        if ($key.getType().Name -eq "String") {
            $aesManaged.Key = [System.Convert]::FromBase64String($key)
        }
        else {
            $aesManaged.Key = $key
        }
    }
    $aesManaged
}

欢迎任何帮助,如果有更简单的方法,我很想知道!

1 个答案:

答案 0 :(得分:-1)

您可以使用Add-Type及其-Path选项在已知位置加载程序集,或使用-AssemblyName选项加载具有强名称的程序集。

然而,在这种情况下,文档说这个类来自System.Core程序集,它应该已经加载了。 .NET Core可能在标准库中没有AES,但我还没准备好在这方面做出任何结论。