【问题标题】:How to hash256 and digitally sign (with a private key) a string in Powershell如何在Powershell中对字符串进行hash256和数字签名(使用私钥)
【发布时间】:2019-11-14 09:52:30
【问题描述】:

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

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

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”,但无法正常工作。

【问题讨论】:

标签: powershell openssl private-key signing rsa-sha256


【解决方案1】:
$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)

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
猜你喜欢
  • 2023-04-02
  • 2013-06-06
  • 1970-01-01
  • 2011-03-11
  • 2022-09-29
  • 2019-03-13
  • 1970-01-01
  • 2016-03-24
  • 2011-01-22
相关资源
最近更新 更多