2012-03-25 45 views
0

是否有反正我可以将其转换为使用RSA加密?即时通讯有点新VB.Net和更糟糕的加密。谢谢VB.Net使用RSA加密

Imports System.Text 
Imports System.Security.Cryptography 
Imports System.IO 
Public Class ClsEncryption 
Public Shared Function DESEncrypt(ByVal Data As String, ByVal Key As String) As String 
    Dim DES As New System.Security.Cryptography.DESCryptoServiceProvider 
    Dim dHash As New System.Security.Cryptography.MD5CryptoServiceProvider 
    Dim encrypted As String = "" 
    Try 
     Dim hash(7) As Byte 
     Dim temp As Byte() = dHash.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(Key)) 
     Array.Copy(temp, 0, hash, 0, 8) 
     DES.Key = hash 
     DES.Mode = Security.Cryptography.CipherMode.ECB 
     Dim DESEncrypter As System.Security.Cryptography.ICryptoTransform = DES.CreateEncryptor 
     Dim Buffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(Data) 
     encrypted = Convert.ToBase64String(DESEncrypter.TransformFinalBlock(Buffer, 0, Buffer.Length)) 
     Return encrypted 
    Catch ex As Exception 
    End Try 
End Function 
End Class 
+0

您不能简单地将对称密码函数“转换”为非对称密码函数。涉及的因素很多,除非你知道自己在做什么,否则你什么都不懂。我完全建议你先清楚地理解什么是密码学,以及在做任何其他事情之前对称密码学与非对称密码学之间的区别! :) – 2012-03-25 06:35:29

回答

0

对于加密,您可以将(可信)公钥而不是DES密钥传递给该函数。您可以保持加密与现在一样,但不是使用现在替换的DES密钥,而应该使用随机数生成器生成此密钥。然后,您可以使用PKCS#1 v1.5填充加密DES密钥。最后,你需要某种容器格式来发送加密的DES密钥和密文。

要解密,请使用非对称密钥对的专用密钥来解密DES密钥,然后像现在一样对纯文本进行解密。

请注意,您应该使用IV,不应该使用DES或ECB模式加密,更好地用UTF-8等替换ASCII等。如果这适用于任何重要性的项目,请寻求专家帮助。如果可能的话,找出一个库函数为你做这一切,例如创建PKCS#7/CMS EncryptedData结构的东西。