国密 SM4 对称加密算法扩展库。
相关库: crypt.sm4, BouncyCastle.SM2, BouncyCastle.SM3
创建 SM4 算法工具。
参数 @mode:加密模式(大写字符串),可指定为 "ECB","CBC","CTR","GCM","OFB","CFB" 之一。
默认的附加认证数据(Additional Authenticated Data),仅 GCM 模式需要指定。
用于指定 encryptFile、decryptFile 函数读写文件的缓冲区大小。
默认 1MB
创建解密流对象
参数 @key 可选,指定密钥,不指定则使用 key 属性
参数 @iv 可选,初始化向量,不指定则使用 initVector 属性或自动生成
返回解密流对象,包含 update、final 方法
创建加密流对象
参数 @key 可选,指定密钥,不指定则使用 key 属性
参数 @iv 可选,初始化向量,不指定则使用 initVector 属性或自动生成
返回加密流对象,包含 update、final 方法和 iv 属性
SM4 解密
参数 @encryptedData 指定要解密的数据(字符串或 buffer)
参数 @key 可选,指定密钥,不指定则使用 key 属性。
参数 @iv 可选,非 ECB 模式的初始化向量,不指定则使用 initVector 属性。
如果 @iv 为空字符串 "" 或者 @iv 参数与 initVector 属性都是 null 值,则从加密数据头部读取 IV。
参数 @aad 可选,GCM 模式的附加认证数据,不指定则使用 aad 属性。
返回解密后的数据(buffer 类型)
从 Base64 字符串解密
参数 @base64Data 指定 Base64 格式的密文
参数 @key 可选,指定密钥,不指定则使用 key 属性
参数 @iv 可选,非 ECB 模式的初始化向量,不指定则使用 initVector 属性
如果 @iv 为空字符串 "" 或者 @iv 参数与 initVector 属性都是 null 值,则从密文头部读取 IV
参数 @aad 可选,GCM 模式的附加认证数据,不指定则使用 aad 属性
返回解密后的数据(buffer 类型)
文件解密
参数 @inputPath 指定输入文件路径。
参数 @outputPath 指定输出文件路径。
参数 @key 可选,指定密钥,不指定则使用 key 属性。
参数 @iv 可选,非 ECB 模式的初始化向量,不指定则使用 initVector 属性。
如果 @iv 为空字符串 "" 或者 @iv 参数与 initVector 属性都是 null 值,则从文件头部读取 IV。
返回布尔值,表示是否成功
从十六进制字符串解密
参数 @hexData 指定十六进制格式的密文
参数 @key 可选,指定密钥,不指定则使用 key 属性
参数 @iv 可选,非 ECB 模式的初始化向量,不指定则使用 initVector 属性
如果 @iv 为空字符串 "" 或者 @iv 参数与 initVector 属性都是 null 值,则从密文头部读取 IV
参数 @aad 可选,GCM 模式的附加认证数据,不指定则使用 aad 属性
返回解密后的数据(buffer 类型)
密钥派生函数(基于 SM3)
参数 @password 指定密码(字符串或 buffer)
参数 @salt 指定盐值(字符串或 buffer)
参数 @iterations 可选,迭代次数,默认 1000
参数 @keyLength 可选,派生密钥长度(字节),默认 16 字节
返回派生的密钥(buffer 类型)
SM4 加密
参数 @data 指定要加密的数据(字符串或 buffer)
参数 @key 可选,指定密钥,不指定则使用 key 属性。
参数 @iv 可选,非 ECB 模式的初始化向量,不指定则使用 initVector 属性或自动生成。
参数 @aad 可选,GCM 模式的附加认证数据,不指定则使用 aad 属性。
返回加密后的数据,非 ECB 模式时返回两个值:密文,IV
SM4 加密并返回 Base64 字符串
参数 @data 指定要加密的数据(字符串或 buffer)
参数 @key 可选,指定密钥,不指定则使用 key 属性
参数 @iv 可选,非 ECB 模式的初始化向量,不指定则使用 initVector 属性或自动生成
参数 @aad 可选,GCM 模式的附加认证数据,不指定则使用 aad 属性
返回加密后的 Base64 字符串
文件加密
参数 @inputPath 指定输入文件路径
参数 @outputPath 指定输出文件路径
参数 @key 可选,指定密钥,不指定则使用 key 属性
参数 @iv 可选,初始化向量,未提供时使用 initVector 属性或自动生成并写入文件。
返回布尔值,表示是否成功
SM4 加密并返回十六进制字符串
参数 @data 指定要加密的数据(字符串或 buffer)
参数 @key 可选,指定密钥,不指定则使用 key 属性
参数 @iv 可选,非 ECB 模式的初始化向量,不指定则使用 initVector 属性或自动生成
参数 @aad 可选,GCM 模式的附加认证数据,不指定则使用 aad 属性
返回加密后的十六进制字符串
生成随机的初始化向量(IV)
返回 16 字节的 IV(buffer 类型)
生成随机的 SM4 密钥
返回 16 字节的密钥(buffer 类型)
初始化向量(字符串或 buffer),
GCM 模式用于指定 Nonce (Number Used Once)。
如果指定 32 位或 24 位(GCM)16 进制编码字符串则自动解码。
否则如果超出或小于 16 字节在加解密时会自动截长补短(补空字符)
16 位默认密钥(字符串或 buffer)。
如果指定 32 个字符的 16 进制编码文本则自动解码,
否则如果超出或小于 16 字节在加解密时会自动截长补短(补空字符)
填充模式,字符串值或 null 值。
可指定为 null、"PKCS7"、"ZEROS"、"ISO10126" 之一。
GCM 模式默认为 null,其他模式默认为 "PKCS7"