基于身份加密(IBE)的C#实现
问题描述:
我是一名学生,我想通过使用c#实现基于身份的加密。基于身份加密(IBE)的C#实现
例子:我想通过使用接收器的电子邮件地址(公钥)和发件人将这个消息发送到接收加密邮件。一旦接收者接收到这个加密的消息,他将使用他的私钥对这个消息进行解密。
这在理论上看起来不错,但我正在努力做到这一点实际。
我不知道
- 如何使用接收器的电子邮件地址
- 接收器将如何诋毁-PT加密邮件加密邮件?
- 接收者将如何获得他的私钥?
我期待这个平台的帮助,因为我已经花了很多时间来搜索这个。
我曾尝试:
我试图加密和解密使用RSA算法,但这里的问题是RSA生成自己的公共和私有密钥对。而且我不能使用收件人电子邮件地址作为公钥来加密邮件。
预先感谢您。 阿肖克
答
您可以生成一个电子邮件地址的安全对称密钥,任何字符串对于这个问题,有一个密钥导出函数,如PBKDF2
(又名Rfc2898DeriveBytes
)。
RSA是非对称加密与用于加密和解密单独的键,对称加密诸如AES同时用于加密和解密一个密钥。
诸如RSA之类的非对称加密具有两个密钥的优点,其中加密密钥可以是公知的。但它非常慢,数据量大,密钥很大(2048位是当前安全大小),数据长度仅限于密钥大小,通常用于加密对称密钥。除了长度以外,不能控制对称密钥对的创建。仅在必须使用公钥/私钥对时才使用非对称加密。
非对称加密诸如AES是快速的,具有128位共用和安全较小键和能够处理基本上任何长度的数据。
密钥可以通过协议进行交换,如Diffie-Hellman密钥交换,但会引起双方认证问题。或者他们可以通过邮件等其他渠道进行交换。还有PKI(公钥基础结构)。 – zaph
@zaph感谢您的回复。是的,我们可以做到这一点。我很熟悉密钥交换。但我的主要目标是从电子邮件地址生成密钥..是否有可能? – Ashok
我还没有看到基于配对的加密或甚至基于身份的加密的C#实现。你需要自己实现它。它不是那么容易。也许你可以在[PBC](https://crypto.stanford.edu/pbc/)上写一个封装。无论哪种方式,您的问题都无法用简短而明智的代码来回答。 –