1

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

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

signature=`printf "test" | openssl dgst -sha256 -sign httpCert.key | openssl base64 -A`

但是在Powershell中努力寻找一种方法来做到这一点。

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

$hasher=[System.Security.Cryptography.HashAlgorithm]::Create('sha256')
$signSHA=$hasher.ComputeHash([System.Text.Encoding]::UTF8.GetBytes("test"))
$signature=[Convert]::ToBase64String($signSHA)

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

4

1 回答 1

0
$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)
于 2020-12-27T14:07:11.157 回答