どのように文字列を復号暗号化されHMACSHA1?
-
19-09-2019 - |
質問
私は暗号化に初めてパスの一部値を往復するシステム。での暗号化の価値ができないように行う暗号解読をしています。私が簡単なWindows Formsを使用VB.NET.て入力値を鍵暗号化して復号化をオリジナルの値です。こちらは自分のコードです。のお役に立てるようぞよろしくお願い申し上げます。感謝。
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
解決
HMAC-SHA1できるようにしたり ハッシュ, ではなく、双方向 暗号化 アルゴリズムです。できませんが復号します。思っていた時にホーガン-ロヴェルズの暗号コードはこちらではの複雑な課題でしたが、ハーモニーランドのパスポートDorrans' "開始ASP.NET セキュリティ" てください。(一部のみでASP.純、特に設計されています。) このまま彼の腕時計 DDD話 成長を続けていきます。
他のヒント
ただ、Jonの答えに展開します。生成された文字列は、それは単なるバイトのシーケンスです...でも、暗号化された形式で、元の情報が含まれていません。
ハッシュの美しさは、しかし、あなたが文字列になるかもしれない変更の任意の並べ替えは、ほぼ確実にハッシュ結果の変化をもたらすだろうということで、ハッシュ結果はかなり小さくなる傾向があります。このため、hashsは、多くの場合、情報の一部が改ざんされていないことを保証するために使用されます。
例えば、
私はここでメッセージをジョンを送りたい - と私は彼が彼の仲間の一つは前に彼はそれを読んへのメッセージを変更していないことを確信することにしたいです。私はちょうど私のメッセージのハッシュを取ると一緒にそれを送って、すべてのトラブルコーサーがしなければならないだろうのでれる自分自身のいずれかでメッセージを交換し、適切なハッシュを提供することはできません...
しかし、私はしませんメッセージ自体のハッシュに私のメッセージを供給するのではなく、ジョンと私は事前に合意しているいくつかの特定の余分なバイトとメッセージの、トラブルメーカーが敗北した場合。ジョンは彼が私のメッセージをハッシュする前に(一般的にハッシュを塩漬けとして知られている)余分なバイトを追加するために知っているが、トラブルコーサーはない - そう、彼は彼が彼自身のハッシュをうまくいくにもかかわらず、メッセージを変更した場合、ジョンはその何かを見ることができますされて気を悪く...
Encyryption /ハッシュは手間のかかる事業であり、私はやっと表面を自分で傷が付いている - しかし、私はこれはあなたのために...使用されているどのようなハッシュの簡単な例を与えるかもしれないと思った。
人々は、パスワードを保存しないのではなく、パスワードのハッシュ -別の非常に一般的な使用は、サイトのメンバーシップ情報を維持するためです。これは、誰かがニックにユーザーデータを管理する場合でも、彼らはあなたのシステムにログインするためにそれを使用することができないことを意味します。
マーティン
人々はそれをしたいと思う理由として、単純な一方向ハッシュ、について説明します。
ユーザー名とパスワードジョン・ドウを使用してユーザアカウントを持っているとしましょう。あなたは、次の文字列のハッシュを格納します。
まず名前、お好みの数、およびそれらの選択パスワード
例:ハッシュ= myHash( "john7する@パスワード")
now hash = "qk239qa*@$)(*84509053903" or whatever
今、そのハッシュは、安全であり、あなたのお気に入りの数は、ほとんどの場合であるかを把握するために戻って逆転され傾けます。ハッシュは、ログインするための正しいものであるかどうかを確認するには、供給された入力(名前、あなたの番号またはW / E、パスワード)をハッシュし直すだろうと、あなたは正確に同じハッシュ、その有効な契約を得る場合。それは完全にシンプルイマイチwo0t!
- 私は再ハッシュするために自分のデータを同じ鍵を使用する必要がありますか?