RSACryptoServiceProvider Public/Private 密钥导入
RSACryptoServiceProvider Public/Private Keys Import
我想通过 RSACryptoServiceProvider
签署和验证数据
为此,我需要 Public 和私钥。
在我的项目中,我将我的Public 和私钥存储在 XML 文件中。
有一次,我生成了我的Public 和私钥
public bool SignutureCheckForVerify(string myData, byte[] SignedData)
{
...
RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider();
RSAalg.FromXmlString(MyPublicKey());
return RSAalg.VerifyData(Encoding.ASCII.GetBytes(myData), new MineCryptoService(), SignedData);
...
}
private static string MyPublicKey()
{
return "<RSAKeyValue><Modulus>-----Pubic Key Here ----</RSAKeyValue>";
}
在上面,我证明了 "Verify Data Via Public Keys"
我的 SignData 方法类似。
在那里,
RSAalg.FromXmlString(GetPrivateKey());
...
RSAalg.SignData(...)
我的问题就是这样;在某些例子中,我认识到这一点; Public 和私钥通过 crt/pem/cert 等证书文件导入。我在那里存储了 XML 个文件。
İ我的解决方案错了吗?
第二个问题,
如果我用这个方法导入密钥
https://msdn.microsoft.com/en-us/library/tswxhw92(v=vs.110).aspx
GetKeyFromContainer("MyKeyContainer");
MyKeyContainer 是私有的并且 public 密钥是静态的吗?
在每个 运行,我可以拥有相同的 私人 key/public 密钥
或者每个 运行ning 我有不同的键集?强调文本
Is My solution wrong?
这取决于您的要求和威胁模型。 RSACryptoServiceProvider
的签名生成应明确设置为除 MD5 或 SHA-1 之外的哈希。从你的问题中不清楚这是否发生了。
If I use this method to import keys
https://msdn.microsoft.com/en-us/library/tswxhw92(v=vs.110).aspx
GetKeyFromContainer("MyKeyContainer");
Is MyKeyContainer private and public keys static?
是的,这就是使用密钥存储的一般想法。
At each run, Can I have same private key/public key? Or should I have different key set each time I generate a signature?
可以,前提是您使用的密钥大小足够大,比如 2048 位或更高。
实际上,为了使您的解决方案安全,接收方需要信任 public 密钥。当没有建立信任时,任何人都可以向您发送他们的 public 密钥。
我想通过 RSACryptoServiceProvider
签署和验证数据为此,我需要 Public 和私钥。
在我的项目中,我将我的Public 和私钥存储在 XML 文件中。
有一次,我生成了我的Public 和私钥
public bool SignutureCheckForVerify(string myData, byte[] SignedData)
{
...
RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider();
RSAalg.FromXmlString(MyPublicKey());
return RSAalg.VerifyData(Encoding.ASCII.GetBytes(myData), new MineCryptoService(), SignedData);
...
}
private static string MyPublicKey()
{
return "<RSAKeyValue><Modulus>-----Pubic Key Here ----</RSAKeyValue>";
}
在上面,我证明了 "Verify Data Via Public Keys"
我的 SignData 方法类似。
在那里,
RSAalg.FromXmlString(GetPrivateKey());
...
RSAalg.SignData(...)
我的问题就是这样;在某些例子中,我认识到这一点; Public 和私钥通过 crt/pem/cert 等证书文件导入。我在那里存储了 XML 个文件。
İ我的解决方案错了吗?
第二个问题,
如果我用这个方法导入密钥
https://msdn.microsoft.com/en-us/library/tswxhw92(v=vs.110).aspx
GetKeyFromContainer("MyKeyContainer");
MyKeyContainer 是私有的并且 public 密钥是静态的吗?
在每个 运行,我可以拥有相同的 私人 key/public 密钥
或者每个 运行ning 我有不同的键集?强调文本
Is My solution wrong?
这取决于您的要求和威胁模型。 RSACryptoServiceProvider
的签名生成应明确设置为除 MD5 或 SHA-1 之外的哈希。从你的问题中不清楚这是否发生了。
If I use this method to import keys
https://msdn.microsoft.com/en-us/library/tswxhw92(v=vs.110).aspx
GetKeyFromContainer("MyKeyContainer");
Is MyKeyContainer private and public keys static?
是的,这就是使用密钥存储的一般想法。
At each run, Can I have same private key/public key? Or should I have different key set each time I generate a signature?
可以,前提是您使用的密钥大小足够大,比如 2048 位或更高。
实际上,为了使您的解决方案安全,接收方需要信任 public 密钥。当没有建立信任时,任何人都可以向您发送他们的 public 密钥。