isp*_*iro 2 c# cryptography signing rsa
在搜索签名的方式时,我遇到了一些相当精细的代码示例.但是下面的代码似乎已经足够了.这里有什么东西像盐一样缺少,或者只是签字时不需要盐吗?我不加密,只是签名.
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] data = Encoding.ASCII.GetBytes("hello");
byte[] signature = rsa.SignData(data, "SHA1");
byte[] dataTest = Encoding.ASCII.GetBytes("hello");
bool verified = rsa.VerifyData(dataTest, "SHA1", signature);
if (verified) Text = "True"; else Text = "Untrue";
Run Code Online (Sandbox Code Playgroud)
Eri*_*ert 13
签署时不需要盐吗?
如果您的任务是防止已将哈希用作共享密钥的已知消息的哈希值的预计算,则必须进行筛选.如果那不是你的申请,那么就没有必要加盐了.
如果您不明白为什么需要盐,请参阅我关于该主题的系列文章:
http://blogs.msdn.com/b/ericlippert/archive/tags/salt/
这里有什么东西不见了吗?
是的,缺少最重要的一步.你打算如何传播公钥?整个系统的安全性依赖于您甚至没有提到的那一步.
假设Alice希望向Bob发送消息,Bob希望验证它是否来自Alice.他们执行以下操作:
它是否正确?
不,结论不正确.结论应该是:
如果Bob有其他证据证明他有Alice的公钥,那么原始结论才是正确的.因为Bob可能处于这种情况:
而现在整个事情都变成了地狱.Mallory现在可以发布Bob认为来自Alice的消息,而Alice则不能!
您必须说明如何安全地发布公钥.整个系统依赖于两件事:私钥保持私密,并且公钥可以通过某种机制与其所有者正确关联.
| 归档时间: |
|
| 查看次数: |
2078 次 |
| 最近记录: |