Skip to content

Hash 哈希方法参考

📋 方法列表

传统方式

方法说明
ComputeHash计算字符串哈希(返回 Hex)
ComputeHashBytesToHex计算字节数组哈希(返回 Hex)
ComputeHashBytes计算字节数组哈希(返回字节数组)
ComputeFileHash计算文件哈希

链式调用方式

方法说明
Mode设置哈希算法
DataString输入字符串数据
DataBytes输入字节数组数据
ReturnHex返回 Hex 格式结果
ReturnBase64返回 Base64 格式结果
ReturnBytes返回字节数组结果

🔧 ComputeHash 方法

说明

计算字符串的哈希值,返回十六进制字符串。

语法

vb
Public Function ComputeHash(ByVal Text As String, _
                            Optional ByVal Algorithm As CryptoHashAlgorithm, _
                            Optional ByVal Encoding As CryptoStringEncoding = ENCODING_UTF8) As String

参数

参数类型说明
TextString要哈希的文本字符串
AlgorithmCryptoHashAlgorithm可选,哈希算法(默认使用类属性值)
EncodingCryptoStringEncoding可选,字符串编码(默认 UTF8)

使用示例

vb
Dim Hash As New cCryptoHash

' 默认 SHA256
Dim result As String
result = Hash.ComputeHash("Hello World")

' 指定 MD5
result = Hash.ComputeHash("Hello World", HASH_ALG_MD5)

' 指定 ANSI 编码
result = Hash.ComputeHash("Hello World", HASH_ALG_SHA256, ENCODING_ANSI)

📦 ComputeHashBytes 方法

说明

计算字节数组的哈希值,返回原始字节数组。

语法

vb
Public Function ComputeHashBytes(ByRef Data() As Byte, _
                                 Optional ByVal Algorithm As CryptoHashAlgorithm) As Byte()

使用示例

vb
Dim Hash As New cCryptoHash
Dim data() As Byte
Dim result() As Byte

' 准备字节数组
data = StrConv("Hello World", vbFromUnicode)

' 计算哈希
result = Hash.ComputeHashBytes(data)

' 结果长度
Debug.Print "Hash length: " & UBound(result) + 1  ' SHA256 = 32 bytes

📁 ComputeFileHash 方法

说明

计算文件的哈希值(二进制模式读取),返回十六进制字符串。

语法

vb
Public Function ComputeFileHash(ByVal FilePath As String, _
                                 Optional ByVal Algorithm As CryptoHashAlgorithm) As String

使用示例

vb
Dim Hash As New cCryptoHash
Dim fileHash As String

' 计算文件哈希
fileHash = Hash.ComputeFileHash("C:\data.txt")
Debug.Print "File SHA256: " & fileHash

' 指定算法
fileHash = Hash.ComputeFileHash("C:\data.txt", HASH_ALG_MD5)

⛓️ 链式调用方法

Mode 方法

设置哈希算法,开始链式调用。

vb
Public Function Mode(ByVal Algorithm As CryptoHashAlgorithm) As cCryptoHash

DataString 方法

输入字符串数据。

vb
Public Function DataString(ByVal Text As String, _
                          Optional ByVal Encoding As CryptoStringEncoding = ENCODING_UTF8) As cCryptoHash

DataBytes 方法

输入字节数组数据。

vb
Public Function DataBytes(ByRef Data() As Byte) As cCryptoHash

ReturnHex 方法

返回十六进制格式的哈希值。

vb
Public Function ReturnHex(Optional ByVal UpperCase As Boolean = False) As String

ReturnBase64 方法

返回 Base64 格式的哈希值。

vb
Public Function ReturnBase64() As String

ReturnBytes 方法

返回字节数组格式的哈希值。

vb
Public Function ReturnBytes() As Byte()

📌 链式调用示例

基本链式调用

vb
Dim Hash As New cCryptoHash
Dim result As String

' 完整链式调用
result = Hash.Mode(HASH_ALG_SHA256) _
            .DataString("Hello World") _
            .ReturnHex()

省略 Mode(使用默认 SHA256)

vb
result = Hash.DataString("Hello World").ReturnHex()

多种格式输出

vb
' 设置数据和算法
Hash.Mode(HASH_ALG_SHA256).DataString("Hello World")

' 获取不同格式(不重复计算)
Debug.Print "Hex: " & Hash.ReturnHex()
Debug.Print "Hex(Upper): " & Hash.ReturnHex(True)
Debug.Print "Base64: " & Hash.ReturnBase64()

字节数组输入

vb
Dim data() As Byte
data = StrConv("Hello World", vbFromUnicode)

result = Hash.Mode(HASH_ALG_SHA256) _
            .DataBytes(data) _
            .ReturnHex()

📌 使用场景总结

密码存储(推荐 SHA256)

vb
Private Function HashPassword(ByVal password As String, ByVal salt As String) As String
    Dim Hash As New cCryptoHash
    
    ' 密码 + 盐值
    Dim saltedPassword As String
    saltedPassword = password & salt
    
    ' 使用 SHA256
    HashPassword = Hash.ComputeHash(saltedPassword, HASH_ALG_SHA256)
End Function

文件完整性校验

vb
Private Function VerifyFileIntegrity(ByVal filePath As String, ByVal expectedHash As String) As Boolean
    Dim Hash As New cCryptoHash
    Dim actualHash As String
    
    ' 计算文件哈希
    actualHash = Hash.ComputeFileHash(filePath, HASH_ALG_SHA256)
    
    ' 比较(不区分大小写)
    VerifyFileIntegrity = (LCase(actualHash) = LCase(expectedHash))
End Function

数据签名前哈希

vb
Private Function PrepareDataForSigning(ByVal data As String) As Byte()
    Dim Hash As New cCryptoHash
    
    ' 计算哈希并返回字节数组
    PrepareDataForSigning = Hash.Mode(HASH_ALG_SHA256) _
                                  .DataString(data) _
                                  .ReturnBytes()
End Function

最后更新: 2026-05-17

VB6及其LOGO版权为微软公司所有