如何使用 C# create/export 到 .PVK 文件?
How do I create/export to a .PVK file using C#?
我在 RSACryptoServiceProvider
对象中加载了一个 RSA 私钥。我需要将其导出到一个 .pvk 文件以便与 SQL 服务器一起使用。
有没有办法在 C# 中做到这一点?我看到可以使用 openssl...
这是我能找到的关于 pvk 文件格式的唯一文档:https://web.archive.org/web/20141117214716/http://www.drh-consultancy.demon.co.uk/pvk.html
如果您查看 RSACryptoServiceProvider.ExportCspBlob 的输出,您会发现它以与未加密 PVK 文件的偏移量 24 相同的字节序列开始。所以 PVK 文件只是带有 header:
的 CSP blob
using (var output = new BinaryWriter(File.Create("rsa.pvk")))
{
output.Write(0xB0B5F11Eu); // PVK magic number
output.Write(0u);
output.Write(1u); // KEYTYPE_KEYX for RSA
output.Write(0u); // not encrypted
output.Write(0u); // encryption salt length
var cspBlob = rsaCSP.ExportCspBlob(true);
output.Write((uint)cspBlob.Length);
output.Write(cspBlob);
}
我已验证 OpenSSL 会读取此内容
openssl rsa -in rsa.pvk -inform PVK
并将生成与直接从 RSACryptoServiceProvider 生成 PEM 私钥的 the code in this answer 相同的 PEM 私钥导出。
Mono 项目有一个 PVK 格式的开源实现,
Note the Mono.Security
NuGet package is not official.
我在 RSACryptoServiceProvider
对象中加载了一个 RSA 私钥。我需要将其导出到一个 .pvk 文件以便与 SQL 服务器一起使用。
有没有办法在 C# 中做到这一点?我看到可以使用 openssl...
这是我能找到的关于 pvk 文件格式的唯一文档:https://web.archive.org/web/20141117214716/http://www.drh-consultancy.demon.co.uk/pvk.html
如果您查看 RSACryptoServiceProvider.ExportCspBlob 的输出,您会发现它以与未加密 PVK 文件的偏移量 24 相同的字节序列开始。所以 PVK 文件只是带有 header:
的 CSP blobusing (var output = new BinaryWriter(File.Create("rsa.pvk")))
{
output.Write(0xB0B5F11Eu); // PVK magic number
output.Write(0u);
output.Write(1u); // KEYTYPE_KEYX for RSA
output.Write(0u); // not encrypted
output.Write(0u); // encryption salt length
var cspBlob = rsaCSP.ExportCspBlob(true);
output.Write((uint)cspBlob.Length);
output.Write(cspBlob);
}
我已验证 OpenSSL 会读取此内容
openssl rsa -in rsa.pvk -inform PVK
并将生成与直接从 RSACryptoServiceProvider 生成 PEM 私钥的 the code in this answer 相同的 PEM 私钥导出。
Mono 项目有一个 PVK 格式的开源实现,
Note the
Mono.Security
NuGet package is not official.