相关疑难解决方法(0)

VBA哈希字符串

如何使用Excel VBA获取长字符串的简短哈希

什么是给定的

  • 输入字符串不超过80个字符
  • 有效输入字符为:[0..9] [A_Z]._/
  • 有效输出字符为[0..9] [A_Z] [a_z] (可以使用大小写)
  • 输出哈希值不应超过~12个字符(更短更好)
  • 不需要是唯一的,因为这将导致太长的哈希

到目前为止我做了什么

我认为这个答案是一个很好的开始,因为它生成一个4位十六进制代码(CRC16).

但是4位数字很少.在我的400字符串测试中,20%在其他地方得到了重复.
产生碰撞的机会太高了.

Sub tester()
    For i = 2 To 433
        Cells(i, 2) = CRC16(Cells(i, 1))
    Next i
End Sub


Function CRC16(txt As String)
Dim x As Long
Dim mask, i, j, nC, Crc As Integer
Dim c As String

Crc = &HFFFF

For nC = 1 To Len(txt)
    j = Val("&H" + Mid(txt, nC, 2))
    Crc = Crc Xor j
    For j = 1 …
Run Code Online (Sandbox Code Playgroud)

hash vba excel-2003

14
推荐指数
3
解决办法
4万
查看次数

VBA中的Base64 HMAC SHA1字符串

我正在尝试将ASP/VBScript OAuth库转换为VBA.其中一个挑战是这行代码:

Get_Signature = b64_hmac_sha1(strSecret, strBaseSignature)
Run Code Online (Sandbox Code Playgroud)

该函数b64_hmac_sha1实际上是JavaScript库中包含的函数.在我看来,从VBA调用JavaScript函数是相当不切实际的.

因为我对加密知之甚少,所以我甚至不清楚这个b64_hmac_sha1功能是做什么的.HMAC SHA1与SHA1不同吗?

我怀疑我可以在网上找到一些VBA代码来做我需要做的事情,如果我只是理解这个功能实际上在做什么.如果我找不到现有的函数,我可能会编写一个使用.NET Cryptography库的函数(如果你知道如何,你可以从VBA调用.NET加密库).

我不是在找人将这个JavaScript转换为VBA.我只是想了解这个b64_hmac_sha1函数输出的是什么,所以我可以尝试找到在VBA中实现相同输出的方法(如果可能的话).

此网站上提供了此JavaScript库的副本.您必须向下滚动浏览VBScript到JavaScript部分. http://solstice.washington.edu/solstice/ASP_Signing_REST_Example

编辑1:
好的,所以这里是我写完和使用的函数:

Public Function Base64_HMACSHA1(ByVal sTextToHash As String, ByVal sSharedSecretKey As String)

    Dim asc As Object, enc As Object
    Dim TextToHash() As Byte
    Dim SharedSecretKey() As Byte
    Set asc = CreateObject("System.Text.UTF8Encoding")
    Set enc = CreateObject("System.Security.Cryptography.HMACSHA1")

    TextToHash = asc.Getbytes_4(sTextToHash)
    SharedSecretKey = asc.Getbytes_4(sSharedSecretKey)
    enc.Key = SharedSecretKey

    Dim bytes() As Byte
    bytes = enc.ComputeHash_2((TextToHash))
    Base64_HMACSHA1 = EncodeBase64(bytes)
    Set asc = Nothing
    Set enc = Nothing

End Function

Private Function …
Run Code Online (Sandbox Code Playgroud)

javascript encryption vba hmacsha1

4
推荐指数
1
解决办法
9187
查看次数

标签 统计

vba ×2

encryption ×1

excel-2003 ×1

hash ×1

hmacsha1 ×1

javascript ×1