Skip to content

国密(LJSsm)

前端库:sm-crypto 0.4.0

后端库:hutool-all-5.8.25

SM2

SM2 非对称加密/签名/验签。

生成 SM2 密钥对(公钥+私钥)

方法: generateKeyPair()

返回值(String):生成 SM2 密钥对(公钥+私钥)。

示例
js
this.$LJSsm.SM2Util.generateKeyPair()

公钥加密(常用)

方法: encrypt(data: JSONString, publicKey: String, cipherMode: Number)

返回值(String):加密结果。

示例
js
this.$LJSsm.SM2Util.encrypt(data, publicKey)
参数
参数类型必填默认值说明
dataJSONString需要加密的内容。
publicKeyString公钥。
cipherModeNumber×11 - C1C3C2,0 - C1C2C3,默认为1。

私钥解密(常用)

方法: decrypt(encryptedData: String, privateKey: String, cipherMode: Number)

返回值(String):解密结果。

示例
js
this.$LJSsm.SM2Util.decrypt(encryptedData, privateKey)
参数
参数类型必填默认值说明
encryptedDataString需要解密的内容。
privateKeyString私钥。
cipherModeNumber×11 - C1C3C2,0 - C1C2C3,默认为1。

私钥签名

常用:交易签名、身份认证

方法: sign(data: JSONString, privateKey: String)

返回值(String): 签名。

示例
js
const signature = this.$LJSsm.SM2Util.sign(data, privateKey)

await axios.post("/api/transaction", {
  data: data,    // 原始数据
  sign: signature   // 签名
})

公钥验签

常用:交易签名、身份认证

方法: verify(data: JSONString, signature: String, publicKey: String)

返回值(String): 签名。

示例
js
const signature = this.$LJSsm.SM2Util.verify(data, signature, publicKey)
参数
参数类型必填默认值说明
dataJSONString原始数据。
signatureString签名。
publicKeyString公钥。

SM3

哈希摘要。

计算数据摘要(指纹)

方法: digest(data: String)

返回值(String):解密结果。

示例
js
this.$LJSsm.SM3Util.digest(data)
参数
参数类型必填默认值说明
dataJSONString原始数据。

SM4

对称加密/解密。

生成随机16位密钥(SM4固定128位)

方法: generateKey()

返回值(String):解密结果。

示例
js
this.$LJSsm.SM4Util.generateKey()

加密(常用)

(传输/存储用)

方法: encrypt(data: JSONString, key: String)

返回值(String):加密结果。

示例
js
this.$LJSsm.SM4Util.encrypt(data, key)
参数
参数类型必填默认值说明
dataJSONString需要加密的内容。
keyString公钥。

解密(常用)

方法: decrypt(encryptedData: String, key: String)

返回值(String):解密结果。

示例
js
this.$LJSsm.SM4Util.decrypt(encryptedData, key)
参数
参数类型必填默认值说明
encryptedDataString需要解密的内容。
keyString私钥。

案例1

1 后端提供2对 SM2 公私钥,在登录接口交给前端;公钥:→后端(加密);私钥:→前端(解密);

2 前端访问业务接口,前端生成 SM4 秘钥,用公钥加密传给后端,同时用 SM4 秘钥加密业务数据;后端用对应私钥解密 SM4 秘钥,然后解密数据,处理业务;

3 后端返回给前端的数据,先生成 SM4 秘钥,用公钥加密,返给前端,同时用 SM4 秘钥加密数据;前端用对应的私钥解密 SM4 秘钥,然后解密数据,处理前端业务场景。