从snk形式文件导出xml形式的密钥密钥对供程序使用,不知道怎样实现?给程序集签名的的时候用到snk密钥文件,在程序中有时候也要用到公私钥加密,我想就用一套加密钥匙,所以怎样从snk形式文件导出xml形式的密钥密钥对呢?看看我尝试的过程(总是不成功):
使用 SN.exe -k制出snk文件
使用 sn -m n 切换到用户模式
使用sn -i *.snk MyContainer将密钥对导入名为“MyContainer”的密钥容器中 使用程序:
CspParameters cp = new CspParameters();
cp.KeyContainerName = "MyContainer";
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp);
textBox1.text=rsa.ToXmlString(false); 发现得出的xml格式公匙并不是snk中对应的
验证过程如下:
记住xml格式公匙
使用sn -d MyContainer删除容器
再重新导入:使用sn -i *.snk MyContainer将密钥对导入名为“MyContainer”的密钥容器中
并重新运行程序,发现得出的xml格式公匙和上一次不一样 发现容器名称是对应的,好像密钥不一样。如果没有使用SN创建密钥容器,运行这段程序可以自动创建同名的密钥容器,用SN可以删除程序创建的同名容器 到底该怎样从snk形式文件导出xml形式的密钥对呢?趁着[可用分回赠参与]这条船求个答案,不敢企望得多少分,也许问题本不值一个问题,望大虾们随手麻烦回复一下
使用 SN.exe -k制出snk文件
使用 sn -m n 切换到用户模式
使用sn -i *.snk MyContainer将密钥对导入名为“MyContainer”的密钥容器中 使用程序:
CspParameters cp = new CspParameters();
cp.KeyContainerName = "MyContainer";
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp);
textBox1.text=rsa.ToXmlString(false); 发现得出的xml格式公匙并不是snk中对应的
验证过程如下:
记住xml格式公匙
使用sn -d MyContainer删除容器
再重新导入:使用sn -i *.snk MyContainer将密钥对导入名为“MyContainer”的密钥容器中
并重新运行程序,发现得出的xml格式公匙和上一次不一样 发现容器名称是对应的,好像密钥不一样。如果没有使用SN创建密钥容器,运行这段程序可以自动创建同名的密钥容器,用SN可以删除程序创建的同名容器 到底该怎样从snk形式文件导出xml形式的密钥对呢?趁着[可用分回赠参与]这条船求个答案,不敢企望得多少分,也许问题本不值一个问题,望大虾们随手麻烦回复一下
System.Security.Cryptography.CryptographicException: 该项不存在。 在 System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)
System.Security.Cryptography.CryptographicException: 该项不存在。 在 System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)应该检查一下错误出现在哪一行,如果是出现在RSACryptoServiceProvider = new RSACryptoServiceProvider(cp); 则表示本地没有那个密钥,
如果出现在textBox1.text=rsa.ToXmlString();可能是导出错误。
另外也可以试试用pem p12 等其他密钥类型使用sn.exe 导入。