我是学生,我想使用c#实现基于身份的加密。
示例:我想使用接收方电子邮件地址(公钥)加密邮件,发件人会将此邮件发送给收件人。一旦接收者收到此加密消息,他将使用他的私钥解密此消息。
这在理论上看起来不错,但我很难实际做到这一点。
我不知道
我期待这个平台的帮助,因为我已经花了很多时间来搜索它。
我尝试了什么:
我尝试使用RSA算法进行加密和解密,但问题是RSA会生成自己的公钥和私钥对。我不能使用接收者电子邮件地址作为加密消息的公钥。
提前谢谢你。 阿肖克
答案 0 :(得分:1)
您可以使用密钥派生函数(例如PBKDF2
(又名Rfc2898DeriveBytes
)从电子邮件地址,任何字符串生成安全对称密钥。
RSA是非对称加密,具有用于加密和解密的单独密钥,AES等对称加密使用一个密钥进行加密和解密。
诸如RSA之类的非对称加密具有两个密钥的优点,其中加密密钥可以是公知的。但它非常慢且数据大小,密钥很大(2048位是当前安全大小)并且数据长度限于密钥大小,它通常用于加密对称密钥。除了长度之外,无法控制对称密钥对的创建。仅在必须使用公钥/私钥对时才使用非对称加密。
AES等非对称加密速度快,密钥较小,128位通用且安全,可以处理基本上任意长度的数据。