基于身份加密的C#实现(IBE)

时间:2017-03-01 03:04:29

标签: c#-4.0 rsa public-key-encryption des encryption-asymmetric

我是学生,我想使用c#实现基于身份的加密。

示例:我想使用接收方电子邮件地址(公钥)加密邮件,发件人会将此邮件发送给收件人。一旦接收者收到此加密消息,他将使用他的私钥解密此消息。

这在理论上看起来不错,但我很难实际做到这一点。

我不知道

  1. 如何使用接收方电子邮件地址加密邮件
  2. 接收方如何解密加密消息?
  3. 接收者如何获得他的私钥?
  4. 我期待这个平台的帮助,因为我已经花了很多时间来搜索它。

    我尝试了什么:

    我尝试使用RSA算法进行加密和解密,但问题是RSA会生成自己的公钥和私钥对。我不能使用接收者电子邮件地址作为加密消息的公钥。

    提前谢谢你。 阿肖克

1 个答案:

答案 0 :(得分:1)

您可以使用密钥派生函数(例如PBKDF2(又名Rfc2898DeriveBytes)从电子邮件地址,任何字符串生成安全对称密钥。

RSA是非对称加密,具有用于加密和解密的单独密钥,AES等对称加密使用一个密钥进行加密和解密。

诸如RSA之类的非对称加密具有两个密钥的优点,其中加密密钥可以是公知的。但它非常慢且数据大小,密钥很大(2048位是当前安全大小)并且数据长度限于密钥大小,它通常用于加密对称密钥。除了长度之外,无法控制对称密钥对的创建。仅在必须使用公钥/私钥对时才使用非对称加密。

AES等非对称加密速度快,密钥较小,128位通用且安全,可以处理基本上任意长度的数据。