Vue3使用SM國產加密庫

npm安裝

npm install --save sm-crypto
//使用
import {sm2,sm3,sm4} from 'sm-crypto'

// ----------- sm2 --------------------
//獲取密鑰對
let keypair = sm2.generateKeyPairHex()

publicKey = keypair.publicKey // 公鑰
privateKey = keypair.privateKey // 私鑰

// 默認生成公鑰 130 位太長,可以壓縮公鑰到 66 位
const compressedPublicKey = sm2.compressPublicKeyHex(publicKey) // compressedPublicKey 和 publicKey 等價
sm2.comparePublicKeyHex(publicKey, compressedPublicKey) // 判斷公鑰是否等價

//加解密
const cipherMode = 1 // 1 - C1C3C2,0 - C1C2C3,默認爲1

let encryptData = sm2.doEncrypt(msgString, publicKey, cipherMode) // 加密結果
let decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode) // 解密結果

encryptData = sm2.doEncrypt(msgArray, publicKey, cipherMode) // 加密結果,輸入數組
decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode, {output: 'array'}) // 解密結果,輸出數組


// ----------- sm3 --------------------
let hashData = sm3('abc') // 雜湊

// hmac
hashData = sm3('abc', {
    key: 'daac25c1512fe50f79b0e4526b93f5c0e1460cef40b6dd44af13caec62e8c60e0d885f3c6d6fb51e530889e6fd4ac743a6d332e68a0f2a3923f42585dceb93e9', // 要求爲 16 進制串或字節數組
})

// ----------- sm4 --------------------
const msg = 'hello world! 我是 juneandgreen.' // 可以爲 utf8 串或字節數組
const key = '0123456789abcdeffedcba9876543210' // 可以爲 16 進制串或字節數組,要求爲 128 比特
 // 加密,默認輸出 16 進制字符串,默認使用 pkcs#7 填充(傳 pkcs#5 也會走 pkcs#7 填充)
let encryptData = sm4.encrypt(msg, key)

// 解密
let decryptData = sm4.decrypt(encryptData, key) // 解密,默認輸出 utf8 字符串,默認使用 pkcs#7 填充(傳 pkcs#5 也會走 pkcs#7 填充)

更說可以查看npm說明:https://www.npmjs.com/package/sm-crypto

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章