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参数
| 参数 | 类型 | 说明 |
|---|---|---|
Text | String | 要哈希的文本字符串 |
Algorithm | CryptoHashAlgorithm | 可选,哈希算法(默认使用类属性值) |
Encoding | CryptoStringEncoding | 可选,字符串编码(默认 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 cCryptoHashDataString 方法
输入字符串数据。
vb
Public Function DataString(ByVal Text As String, _
Optional ByVal Encoding As CryptoStringEncoding = ENCODING_UTF8) As cCryptoHashDataBytes 方法
输入字节数组数据。
vb
Public Function DataBytes(ByRef Data() As Byte) As cCryptoHashReturnHex 方法
返回十六进制格式的哈希值。
vb
Public Function ReturnHex(Optional ByVal UpperCase As Boolean = False) As StringReturnBase64 方法
返回 Base64 格式的哈希值。
vb
Public Function ReturnBase64() As StringReturnBytes 方法
返回字节数组格式的哈希值。
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