excel中的MD5哈希函数?

时间:2010-08-17 00:01:29

标签: excel md5

我想将文档中的一些excel单元格从序列号转换为该序列号的MD5哈希值。 excel中是否有预编译的公式可以做到这一点,或者是我做VBA的唯一选择。如果是VBA,我该怎么做?

2 个答案:

答案 0 :(得分:10)

问题Password hash function for Excel VBA中的某些链接现已破裂。以下是该问题的已接受答案的更新版本:

  

您将找到VB的实现   和VBScript在这里:
  http://web.archive.org/web/20080526064101/http://www.frez.co.uk/freecode.htm#md5

     

我相信移植到Excel会非常容易。

     

然而有人已经这样做了。不幸的是解决方案是在   专家交流,不允许   直接链接。所以我们得走了   通过谷歌。 Click here要执行   谷歌搜索,然后单击   第一个结果。向下滚动很多看   公认的解决方案。

来源:Password hash function for Excel VBA

答案 1 :(得分:0)

我看到这个问题很老,但我需要类似的东西,尽管我可以分享我如何解决这个问题。

创建一个模块并插入以下代码:

Function stringToUTFBytes(aString)
    Dim UTF8
    Set UTF8 = CreateObject("System.Text.UTF8Encoding")
    stringToUTFBytes = UTF8.GetBytes_4(aString)
End Function
Function md5hashBytes(aBytes)
    Dim MD5
    Set MD5 = CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")
    md5hashBytes = MD5.ComputeHash_2((aBytes))
End Function
Function bytesToHex(aBytes)
    Dim hexStr, x
    For x = 1 To LenB(aBytes)
        hexStr = Hex(AscB(MidB((aBytes), x, 1)))
        If Len(hexStr) = 1 Then hexStr = "0" & hexStr
        bytesToHex = bytesToHex & hexStr
    Next
End Function

要调用 MD5,您可以使用:

bytesToHex(md5hashBytes(stringToUTFBytes("change here")))