# crypt.sm4 库模块帮助文档

## crypt 成员列表 <a id="crypt" href="#crypt">&#x23;</a>

### crypt.sm4 <a id="crypt.sm4" href="#crypt.sm4">&#x23;</a>
SM4 国密算法。  
支持 "ECB","CBC","CTR","GCM" 加密模式。  
默认填充模式 PKCS7。  
相关库： BouncyCastle.SM4, BouncyCastle.SM3, BouncyCastle.SM2

### crypt.sm4() <a id="crypt.sm4" href="#crypt.sm4">&#x23;</a>
[返回对象:CryptSm4Object](#CryptSm4Object)

### crypt.sm4(mode,key,iv,aad) <a id="crypt.sm4" href="#crypt.sm4">&#x23;</a>
创建 SM4 算法工具。@- 参数 @mode：加密模式，可指定为 "ECB","CBC","CTR","GCM" 之一。  
- 参数 @key: 16 位密钥（字符串或 buffer），如果指定 16 进制编码文本则自动解码。  
- 参数 @iv： 初始化向量（字符串或 buffer），GCM 模式用于指定 Nonce (Number Used Once)  
如果指定 16 进制编码数值则自动解码。  
- 参数 @aad: 附加认证数据（Additional Authenticated Data）,仅 GCM 模式需要指定。

## CryptSm4Object 成员列表 <a id="CryptSm4Object" href="#CryptSm4Object">&#x23;</a>

### CryptSm4Object.decrypt <a id="CryptSm4Object.decrypt" href="#CryptSm4Object.decrypt">&#x23;</a>
解密。

### CryptSm4Object.decrypt(cipherData) <a id="CryptSm4Object.decrypt" href="#CryptSm4Object.decrypt">&#x23;</a>
解密。  
- 参数 @cipherData 指定待解密数据（字符串或 buffer 类型）。  
非 ECB 模式未指定向量时自密文中读取向量。  

返回解密数据（ buffer 类型）

### CryptSm4Object.decryptBase64 <a id="CryptSm4Object.decryptBase64" href="#CryptSm4Object.decryptBase64">&#x23;</a>
从Base64字符串解密

### CryptSm4Object.decryptBase64(base64text) <a id="CryptSm4Object.decryptBase64" href="#CryptSm4Object.decryptBase64">&#x23;</a>
从Base64字符串解密数据。  
- 参数 @base64text 指定Base64编码的加密数据（字符串类型）。  

返回解密后的原始数据（字符串类型）

### CryptSm4Object.decryptHex <a id="CryptSm4Object.decryptHex" href="#CryptSm4Object.decryptHex">&#x23;</a>
从十六进制字符串解密

### CryptSm4Object.decryptHex(hextext) <a id="CryptSm4Object.decryptHex" href="#CryptSm4Object.decryptHex">&#x23;</a>
从十六进制字符串解密数据。  
- 参数 @hextext 指定十六进制编码的加密数据（字符串类型）。  

返回解密后的原始数据（字符串类型）

### CryptSm4Object.encrypt <a id="CryptSm4Object.encrypt" href="#CryptSm4Object.encrypt">&#x23;</a>
加密

### CryptSm4Object.encrypt(plaintext) <a id="CryptSm4Object.encrypt" href="#CryptSm4Object.encrypt">&#x23;</a>
加密。  
- 参数 @plaintext 指定待加密数据（字符串或 buffer 类型）。  

返回加密数据（ buffer 类型）

### CryptSm4Object.encryptBase64 <a id="CryptSm4Object.encryptBase64" href="#CryptSm4Object.encryptBase64">&#x23;</a>
加密为Base64字符串

### CryptSm4Object.encryptBase64(plaintext) <a id="CryptSm4Object.encryptBase64" href="#CryptSm4Object.encryptBase64">&#x23;</a>
加密数据并返回Base64字符串。  
- 参数 @plaintext 指定待加密数据（字符串或 buffer 类型）。  

返回Base64编码的加密数据（字符串类型）

### CryptSm4Object.encryptHex <a id="CryptSm4Object.encryptHex" href="#CryptSm4Object.encryptHex">&#x23;</a>
加密为十六进制字符串

### CryptSm4Object.encryptHex(plaintext) <a id="CryptSm4Object.encryptHex" href="#CryptSm4Object.encryptHex">&#x23;</a>
加密数据并返回十六进制字符串。  
- 参数 @plaintext 指定待加密数据（字符串或 buffer 类型）。  

返回十六进制编码的加密数据（字符串类型）

### CryptSm4Object.ghash(data,dataLen) <a id="CryptSm4Object.ghash" href="#CryptSm4Object.ghash">&#x23;</a>
GHASH 算法。  
参数 @data 可指定字符串或 buffer。  
参数 @dataLen 可选指定输入数据长度。  
返回 buffer 类型数据。

### CryptSm4Object.padding <a id="CryptSm4Object.padding" href="#CryptSm4Object.padding">&#x23;</a>
填充模式，字符串值，默认值为 "PKCS7"。  
CTR,GCM 模式可设为 null，其他模式忽略此属性。
