Question

Je suis un novice de chiffrement essayant de transmettre des valeurs et-vient entre les systèmes. Je peux chiffrer la valeur, mais ne peut pas sembler comprendre comment déchiffrer à l'autre bout. J'ai créé une simple application Windows Forms en utilisant VB.NET. Essayer d'entrer une valeur et une clé, puis Crypter 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
Était-ce utile?

La solution

HMAC-SHA1 est à sens unique hachage , pas un bidirectionnel le cryptage algorithme. Vous ne pouvez pas le déchiffrer. Je n'ai pas le temps de fournir le code complet de cryptage ici - c'est un sujet compliqué, mais Barry Dorrans' "a partir de sécurité ASP.NET" pourrait vous donner un bon point de départ. (Seulement certaines d'entre elles est. Spécifique à ASP.NET) Vous pouvez aussi regarder son DDD parler sur le sujet.

Autres conseils

Juste pour développer la réponse de Jon, 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 dit, un hachage. La chaîne produit ne contient pas les informations d'origine, même sous forme cryptée ... Il est juste une séquence d'octets.

La beauté du hachage est cependant que toute sorte de changement que vous pourriez faire dans la chaîne entraînera certainement un changement dans le résultat de hachage, et le résultat de hachage a tendance à être assez faible. Pour cette raison, hashs sont souvent utilisés pour faire en sorte que une information n'a pas été falsifié.

Par exemple,

Je veux envoyer un message Jon ici - et je veux qu'il soit convaincu que l'un de ses compagnons n'a pas changé le message avant sa lecture. Je ne peux pas prendre le hachage de mon message et d'envoyer ce long, parce qu'un Causer trouble tout devrait faire est de remplacer le message avec l'un des leurs, et de fournir un hachage approprié ...

Cependant, si je fournir mon message avec un hachage non du message lui-même, mais plutôt du message avec quelques octets supplémentaires spécifiques que John et moi avons convenu à l'avance, le fauteur de troubles est vaincu. Jon sait ajouter les octets supplémentaires (communément appelés le salage du hachage) avant qu'il ne hash mon message, mais le Causer du mal à ne pas - s'il change le message, même si il travaille son propre hash, Jon peut voir que quelque chose ... ne tourne pas rond

Encyryption / hashs sont une entreprise Checklist, et je l'ai à peine effleuré la surface moi-même - mais je pensais que cela pourrait vous donner un exemple simple de ce hash sont utilisés pour ...

Une autre utilisation très courante est pour le maintien de l'information des membres du site - les gens ne stockent pas le mot de passe, mais le hachage du mot de passe. Cela signifie que même si quelqu'un parvient à nick vos données d'utilisateur, ils ne sont pas en mesure de l'utiliser pour se connecter à votre système.

Martin

Un simple de hachage explaination sens pour expliquer pourquoi les gens veulent le faire.

Disons que vous avez un compte d'utilisateur avec le nom d'utilisateur et mot de passe John Doe. Vous pouvez stocker le hachage de la chaîne suivante.

Prénom, votre numéro préféré, et leur mot de passe sélectionné

par exemple: hash = myHash ( "john7 @ mot de passe")

             now hash = "qk239qa*@$)(*84509053903" or whatever

Maintenant que hachage est sécurisé et ne peut pas être inversé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 souhaitez re-hachage l'entrée fourni (nom, votre numéro ou w / e, mot de passe) et si vous obtenez le même hachage exacte, est un accord valide. wo0t isnt complètement simple,

- dois-je utiliser la même clé pour re-hachage mes données?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top