VB.Net使用RSA加密

时间:2012-03-25 06:15:59

标签: vb.net encryption rsa

无论如何,我可以将其转换为使用RSA加密吗?我对VB.Net有点新意,加密时更糟糕。感谢

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

1 个答案:

答案 0 :(得分:0)

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

要解密,请使用非对称密钥对的私钥解密DES密钥,然后按原样执行纯文本的解密。

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