# BouncyCastle.SM3 库模块帮助文档

[📄 BouncyCastle 用户手册 aardio 版）](https://www.aardio.com/zh-cn/docs/library-guide/ext/BouncyCastle/)

## BouncyCastle.SM3 成员列表 <a id="BouncyCastle.SM3" href="#BouncyCastle.SM3">&#x23;</a>

国密 SM3 哈希算法扩展库。  

相关库: crypt.sm4, BouncyCastle.SM2

### BouncyCastle.SM3.BLOCK_SIZE <a id="BouncyCastle.SM3.BLOCK_SIZE" href="#BouncyCastle.SM3.BLOCK_SIZE">&#x23;</a>
SM3 块大小：64 字节（512 位）

### BouncyCastle.SM3.DIGEST_LENGTH <a id="BouncyCastle.SM3.DIGEST_LENGTH" href="#BouncyCastle.SM3.DIGEST_LENGTH">&#x23;</a>
SM3 输出长度：32 字节（256 位）

### BouncyCastle.SM3.createDigest() <a id="BouncyCastle.SM3.createDigest" href="#BouncyCastle.SM3.createDigest">&#x23;</a>
创建可增量更新的 SM3 哈希对象  
返回哈希对象，包含 update、final、finalHex、finalBase64、reset、digest、digestHex 等方法

### BouncyCastle.SM3.createHmac <a id="BouncyCastle.SM3.createHmac" href="#BouncyCastle.SM3.createHmac">&#x23;</a>
创建可增量更新的 HMAC-SM3 对象

### BouncyCastle.SM3.createHmac(key) <a id="BouncyCastle.SM3.createHmac" href="#BouncyCastle.SM3.createHmac">&#x23;</a>
参数 @key 指定密钥（字符串或 buffer）  
返回 HMAC 对象，包含 update、final、finalHex、finalBase64、reset 等方法

### BouncyCastle.SM3.hash <a id="BouncyCastle.SM3.hash" href="#BouncyCastle.SM3.hash">&#x23;</a>
计算 SM3 哈希值

### BouncyCastle.SM3.hash(data) <a id="BouncyCastle.SM3.hash" href="#BouncyCastle.SM3.hash">&#x23;</a>
参数 @data 指定字符串或 buffer  
返回哈希值（buffer 类型，32字节）

### BouncyCastle.SM3.hashBase64 <a id="BouncyCastle.SM3.hashBase64" href="#BouncyCastle.SM3.hashBase64">&#x23;</a>
计算 SM3 哈希值并返回 Base64 字符串

### BouncyCastle.SM3.hashBase64(data) <a id="BouncyCastle.SM3.hashBase64" href="#BouncyCastle.SM3.hashBase64">&#x23;</a>
参数 @data 指定字符串或 buffer  
返回哈希值的 Base64 编码字符串

### BouncyCastle.SM3.hashFile <a id="BouncyCastle.SM3.hashFile" href="#BouncyCastle.SM3.hashFile">&#x23;</a>
计算文件的 SM3 哈希值

### BouncyCastle.SM3.hashFile(filePath,bufferSize) <a id="BouncyCastle.SM3.hashFile" href="#BouncyCastle.SM3.hashFile">&#x23;</a>
参数 @filePath 指定文件路径  
参数 @bufferSize 可选，指定缓冲区大小，默认 1MB  
返回文件哈希值（buffer 类型，32字节）

### BouncyCastle.SM3.hashFileBase64 <a id="BouncyCastle.SM3.hashFileBase64" href="#BouncyCastle.SM3.hashFileBase64">&#x23;</a>
计算文件的 SM3 哈希值并返回 Base64 字符串

### BouncyCastle.SM3.hashFileBase64(filePath,bufferSize) <a id="BouncyCastle.SM3.hashFileBase64" href="#BouncyCastle.SM3.hashFileBase64">&#x23;</a>
参数 @filePath 指定文件路径  
参数 @bufferSize 可选，指定缓冲区大小，默认 1MB  
返回文件哈希值的 Base64 编码字符串

### BouncyCastle.SM3.hashFileHex <a id="BouncyCastle.SM3.hashFileHex" href="#BouncyCastle.SM3.hashFileHex">&#x23;</a>
计算文件的 SM3 哈希值并返回十六进制字符串

### BouncyCastle.SM3.hashFileHex(filePath,bufferSize) <a id="BouncyCastle.SM3.hashFileHex" href="#BouncyCastle.SM3.hashFileHex">&#x23;</a>
参数 @filePath 指定文件路径  
参数 @bufferSize 可选，指定缓冲区大小，默认 1MB  
返回文件哈希值的十六进制字符串（64个字符）

### BouncyCastle.SM3.hashHex <a id="BouncyCastle.SM3.hashHex" href="#BouncyCastle.SM3.hashHex">&#x23;</a>
计算 SM3 哈希值并返回十六进制字符串

### BouncyCastle.SM3.hashHex(data,lower) <a id="BouncyCastle.SM3.hashHex" href="#BouncyCastle.SM3.hashHex">&#x23;</a>
参数 @data 指定字符串或 buffer  
返回哈希值的十六进制字符串（64个字符）。  
可选指定 @lower 为 true 将返回值转为小写。

### BouncyCastle.SM3.hmac <a id="BouncyCastle.SM3.hmac" href="#BouncyCastle.SM3.hmac">&#x23;</a>
计算 HMAC-SM3

### BouncyCastle.SM3.hmac(data,key) <a id="BouncyCastle.SM3.hmac" href="#BouncyCastle.SM3.hmac">&#x23;</a>
参数 @data 指定字符串或 buffer  
参数 @key 指定密钥（字符串或 buffer）  
返回 HMAC 值（buffer 类型，32字节）

### BouncyCastle.SM3.hmacBase64 <a id="BouncyCastle.SM3.hmacBase64" href="#BouncyCastle.SM3.hmacBase64">&#x23;</a>
计算 HMAC-SM3 并返回 Base64 字符串

### BouncyCastle.SM3.hmacBase64(data,key) <a id="BouncyCastle.SM3.hmacBase64" href="#BouncyCastle.SM3.hmacBase64">&#x23;</a>
参数 @data 指定字符串或 buffer  
参数 @key 指定密钥（字符串或 buffer）  
返回 HMAC 值的 Base64 编码字符串

### BouncyCastle.SM3.hmacHex <a id="BouncyCastle.SM3.hmacHex" href="#BouncyCastle.SM3.hmacHex">&#x23;</a>
计算 HMAC-SM3 并返回十六进制字符串

### BouncyCastle.SM3.hmacHex(data,key,lower) <a id="BouncyCastle.SM3.hmacHex" href="#BouncyCastle.SM3.hmacHex">&#x23;</a>
参数 @data 指定字符串或 buffer  
参数 @key 指定密钥（字符串或 buffer）  
返回 HMAC 值的十六进制字符串（64个字符）。  
可选指定 @lower 为 true 将返回值转为小写。

### BouncyCastle.SM3.kdf <a id="BouncyCastle.SM3.kdf" href="#BouncyCastle.SM3.kdf">&#x23;</a>
密钥派生函数

### BouncyCastle.SM3.kdf(data,salt,iterations,keyLength) <a id="BouncyCastle.SM3.kdf" href="#BouncyCastle.SM3.kdf">&#x23;</a>
参数 @data 指定输入数据（字符串或 buffer）  
参数 @salt 指定盐值（字符串或 buffer）  
参数 @iterations 可选，迭代次数，默认 1000  
参数 @keyLength 可选，派生密钥长度，默认 32 字节  
返回派生的密钥（buffer 类型）

### BouncyCastle.SM3.verify <a id="BouncyCastle.SM3.verify" href="#BouncyCastle.SM3.verify">&#x23;</a>
验证哈希值

### BouncyCastle.SM3.verify(data,expectedHash) <a id="BouncyCastle.SM3.verify" href="#BouncyCastle.SM3.verify">&#x23;</a>
参数 @data 指定数据（字符串或 buffer）  
参数 @expectedHash 指定期望的哈希值（buffer 或十六进制字符串）  
返回布尔值，表示验证是否通过

### BouncyCastle.SM3.verifyHmac <a id="BouncyCastle.SM3.verifyHmac" href="#BouncyCastle.SM3.verifyHmac">&#x23;</a>
验证 HMAC

### BouncyCastle.SM3.verifyHmac(data,key,expectedHmac) <a id="BouncyCastle.SM3.verifyHmac" href="#BouncyCastle.SM3.verifyHmac">&#x23;</a>
参数 @data 指定数据（字符串或 buffer）  
参数 @key 指定密钥（字符串或 buffer）  
参数 @expectedHmac 指定期望的 HMAC 值（buffer 或十六进制字符串）  
返回布尔值，表示验证是否通过
