我想将文档中的一些excel单元格从序列号转换为该序列号的MD5哈希值。 excel中是否有预编译的公式可以做到这一点,或者是我做VBA的唯一选择。如果是VBA,我该怎么做?
答案 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要执行 谷歌搜索,然后单击 第一个结果。向下滚动很多看 公认的解决方案。
答案 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")))