通过套接字发送RSA公钥,将其导入加密[VB .NET]

时间:2016-02-22 22:41:02

标签: vb.net encryption rsa

我正在编写生成公钥和私钥对,然后通过套接字将公钥发送到另一个用于加密字符串数据的程序。 我在VB.NET中使用RSA,我能够生成所需的密钥:

  

我的公钥v + u4Lt4nyLXincU + wbReOTU3nwiTZ7MlFkA7cytLOjuviHrAdnaVAV8 + WoFhy9nADGtk1K0OLAE1ZwGzt / kgUw ==

我的问题是:公钥是否足以被其他用户加密?如果是这样,我如何将其导入RSA参数以加密数据?

编辑:

我尝试导入公钥时使用以下代码,但失败了:

Dim Parameters As New RSAParameters
Parameters.Modulus = encoder.GetBytes(publicKey)
RSA.ImportParameters(Parameters)

3 个答案:

答案 0 :(得分:1)

  

我的问题是:公钥是否足以被其他人加密   用户?

答案是如此经常:这取决于。

您描述提议的协议的方式将对中间人攻击广泛开放。 Eve可以直接拦截电线上的信息,并自己更换密钥。

从理论的角度来看,加密数据就足够了。但是,为了在现实场景中有用,您还必须使用对称加密。

所以这是我的建议: 如果你不得不提出这样的问题,不要做自己的协议。决不。不止一次。 使用众所周知的已建立的技术,如TLS!

答案 1 :(得分:1)

我在VB.net中有一个类似的项目,你将无法发送大量的消息,因为如果你使用的是2048bit RSA,那么你能够发送的最大数据大小将是245字节。 https://security.stackexchange.com/questions/33434/rsa-maximum-bytes-to-encrypt-comparison-to-aes-in-terms-of-security

我使用了RSA公钥,因此每个客户端都使用AES加密并传递自己的密钥,这些密钥使用RSA加密,然后服务器会解密密钥并使用它来解析数据。这使用非对称(RSA)和对称加密(AES)。这是一个有用视频的链接,可以在我做这个项目时解释这一点。 https://www.youtube.com/watch?v=6H_9l9N3IXU&t=271s

我导入密钥的方式是使用RSA CryptoServiceProvider中的.toXMLString和.fromXMLString。这是一个很好的解释它的链接,可能做得更好。 https://msdn.microsoft.com/en-us/library/system.security.cryptography.rsa.toxmlstring(v=vs.110).aspx

答案 2 :(得分:0)

我发现这个页面对我来说非常有用here

此外,我发现我在加密后将加密的字节数组转换为字符串,然后在解密之前将其转换回字节数组。最后一个字节数组与原始数组的大小不同。