繁体   English   中英

如何使用 PowerShell 获取证书模数?

[英]How to Get Certificate Modulus Using PowerShell?

给定一个*.cer文件,如何仅使用 PowerShell 以字节格式检索证书公钥的模数?

我能够在 PowerShell 中执行以下操作来检索签名证书的公钥模数。

# Load the cert into an object.
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Users\JaneDoe\Desktop\myCertificate.cer");

这为我们提供了一个证书 object,我们可以从中提取大量数据,例如到期日期NotAfter 、指纹和其他信息。

# Calculate the public key modulus, and convert to hex format.
$modulus = ($cert.PublicKey.Key.ExportParameters($false)).Modulus | %{ ("{0:x}" -f $_).PadLeft(2, "0") };

这将从公钥中检索模数,并将结果 pipe 转换为十六进制格式化程序。 您会注意到它还保证集合中的每个项目如果小于0x10 16,都将用前导零填充。

# Format display to look nice.
[Regex]::Replace(("0x00, 0x" + [string]::Join(", 0x", $modulus)), "(?<=^(.{102})+)", [Environment]::NewLine);

对于我的特定用例,我希望集合中的每个项目都有一个前导0x用于复制/粘贴目的,并且每 102 个字符后有一个换行符也用于复制/粘贴目的。 如果不需要,可以忽略最后一条命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM