gua*_*ike 18 .net cryptography rsa
我知道RSACryptoServiceProvider可以使用公钥加密,然后可以使用私钥解密.
是否可以使用私钥加密并使用RSACryptoServiceProvider使用公钥解密?
Ale*_*319 62
只是为了清理一下:
RSA既可用于加密(确保Eve无法读取Alice发送给Bob的消息),也可用于签名(确保如果Alice向Bob发送消息,Bob知道实际上是Alice发送了消息,而不是Eve假装是爱丽丝)
RSA生成一对密钥 - 公钥和私钥.RSA的设计使得如果您应用公钥然后应用私钥,反之亦然,您将收到相同的消息.并且公钥不能从私钥导出(反之亦然).
为了使用RSA进行加密,Alice使用Bob的公钥加密消息.阅读此消息的唯一方法是使用Bob的私钥,只有他拥有.因此,Eve无法阅读该消息,因为他没有此密钥.另一方面,这不提供消息源的认证.Eve还可以获取Bob的公钥(因为它是公开的)并向Bob发送消息,假装是Alice.
为了使用RSA进行签名,Alice获取消息的哈希值,使用自己的私钥加密哈希值,并将结果(这是签名)附加到消息中.Eve当然可以使用Alice的公钥解密它.但是,Bob可以使用Alice的公钥解密签名,看看它是否匹配.如果是这样,它必须使用Alice的私钥加密,只有她拥有,所以它必须来自Alice.
现在,我不熟悉.NET加密API,所以我不确定它是否与此处描述的完全一致.但是这个解释可能会帮助您理解您获得的一些答案.
sma*_*det 18
每个人都声称没有这样的东西,或者不知道RSA是如何工作的,或者他们被困在"签约"的车辙中.
用私钥加密是完全可能的,也是完全合理的.是的,这与签名相似,但这并不是大多数现代图书馆所采用的签名方式.对他们而言,这意味着计算消息摘要或HMAC,并使用私钥加密.使用私钥进行签名的加密加密与将文档粘贴在保险箱中并将密钥留在周围的说法一样有意义,这是签署文档的替代方法.
是的,它是加密的,因为它的操作相同.私钥加密密文与公钥加密密文一样难以辨认; 一个人需要两个密钥才能解密密文.
有关RSA算法的参考,请参见http://fringe.davesource.com/Fringe/Crypt/RSA/Algorithm.html.
使用私钥执行原始RSA操作通常称为解密操作(正如使用公钥执行它称为加密操作).
访问此操作很有用 - 例如,实现框架不支持的操作.
该操作存在:它是DecryptValue -method,由RSACryptoServiceProvider的基类定义:System.Security.Cryptography.RSA.不幸的是,RSACryptoServiceProvider不支持它(因为底层的win32-api,CryptoAPI不支持它).但是,如果您可以获得RSA类的另一个.NET实现,那么您将能够执行此操作.
不,这不是任何公钥/私钥加密的工作原理。只能用公钥加密,也只能用私钥解密。
如果您想将私钥应用于消息,也许您正在寻找签名,而不是加密?这是一种不同的加密方案,也可以使用 RSA 密钥。
幸运的是没有。但是,您可以使用私钥签名,并使用公钥验证签名。
当逆转关键角色时(这就是签名的工作方式),涉及的数学是有意义的,而当解密密钥众所周知且公开时,进行隐私加密就没有多大意义。
归档时间: |
|
查看次数: |
25106 次 |
最近记录: |