溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

VB.NET中怎么實現(xiàn)字符串加密解密

發(fā)布時間:2021-07-20 11:40:48 來源:億速云 閱讀:451 作者:Leah 欄目:編程語言

這篇文章給大家介紹VB.NET中怎么實現(xiàn)字符串加密解密,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

VB.NET字符串加密解密的安全說明:

與 DES 相比,Rijndael(現(xiàn)在稱為“高級加密標準”[AES])和“三重數(shù)據(jù)加密標準”(3DES) 算法提供的安全性更高,原因是破解它們所需的計算量更大。有關(guān)更多信息,請參見 DES 和 Rijndael。

創(chuàng)建加密包裝器

將加密命名空間的導(dǎo)入語句添加到文件開頭。

  1. Visual Basic  

  2. Imports System.
    Security.Cryptography 

創(chuàng)建用來封裝加密和解密方法的類。

  1. Visual Basic  

  2. Public NotInheritable 
    Class Simple3Des  

  3. End Class 

添加用來存儲 3DES 加密服務(wù)提供程序的私有字段。

  1. Visual Basic  

  2. Private TripleDes As New 
    TripleDESCryptoServiceProvider 

添加私有方法,該方法將從指定密鑰的哈希創(chuàng)建指定長度的字節(jié)數(shù)組。

  1. Visual Basic  

  2. Private Function TruncateHash( _  

  3. ByVal key As String, _  

  4. ByVal length As Integer) _  

  5. As Byte()  

  6. Dim sha1 As New SHA1Crypto
    ServiceProvider  

  7. ' Hash the key.  

  8. Dim keyBytes() As Byte = _ 

  9. System.Text.Encoding.Unicode.
    GetBytes(key)  

  10. Dim hash() As Byte = sha1.
    ComputeHash(keyBytes)  

  11. ' Truncate or pad the hash.  

  12. ReDim Preserve hash(length - 1)  

  13. Return hash  

  14. End Function 

添加用來初始化 3DES 加密服務(wù)提供程序的構(gòu)造函數(shù)。

key 參數(shù)控制 EncryptData 和 DecryptData 方法。

  1. Visual Basic  

  2. Sub New(ByVal key As String)  

  3. ' Initialize the crypto
     provider.  

  4. TripleDes.Key = TruncateHash
    (key, TripleDes.KeySize \ 8)  

  5. TripleDes.IV = TruncateHash
    ("", TripleDes.BlockSize \ 8)  

  6. End Sub 

添加VB.NET字符串加密解密之加密的公共方法。

  1. Visual Basic  

  2. Public Function EncryptData( _  

  3. ByVal plaintext As String) _  

  4. As String  

  5. ' Convert the plaintext 
    string to a byte array.  

  6. Dim plaintextBytes() As Byte = _ 

  7. System.Text.Encoding.Unicode.
    GetBytes(plaintext)  

  8. ' Create the stream.  

  9. Dim ms As New System.IO.MemoryStream  

  10. ' Create the encoder to 
    write to the stream.  

  11. Dim encStream As New CryptoStream(ms, _  

  12. TripleDes.CreateEncryptor(), _  

  13. System.Security.Cryptography.
    CryptoStreamMode.Write)  

  14. ' Use the crypto stream to write 
    the byte array to the stream.  

  15. encStream.Write(plaintextBytes, 0, 
    plaintextBytes.Length)  

  16. encStream.FlushFinalBlock()  

  17. ' Convert the encrypted stream 
    to a printable string.  

  18. Return Convert.ToBase64String
    (ms.ToArray)  

  19. End Function 

添加VB.NET字符串加密解密之解密的公共方法。

  1. Visual Basic  

  2. Public Function DecryptData( _  

  3. ByVal encryptedtext As String) _  

  4. As String  

  5. ' Convert the encrypted text 
    string to a byte array.  

  6. Dim encryptedBytes() As Byte = 
    Convert.FromBase64String(encryptedtext)  

  7. ' Create the stream.  

  8. Dim ms As New System.IO.MemoryStream  

  9. ' Create the decoder to write to the stream.  

  10. Dim decStream As New CryptoStream(ms, _  

  11. TripleDes.CreateDecryptor(), _  

  12. System.Security.Cryptography.
    CryptoStreamMode.Write)  

  13. ' Use the crypto stream to write 
    the byte array to the stream.  

  14. decStream.Write(encryptedBytes, 0, 
    encryptedBytes.Length)  

  15. decStream.FlushFinalBlock()  

  16. ' Convert the plaintext stream to a string.  

  17. Return System.Text.Encoding.Unicode.
    GetString(ms.ToArray)  

  18. End Function 

包裝類現(xiàn)在可用來保護用戶資產(chǎn)了。在本示例中,它用于在可公開訪問的文本文件中安全地存儲私有用戶數(shù)據(jù)。

測試VB.NET字符串加密解密包裝器

在其他類中添加一個方法,該方法將使用包裝器的 EncryptData 方法為字符串加密,并將它寫入用戶的“我的文檔”文件夾。

  1. Visual Basic  

  2. Sub TestEncoding()  

  3. Dim plainText As String = 
    InputBox("Enter the plain text:")  

  4. Dim password As String = 
    InputBox("Enter the password:")  

  5. Dim wrapper As New Simple3Des
    (password)  

  6. Dim cipherText As String = 
    wrapper.EncryptData(plainText)  

  7. MsgBox("The cipher text is: " & 
    cipherText)  

  8. My.Computer.FileSystem.WriteAllText( _  

  9. My.Computer.FileSystem.Special
    Directories.MyDocuments & _  

  10. "\cipherText.txt", cipherText, False)  

  11. End Sub 

添加一個方法,該方法將從用戶的“我的文檔”文件夾讀取加密字符串,并使用包裝器的 DecryptData 方法為字符串解密。

  1. Visual Basic  

  2. Sub TestDecoding()  

  3. Dim cipherText As String = 
    My.Computer.FileSystem.ReadAllText( _  

  4. My.Computer.FileSystem.Special
    Directories.MyDocuments & _  

  5. "\cipherText.txt")  

  6. Dim password As String = 
    InputBox("Enter the password:")  

  7. Dim wrapper As New Simple3Des
    (password)  

  8. ' DecryptData throws if the 
    wrong password is used.  

  9. Try  

  10. Dim plainText As String = 
    wrapper.DecryptData(cipherText)  

  11. MsgBox("The plain text is: " 
    & plainText)  

  12. Catch ex As System.Security.
    Cryptography.CryptographicException  

  13. MsgBox("The data could not be
     decrypted with the password.")  

  14. End Try  

  15. End Sub 

添加用于調(diào)用 TestEncoding 和 TestDecoding 方法的用戶界面代碼。

關(guān)于VB.NET中怎么實現(xiàn)字符串加密解密就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI