如何使用PowerShell从签名的dll中提取摘要算法?

时间:2019-05-30 11:19:21

标签: powershell digital-signature digest

我有一个经过数字签名的dll文件。我需要编写一个PowerShell命令,该命令可以使我获得用于数字签名的摘要算法。

我需要的摘要算法信息:

DigestAlgorithm Info what I need to extract

我尝试使用Get-AuthenticodeSignature,但这并没有为我提供摘要算法信息。

运行以下命令后,我得到以下结果。

Get-AuthenticodeSignature "C:\Program Files\Application Verifier\vrfauto.dll" | Format-List

以上结果: Result of execution

1 个答案:

答案 0 :(得分:0)

所以您要寻找的是

Get-AuthenticodeSignature | %{
    $_.SignerCertificate.SignatureAlgorithm.FriendlyName
}

让我们回顾一下如何到达那里。首先,我找到一个具有数字签名的文件。在此示例中,我将使用 PowerShell-6.1.2-win-x64.msi

Get-AuthenticodeSignature -FilePath C:\test\PowerShell-6.1.2-win-x64.msi | get-member

我们看到 SignerCertificate

有一个对象
SignerCertificate      Property   System.Security.Cryptography.X509Certificates.X509Certificate2 SignerCertificate {get;}

所以,让我们看看有什么

Get-AuthenticodeSignature -FilePath C:\test\PowerShell-6.1.2-win-x64.msi | %{
    $_.SignerCertificate | get-member
}

现在我们看到有一个 SignatureAlgorithm 属性

SignatureAlgorithm              Property       System.Security.Cryptography.Oid SignatureAlgorithm {get;}

现在我们再深入一遍

Get-AuthenticodeSignature -FilePath C:\test\PowerShell-6.1.2-win-x64.msi | %{
    $_.SignerCertificate.SignatureAlgorithm | get-member
}

我们得到了:

FriendlyName Property   string FriendlyName {get;set;}
Value        Property   string Value {get;set;}

我们可以看到两个字符串,因此我们测试哪个更适合我们...结果就是它的友好名称:

Get-AuthenticodeSignature -FilePath C:\test\PowerShell-6.1.2-win-x64.msi | %{
    $_.SignerCertificate.SignatureAlgorithm.FriendlyName
}

返回

sha256RSA