Python .Net 的 MD5 函数

Python MD5 Function to .Net

我正在尝试将 Python 脚本转换为 .net,这是一个接受输入密码并将其转换为可用于登录 IP 摄像机的密码字符串的函数。我相信这在我的测试中效果很好;

    md5 = hashlib.md5(bytes(password, "utf-8")).digest()
    chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    return "".join([chars[sum(x) % 62] for x in zip(md5[::2], md5[1::2])])

恐怕我对 Python 的了解并不多,我唯一的另一个例子是 Perl,我对它的了解为零。我到这里不是很远 - 我真的不明白最后一行实际上在做什么 - 某种子串然后取某种反数值?

Private Function Calculate_Hash(Password As String) As String

    Dim DVR_Hash As MD5 = MD5.Create()

    Dim DVR_Hash_Bytes() As Byte = DVR_Hash.ComputeHash(Encoding.UTF8.GetBytes("password"))

    Log(BitConverter.ToString(DVR_Hash_Bytes).Replace("-", String.Empty))

    Return "" 'needs to be implemented

End Function

有没有人可以帮助我?

谢谢

假设您非常擅长 vb.net,但问题是您不了解 python 语法。
所以让我以 non-pythonic 的方式重写 python 脚本。

pythonic

res = "".join([chars[sum(x) % 62] for x in zip(md5[::2], md5[1::2])])

non-pythonic

res = ''
i = 0
while i < len(md5):
    sum_value = md5[i] + md5[i + 1]
    res += chars[sum_value % 62]
    i += 2

vb.net

    Sub Main()
        Dim md5Hash As MD5 = MD5.Create()
        Dim md5Bytes() As Byte = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(password))
        Dim chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".ToCharArray()
        Dim res As String
        Dim i = 0
        Dim sum As Integer
        While i < md5Bytes.Length
            sum = CInt(md5Bytes(i)) + CInt(md5Bytes(i + 1))
            res += chars(sum Mod 62)
            i += 2
        End While
        Console.WriteLine(res)
    End Sub