Comment décrypter une chaîne cryptée avec HMACSHA1?
Je suis un chiffrement novice en essayant de transmettre certaines valeurs et en arrière entre les systèmes. Je peux chiffrer la valeur, mais n'arrive pas à comprendre comment les décrypter à l'autre extrémité. J'ai créé une application Windows Forms simple à l'aide de VB.NET. En essayant d'entrée d'une valeur et d'une clé, crypter et décrypter pour obtenir la valeur d'origine. Voici mon code jusqu'à présent. Toute aide grandement appréciée. Merci.
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
OriginalL'auteur | 2010-03-12
Vous devez vous connecter pour publier un commentaire.
HMAC-SHA1 est un de hachage, pas une bidirectionnel le chiffrement algorithme. Vous ne pouvez pas déchiffrer. Je n'ai pas le temps de fournir un code de chiffrement ici - c'est un sujet compliqué, mais Barry Dorrans' "Début ASP.NET de Sécurité" vous donnera un bon point de départ. (Seulement certains de il est ASP.NET-spécifique.) Vous pouvez aussi regarder son DDD parler sur le sujet.
Sha-1 est un hachage à sens unique. HMAC-SHA1 est un code d'authentification de message. Ceux-ci sont clairement pas la même chose. Il serait vraiment aider à être un peu plus précis.
c'est un sujet compliqué- Pour le disque, il y a le code et pseudo-code pour hmac_hash de mise en œuvre de wikipédia.
Que ressens quand Jon Skeet réponses que vous avez une question... Nous avons tous l'envie vous, chers déjà-ami disparu.
OriginalL'auteur Jon Skeet
Juste pour élargir sur Jon réponse, parce que vous vous demandez probablement ce que le point est de chiffrer quelque chose que vous ne pouvez pas déchiffrer - HMAC-SHA1 est, comme Jon a dit, une table de hachage. La chaîne produit ne contient pas les informations d'origine, même sous forme cryptée... C'est juste une séquence d'octets.
La beauté de la table de hachage est, cependant, que toute sorte de changement que vous pourriez faire dans la chaîne sera presque certainement entraîner un changement dans le résultat du hachage, et le résultat du hachage tend à être relativement faible. Pour cette raison, les hashs sont souvent utilisés pour s'assurer qu'un élément d'information n'a pas été falsifié.
Par exemple,
Je veux envoyer Jon ici un message et je veux être sûr que l'un de ses camarades n'a pas changé le message avant sa lecture. Je ne peux pas il suffit de prendre la valeur de hachage de mon message et l'envoyer, parce que tous les ennuis causante avez à faire est de remplacer le message par l'un des leurs, et de fournir un hash...
Cependant, si j'offre mon message avec une valeur de hachage pas de message en lui-même, mais plutôt de le message avec quelques octets supplémentaires que John et moi avons convenu à l'avance, le fauteur de trouble est vaincu. Jon sait à ajouter les octets supplémentaires (communément connu comme le salage, la valeur de hachage) avant qu'il hachages de mon message, mais le problème causante n'est pas - donc, si il change le message, même s'il travaille sur son propre hash, Jon pouvez voir que quelque chose cloche...
Encyryption /Hachages sont une délicate entreprise, et j'ai à peine gratté la surface de moi - même-mais j'ai pensé que cela pourrait vous donner un exemple simple de ce que les hachages sont utilisés pour...
Un autre usage très fréquent est pour le maintien de l'appartenance à un site d'information - les gens n'ont pas stocker le mot de passe, mais plutôt le hachage du mot de passe. Cela signifie que même si quelqu'un parvient à nick vos données utilisateur, ils ne sont pas en mesure de l'utiliser pour vous connecter à votre système.
Martin
Pas de problème de contrainte...
OriginalL'auteur Martin Milan
Un simple one-way hash explication quant à pourquoi les gens ont envie de le faire.
Disons que vous avez un compte d'utilisateur avec le nom d'utilisateur John et le mot de passe Doe. Vous stockez la valeur de hachage de la chaîne suivante.
Prénom, votre numéro préféré, et de leur mot de passe choisi
par exemple: hash= myHash("john7@mot de passe")
Maintenant que hachage est bloqué et ne peut pas être renversée en arrière pour comprendre ce que votre numéro préféré est dans la plupart des cas. Pour vérifier si le hachage est la bonne pour vous connecter, vous feriez re-hachage de l'intrant fourni (nom,votre numéro ou w/e, mot de passe) et si vous obtenez exactement la même hash, son valide affaire. wo0t n'est-il pas complètement simple!
--dois-je utiliser la même clé pour re-hachage de mes données?
OriginalL'auteur sean