2017-03-01 14 views
0

我是一名学生,我想通过使用c#实现基于身份的加密。基于身份加密(IBE)的C#实现

例子:我想通过使用接收器的电子邮件地址(公钥)和发件人将这个消息发送到接收加密邮件。一旦接收者接收到这个加密的消息,他将使用他的私钥对这个消息进行解密。

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

我不知道

  1. 如何使用接收器的电子邮件地址
  2. 接收器将如何诋毁-PT加密邮件加密邮件?
  3. 接收者将如何获得他的私钥?

我期待这个平台的帮助,因为我已经花了很多时间来搜索这个。

我曾尝试:

我试图加密和解密使用RSA算法,但这里的问题是RSA生成自己的公共和私有密钥对。而且我不能使用收件人电子邮件地址作为公钥来加密邮件。

预先感谢您。 阿肖克

+0

密钥可以通过协议进行交换,如Diffie-Hellman密钥交换,但会引起双方认证问题。或者他们可以通过邮件等其他渠道进行交换。还有PKI(公钥基础结构)。 – zaph

+0

@zaph感谢您的回复。是的,我们可以做到这一点。我很熟悉密钥交换。但我的主要目标是从电子邮件地址生成密钥..是否有可能? – Ashok

+0

我还没有看到基于配对的加密或甚至基于身份的加密的C#实现。你需要自己实现它。它不是那么容易。也许你可以在[PBC](https://crypto.stanford.edu/pbc/)上写一个封装。无论哪种方式,您的问题都无法用简短而明智的代码来回答。 –

回答

1

您可以生成一个电子邮件地址的安全对称密钥,任何字符串对于这个问题,有一个密钥导出函数,如PBKDF2(又名Rfc2898DeriveBytes)。

RSA是非对称加密与用于加密和解密单独的键,对称加密诸如AES同时用于加密和解密一个密钥。

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

非对称加密诸如AES是快速的,具有128位共用和安全较小键和能够处理基本上任何长度的数据。

+0

感谢您的回复...两个不同的钥匙公共和私人都必须为我....我需要使用非对称算法......正如你所提到的,RSA使用了两个密钥,但是我的基本问题是它会生成自己的公钥和私钥。而不是我想用我自己的公钥如Email ID和它的公钥各自产生的私人密钥..任何私人密钥被接受.. – Ashok

+0

基本上我想要的是使用收件人电子邮件ID加密一个文本和接收器将使用他自己的私人密钥对此文本进行解密....私人密钥可以是什么......我没有私钥问题... – Ashok

+0

为什么需要两个密钥?为什么不使用相同的密钥进行加密和解密。公钥/私钥对的工作方式不允许任何公钥的选择。 – zaph

相关问题