如何将现有公钥转换为.snk格式的密钥文件?
你可以通过以下步骤将sn -Tp导出的文本公钥转换为PublicSign支持的.snk格式公钥文件:
1. 提取十六进制公钥串
从sn -Tp的输出内容中,找到「公钥」对应的连续十六进制字符段,去除字符段中间的空格、换行符,仅保留完整的0-9、A-F连续字符。
注意:不要误拿输出里的公钥令牌,公钥令牌是仅8个字符的短串,无法用于转换,必须使用长度更长的完整公钥串。
2. 十六进制转二进制公钥Blob
使用PowerShell执行以下命令,将上一步获取的十六进制串转换为二进制公钥文件:
# 替换尖括号内容为实际值 $pubkeyHex = "<你提取的完整十六进制公钥串>" $outputBinPath = "public_key.bin" $pubkeyBytes = [Convert]::FromHexString($pubkeyHex) [IO.File]::WriteAllBytes($outputBinPath, $pubkeyBytes)
如果你使用的PowerShell版本较低不支持FromHexString方法,也可以用任意十六进制转二进制工具完成转换,确保输出的是纯二进制公钥内容即可。
3. 二进制公钥转.snk格式
使用系统自带的强名称工具sn执行以下命令,将二进制公钥封装为.snk文件:
sn -i public_key.bin public_key.snk
验证文件有效性
转换完成后可执行以下命令校验snk文件内的公钥是否和原始公钥一致:
sn -tp public_key.snk
输出的公钥串和你原始sn -Tp导出的公钥一致即可正常用于PublicSign选项。
内容的提问来源于stack exchange,提问作者user626528
相关产品推荐
相关产品推荐

