我正在.NET中学习加密,似乎有两种方法,对称的:AES和非对称的:RSA或DSA。
因此,在上述两种情况下,当用户加密消息时,他是否使用自己的私钥并向公众发布公钥,以便他们能够检查消息?如果错了,请纠正我。
还是用户散列字符串,然后用他的私钥加密?还是公钥?
我很困惑.NET中的加密是用作消息真实性的一种手段,还是实际上是对消息的内容进行加密。
发布于 2015-05-13 10:37:15
对称加密算法只使用一个密钥,由双方共享。对称算法在加密大量数据方面速度更快。
非对称算法使用两个密钥:一个是发送方用来加密消息的私有密钥,另一个是收件人用来解密消息的公开密钥。
还是用户散列字符串,然后用他的私钥加密?还是公钥?
这被称为“签名”,而不是“加密”。要对消息进行签名,通常需要散列,然后使用非对称私钥对哈希进行“加密”。然后,接收方将使用发件人的公钥解密签名,并获取发件人的散列,散列原始消息以获得他自己的散列,并检查这两个散列是否匹配。
非对称算法速度较慢,但由于哈希比原始消息小得多,所以速度不是一个大问题。
签名是保证真实性的一种手段,它保证不被第三方篡改。
https://stackoverflow.com/questions/30212100
复制相似问题