如何在Powershell中对字符串进行哈希和数字签名(使用私钥)

如何在Powershell中对字符串进行哈希和数字签名(使用私钥),powershell,openssl,private-key,signing,rsa-sha256,Powershell,Openssl,Private Key,Signing,Rsa Sha256,使用openssl,我生成了一个私钥(比如httpCert.key)和一个自签名证书。现在,我有一个字符串,我想哈希256,用我的私钥(即httpCert.key)进行数字签名,然后进行base64编码 我可以在bash中使用openssl完成这一切,如下所示: signature=`printf "test" | openssl dgst -sha256 -sign httpCert.key | openssl base64 -A` $hasher=[System.Security.Cryp

使用openssl,我生成了一个私钥(比如httpCert.key)和一个自签名证书。现在,我有一个字符串,我想哈希256,用我的私钥(即httpCert.key)进行数字签名,然后进行base64编码

我可以在bash中使用openssl完成这一切,如下所示:

signature=`printf "test" | openssl dgst -sha256 -sign httpCert.key | openssl base64 -A`
$hasher=[System.Security.Cryptography.HashAlgorithm]::Create('sha256')
$signSHA=$hasher.ComputeHash([System.Text.Encoding]::UTF8.GetBytes("test"))
$signature=[Convert]::ToBase64String($signSHA)
但在Powershell中努力寻找实现这一点的方法

根据其他帖子的帮助,我可以做一个简单的哈希和编码,如下所示:

signature=`printf "test" | openssl dgst -sha256 -sign httpCert.key | openssl base64 -A`
$hasher=[System.Security.Cryptography.HashAlgorithm]::Create('sha256')
$signSHA=$hasher.ComputeHash([System.Text.Encoding]::UTF8.GetBytes("test"))
$signature=[Convert]::ToBase64String($signSHA)

但不确定如何使用私钥对哈希256进行签名。我尝试使用“System.Security.Cryptography.RSACryptoServiceProvider”,但无法使其正常工作。

也许这对您有帮助:也许这对您有帮助:虽然此代码可以回答问题,提供关于如何和/或为什么解决问题的附加上下文将提高答案的长期价值。虽然此代码可能会回答问题,但提供关于如何和/或为什么解决问题的附加上下文将提高答案的长期价值。
$Certificate = [Security.Cryptography.X509Certificates.X509Certificate2]::new("g:\Drive\ff.pfx","")
$data=[System.Text.Encoding]::UTF8.GetBytes("test")
$sData=$Certificate.PrivateKey.SignData($Data,'SHA1')
[Convert]::ToBase64String($sData)