Busco a una clase general de cifrado de cadena en .NET. (No debe confundirse con la clase 'SecureString'.)general cadena de cifrado
Empecé a crear mi propia clase, pero pensé que debe haber una clase .NET que ya le permita encriptar/desencriptar cadenas de cualquier codificación con cualquier proveedor de servicios criptográficos.
Public Class SecureString
Private key() As Byte
Private iv() As Byte
Private m_SecureString As String
Public ReadOnly Property Encrypted() As String
Get
Return m_SecureString
End Get
End Property
Public ReadOnly Property Decrypted() As String
Get
Return Decrypt(m_SecureString)
End Get
End Property
Public Sub New(ByVal StringToSecure As String)
If StringToSecure Is Nothing Then StringToSecure = ""
m_SecureString = Encrypt(StringToSecure)
End Sub
Private Function Encrypt(ByVal StringToEncrypt As String) As String
Dim result As String = ""
Dim bytes() As Byte = Text.Encoding.UTF8.GetBytes(StringToEncrypt)
Using provider As New AesCryptoServiceProvider()
With provider
.Mode = CipherMode.CBC
.GenerateKey()
.GenerateIV()
key = .Key
iv = .IV
End With
Using ms As New IO.MemoryStream
Using cs As New CryptoStream(ms, provider.CreateEncryptor(), CryptoStreamMode.Write)
cs.Write(bytes, 0, bytes.Length)
cs.FlushFinalBlock()
End Using
result = Convert.ToBase64String(ms.ToArray())
End Using
End Using
Return result
End Function
Private Function Decrypt(ByVal StringToDecrypt As String) As String
Dim result As String = ""
Dim bytes() As Byte = Convert.FromBase64String(StringToDecrypt)
Using provider As New AesCryptoServiceProvider()
Using ms As New IO.MemoryStream
Using cs As New CryptoStream(ms, provider.CreateDecryptor(key, iv), CryptoStreamMode.Write)
cs.Write(bytes, 0, bytes.Length)
cs.FlushFinalBlock()
End Using
result = Text.Encoding.UTF8.GetString(ms.ToArray())
End Using
End Using
Return result
End Function
End Class
Uhm, necesita pasar IV para el descifrado. – Migol
@Migol - ¿Podría aclarar aún más su comentario? – user111370
IV se puede enviar a través de texto operativo y contiene algunos datos distintos de la clave para descifrar la cadena. – Migol