从技术上讲,是的。根据您拥有哪种键,答案会变得更加棘手。
编辑(2019年10月):.NET Core 3.0以DER编码(vs PEM编码)形式对所有这些格式均提供内置支持。我在每种文件格式的子标题后添加.NET Core 3.0+答案。
如果您拥有这种类型的文件,并且您使用的是.NET 4.6或更高版本,则可以。您需要具有DER编码(相对于PEM编码)的数据blob(如果是PEM,请参见下文)。
using (CngKey key = CngKey.Import(blob, CngKeyBlobFormat.Pkcs8PrivateBlob))
using (RSA rsa = new RSACng(key))
{
return rsa.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}
Run Code Online (Sandbox Code Playgroud)
RSA需要4.6,ECDSA需要4.6.1,DSA需要4.6.2。
该ImportPkcs8PrivateKey法宣布AsymmetricAlgorithm,所有非对称内置类型(RSA,DSA,ECDsa,ECDiffieHellman)支持。
using (RSA rsa = RSA.Create())
{
rsa.ImportPkcs8PrivateKey(blob, out _);
return rsa.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}
Run Code Online (Sandbox Code Playgroud)
恭喜,您的私钥传输很强大。可悲的是,如果您想实际处理它,则需要编写最大数量的代码。您不想处理它。你真的,真的,想要
请参阅如何在pem证书中加密私钥?,然后继续进行下一部分的入门。但是,您要做的工作比谈论的要多得多。您需要阅读文件,了解加密方案和参数,解密Blob,然后使用CNG读取PKCS#8,或者只是继续钻探兔子洞并享受文件解析器的乐趣。
该ImportEncryptedPkcs8PrivateKey法宣布AsymmetricAlgorithm,所有非对称内置类型(RSA,DSA,ECDsa,ECDiffieHellman)支持。
using (RSA rsa = RSA.Create())
{
rsa.ImportEncryptedPkcs8PrivateKey(password, blob, out _);
return rsa.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,“相对简单”和“相对困难”的融合被数学专业的学生称为“留给读者的练习”。
强烈考虑使用EncryptedPrivateKeyInfo的PFX方法。或者,您可以在自定义代码中执行此操作。自定义代码?好吧,让我们这样做。此时您需要的参考文本是
好吧,让我们继续。
byte[]为键对象进行了DER编码。对于步骤4,有些事情要小心。具体来说,ASN.1 / DER INTEGER组件具有RSAParameters不喜欢的两个规则。
.NET希望这些值成为具有以下关系的大端字节数组(与DER编码的字节顺序相同):
该ImportRSAPrivateKey方法在上声明RSA,并且由于它解析数据并调用,ImportParameters因此适用于所有RSA派生类型(假设它们已经支持参数导入)。
using (RSA rsa = RSA.Create())
{
rsa.ImportRSAPrivateKey(blob, out _);
return rsa.SignData(data, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}
Run Code Online (Sandbox Code Playgroud)
确定哪种RFC为您的密钥格式定义了ASN.1结构,然后牢记这一点并评估RSAPrivateKey部分。
DSAParameters和ECParameters每个都有自己的空间期望。
其中一些包括并非总是优雅但经常运行的代码:
小智 0
Microsoft 提供了一个类 SignedXML 来对文件进行签名。要了解更多信息,请查看https://msdn.microsoft.com/en-us/library/system.security.cryptography.xml.signedxml(v=vs.110).aspx
| 归档时间: |
|
| 查看次数: |
1795 次 |
| 最近记录: |