Soy un principiante de encriptación que intenta pasar algunos valores entre sistemas. Puedo encriptar el valor, pero parece que no puedo descifrar cómo descifrarlo en el otro extremo. Creé una aplicación simple de Windows Forms usando VB.NET. Intentando ingresar un valor y una clave, encripta y luego descifra para obtener el valor original. Aquí está mi código hasta ahora. Cualquier ayuda muy apreciada. Gracias.¿Cómo descifrar una cadena cifrada con HMACSHA1?
Imports System
Imports System.IO
Imports System.Security.Cryptography
Imports System.Text
Public Class Form1
Private Sub btnEncode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEncode.Click
Dim hmacsha1 As New HMACSHA1(Encoding.ASCII.GetBytes(txtKey.Text))
Dim hashValue As Byte() = hmacsha1.ComputeHash(Encoding.ASCII.GetBytes(txtValue.Text))
txtResult.Text = BytesToHexString(hashValue)
hmacsha1.Clear()
End Sub
Private Sub btnDecode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDecode.Click
'???
End Sub
Private Function BytesToHexString(ByVal bytes As Byte()) As String
Dim output As String = String.Empty
Dim i As Integer = 0
Do While i < bytes.Length
output += bytes(i).ToString("X2")
i += 1
Loop
Return output
End Function
End Class
Gracias por la información, Jon. –
Sha-1 es un hash de un solo sentido. HMAC-SHA1 es un código de autenticación de mensaje. Esos claramente no son lo mismo. Realmente ayudaría a ser un poco más preciso. – Accipitridae
* es un tema complicado * - Para el registro, hay código y pseudocódigo para la implementación de hmac_hash [en wikipedia] (http://en.wikipedia.org/wiki/Hash-based_message_authentication_code). – automaton