我正在学习.NET加密。似乎有两种方法,对称:AES和非对称:RSA或DSA。
因此,在上述两种情况下,当用户加密邮件时,他是否使用自己的私钥并向公众发布公钥,以便他们查看邮件?如果错误请纠正我。
或者用户是否对字符串进行散列,然后用他的私钥加密?还是公钥?
我很困惑.NET中的加密是用作消息真实性的手段还是实际加密消息内容
答案 0 :(得分:1)
对称加密算法仅使用一个密钥,由双方共享。对称算法加密大量数据的速度更快。
非对称算法使用两个密钥:一个用于发送者用于加密消息的私有密钥,一个用于接收者用于解密消息的公用密钥。
或者用户是否对字符串进行散列,然后用他的私钥加密?还是公钥?
这称为“签名”,而不是“加密”。 要对消息进行签名,通常将其哈希,然后使用非对称私钥“加密”哈希。然后,收件人将使用发件人的公钥解密签名并获取发件人的哈希值,散列原始邮件以获取自己的哈希值,并检查两个哈希值是否匹配。
非对称算法速度较慢,但由于散列比原始消息小很多,速度不是一个大问题。
签名是保证真实性的一种手段,它保证它没有被第三方篡改。