您好,登錄后才能下訂單哦!
這篇文章給大家介紹VB.NET中怎么實現(xiàn)字符串加密解密,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
VB.NET字符串加密解密的安全說明:
與 DES 相比,Rijndael(現(xiàn)在稱為“高級加密標準”[AES])和“三重數(shù)據(jù)加密標準”(3DES) 算法提供的安全性更高,原因是破解它們所需的計算量更大。有關(guān)更多信息,請參見 DES 和 Rijndael。
創(chuàng)建加密包裝器
將加密命名空間的導(dǎo)入語句添加到文件開頭。
Visual Basic
Imports System.
Security.Cryptography
創(chuàng)建用來封裝加密和解密方法的類。
Visual Basic
Public NotInheritable
Class Simple3DesEnd Class
添加用來存儲 3DES 加密服務(wù)提供程序的私有字段。
Visual Basic
Private TripleDes As New
TripleDESCryptoServiceProvider
添加私有方法,該方法將從指定密鑰的哈希創(chuàng)建指定長度的字節(jié)數(shù)組。
Visual Basic
Private Function TruncateHash( _
ByVal key As String, _
ByVal length As Integer) _
As Byte()
Dim sha1 As New SHA1Crypto
ServiceProvider' Hash the key.
Dim keyBytes() As Byte = _
System.Text.Encoding.Unicode.
GetBytes(key)Dim hash() As Byte = sha1.
ComputeHash(keyBytes)' Truncate or pad the hash.
ReDim Preserve hash(length - 1)
Return hash
End Function
添加用來初始化 3DES 加密服務(wù)提供程序的構(gòu)造函數(shù)。
key 參數(shù)控制 EncryptData 和 DecryptData 方法。
Visual Basic
Sub New(ByVal key As String)
' Initialize the crypto
provider.TripleDes.Key = TruncateHash
(key, TripleDes.KeySize \ 8)TripleDes.IV = TruncateHash
("", TripleDes.BlockSize \ 8)End Sub
添加VB.NET字符串加密解密之加密的公共方法。
Visual Basic
Public Function EncryptData( _
ByVal plaintext As String) _
As String
' Convert the plaintext
string to a byte array.Dim plaintextBytes() As Byte = _
System.Text.Encoding.Unicode.
GetBytes(plaintext)' Create the stream.
Dim ms As New System.IO.MemoryStream
' Create the encoder to
write to the stream.Dim encStream As New CryptoStream(ms, _
TripleDes.CreateEncryptor(), _
System.Security.Cryptography.
CryptoStreamMode.Write)' Use the crypto stream to write
the byte array to the stream.encStream.Write(plaintextBytes, 0,
plaintextBytes.Length)encStream.FlushFinalBlock()
' Convert the encrypted stream
to a printable string.Return Convert.ToBase64String
(ms.ToArray)End Function
添加VB.NET字符串加密解密之解密的公共方法。
Visual Basic
Public Function DecryptData( _
ByVal encryptedtext As String) _
As String
' Convert the encrypted text
string to a byte array.Dim encryptedBytes() As Byte =
Convert.FromBase64String(encryptedtext)' Create the stream.
Dim ms As New System.IO.MemoryStream
' Create the decoder to write to the stream.
Dim decStream As New CryptoStream(ms, _
TripleDes.CreateDecryptor(), _
System.Security.Cryptography.
CryptoStreamMode.Write)' Use the crypto stream to write
the byte array to the stream.decStream.Write(encryptedBytes, 0,
encryptedBytes.Length)decStream.FlushFinalBlock()
' Convert the plaintext stream to a string.
Return System.Text.Encoding.Unicode.
GetString(ms.ToArray)End Function
包裝類現(xiàn)在可用來保護用戶資產(chǎn)了。在本示例中,它用于在可公開訪問的文本文件中安全地存儲私有用戶數(shù)據(jù)。
測試VB.NET字符串加密解密包裝器
在其他類中添加一個方法,該方法將使用包裝器的 EncryptData 方法為字符串加密,并將它寫入用戶的“我的文檔”文件夾。
Visual Basic
Sub TestEncoding()
Dim plainText As String =
InputBox("Enter the plain text:")Dim password As String =
InputBox("Enter the password:")Dim wrapper As New Simple3Des
(password)Dim cipherText As String =
wrapper.EncryptData(plainText)MsgBox("The cipher text is: " &
cipherText)My.Computer.FileSystem.WriteAllText( _
My.Computer.FileSystem.Special
Directories.MyDocuments & _"\cipherText.txt", cipherText, False)
End Sub
添加一個方法,該方法將從用戶的“我的文檔”文件夾讀取加密字符串,并使用包裝器的 DecryptData 方法為字符串解密。
Visual Basic
Sub TestDecoding()
Dim cipherText As String =
My.Computer.FileSystem.ReadAllText( _My.Computer.FileSystem.Special
Directories.MyDocuments & _"\cipherText.txt")
Dim password As String =
InputBox("Enter the password:")Dim wrapper As New Simple3Des
(password)' DecryptData throws if the
wrong password is used.Try
Dim plainText As String =
wrapper.DecryptData(cipherText)MsgBox("The plain text is: "
& plainText)Catch ex As System.Security.
Cryptography.CryptographicExceptionMsgBox("The data could not be
decrypted with the password.")End Try
End Sub
添加用于調(diào)用 TestEncoding 和 TestDecoding 方法的用戶界面代碼。
關(guān)于VB.NET中怎么實現(xiàn)字符串加密解密就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(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)容。