これまではVB.NETで記述されていたPythonのハッシュ関数を再実装しようとしています。関数は文字列を受け取り、ハッシュを返します。ハッシュはデータベースに格納されます。同じ10個の文字列が両方の機能のための入力として使用されて e33110e0f494d2cf47700bd204e18f65a48817b9c40113771bf85cc69d04b2d8SHA256は、PythonとVB.NETで値をハッシングすると、異なるハッシュを生成する
返し
def computehash(source):
if source == "":
return ""
m = hashlib.sha256()
m.update(str(source).encode('ascii'))
return m.hexdigest()
: 61ba4908431dfec539e7619d472d7910aaac83c3882a54892898cbec2bbdfa8c
私のPythonの再実装を返し
Public Function computeHash(ByVal source As String)
If source = "" Then
Return ""
End If
Dim sourceBytes = ASCIIEncoding.ASCII.GetBytes(source)
Dim SHA256Obj As New Security.Cryptography.SHA256CryptoServiceProvider
Dim byteHash = SHA256Obj.ComputeHash(sourceBytes)
Dim result As String = ""
For Each b As Byte In byteHash
result += b.ToString("x2")
Next
Return result
。
関数が異なるハッシュを返す理由を知ることができますか?
バイトを見てください。それはちょうどエンコーディングが異なっている可能性があります – Plutonix
空の文字列(VB.NETコードの変更が必要)または問題を絞り込むために1バイトをハッシュすることから始めることがあります。 –