最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端使用國密sm2和sm4進行加解密代碼示例

 更新時間:2025年04月09日 09:46:17   作者:喜歡代碼的新之助  
在前端實現(xiàn)加密算法時,需要特別注意密鑰的安全存儲和管理,不應將敏感的密鑰硬編碼在前端代碼中,這篇文章主要介紹了前端使用國密sm2和sm4進行加解密的相關資料,需要的朋友可以參考下

國密SM加密

  • 國密SM:國密算法,即國家商用密碼算法。是由國家密碼管理局認定和公布的密碼算法標準及其應用規(guī)范,其中部分密碼算法已經(jīng)成為國際標準。如SM系列密碼,SM代表商密,即商業(yè)密碼,是指用于商業(yè)的、不涉及國家秘密的密碼技術。

安裝SM加密依賴

npm install --save sm-crypto
或
npm install --save sm-crypto --legacy-peer-deps   

SM2

封裝

  • 將sm2的加密解密方法進行封裝,文件命名為sm2.js
    // 引入
    const sm2 = require('sm-crypto').sm2
    const cipherMode = 0 // 1 - C1C3C2,0 - C1C2C3,默認為1
    
    // 后端會生成密鑰對
    // publicKey:公鑰 后端提供
    // privateKey:私鑰 后端提供
    const publicKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    const privateKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    
    // 加密
    // value:需要加密的內容
    export function encrypt (value) {
    	// 給后端傳值時需要在加密的密文前面加04 ,這樣后端才能解密正確不報錯
    	return '04' + sm2.doEncrypt(value, publicKey, cipherMode)
    }
    
    // 解密
    // value:需要解密的密文
    export function decrypt (value) {
    	// 后端傳輸過來的密文開頭的兩個字符通常也為04,因此解密時需要刪除
    	return sm2.doDecrypt(value.slice(2, value.length), privateKey, cipherMode)
    }
    

使用

	// 引入sm2.js,注意文件路徑不要出錯
	import { encrypt, decrypt } from './sm2'

	// data:需要加密的數(shù)據(jù)
	// encryptData:加密后的密文
	// 若有需要則將js對象轉換為字符串后進行加密:JSON.stringify(data)
	const encryptData = encrypt(JSON.stringify(data))

	// data:需要解密的密文
	// decryptData:解密后的數(shù)據(jù)
	// 若解密結果為json字符串,則可以通過JSON.parse()方法將解密結果轉化為json對象
	const decryptData = decrypt(data)

SM4

封裝

  • 將sm4的加密解密方法進行封裝,文件命名為sm4.js

    const SM4 = require("sm-crypto").sm4;
    
    const pwdKey = "xxxx"; //密鑰 前后端一致,后端提供
    let sm4Config = {
      key: pwdKey,
      mode: "ecb",  // 加密的方式有兩種,ecb和cbc兩種,看后端如何定義的,cbc需要iv參數(shù),ecb不用
      iv: '1234567891011121', // 初始向量,cbc模式的第二個參數(shù),也需要跟后端配置的一致
      cipherType: "base64"
    };
    
    const sm4Util = new SM4(sm4Config); // new一個sm4函數(shù),將上面的sm4Config作為參數(shù)傳遞進去。
        
    /* 
     * 加密工具函數(shù)
     * @param {String} text 待加密文本
     */
    export function encrypt(text) {
      return sm4Util.encrypt(text, pwdKey);
    }
    
    /*
     * 解密工具函數(shù)
     * @param {String} text 待解密密文
     */
     export function decrypt(text) {
      return sm4Util.decrypt(text, pwdKey);
    }
    

使用

	// 引入asm4.js,注意文件路徑不要出錯
	import { encrypt,decrypt } from "./sm4"

	// data:需要加密的數(shù)據(jù)
	// encryptData:加密后的密文
	// 若有需要則將js對象轉換為字符串后進行加密:JSON.stringify(data)
	const encryptData = encrypt(JSON.stringify(data))

	// data:需要解密的密文
	// decryptData:解密后的數(shù)據(jù)
	// 若解密結果為json字符串,則可以通過JSON.parse()方法將解密結果轉化為json對象
	const decryptData = decrypt(data)

總結 

到此這篇關于前端使用國密sm2和sm4進行加解密的文章就介紹到這了,更多相關前端國密sm2和sm4加解密內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • js猜數(shù)字小游戲的簡單實現(xiàn)代碼

    js猜數(shù)字小游戲的簡單實現(xiàn)代碼

    這篇文章介紹了js猜數(shù)字小游戲的簡單實現(xiàn)代碼,很好玩的游戲哦,可以看看你的智商 是否驚人額
    2013-07-07
  • JavaScript輸出斐波那契數(shù)列的實現(xiàn)方法

    JavaScript輸出斐波那契數(shù)列的實現(xiàn)方法

    斐波那契數(shù)列來源于兔子繁殖問題,所以也叫兔子序列,下面這篇文章主要給大家介紹了關于JavaScript輸出斐波那契數(shù)列的實現(xiàn)方法,需要的朋友可以參考下
    2021-06-06
  • 原生JS實現(xiàn)LOADING效果

    原生JS實現(xiàn)LOADING效果

    這篇文章主要向大家介紹了原生JS實現(xiàn)的LOADING效果的代碼,效果非常不錯,而且可以自定義顏色和速度,推薦給大家,希望大家能夠喜歡。
    2015-03-03
  • 為什么說JavaScript預解釋是一種毫無節(jié)操的機制詳析

    為什么說JavaScript預解釋是一種毫無節(jié)操的機制詳析

    這篇文章主要給大家介紹了關于為什么說JavaScript預解釋是一種毫無節(jié)操的機制的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧
    2018-11-11
  • 微信小程序停止其他視頻播放當前視頻的實例代碼

    微信小程序停止其他視頻播放當前視頻的實例代碼

    這篇文章主要介紹了微信小程序停止其他視頻播放當前視頻的實例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • Typescript中extends關鍵字的基本使用

    Typescript中extends關鍵字的基本使用

    extends表示具體的泛型類型只能是object類型,某個變量如果能斷言成object類型[變量as object],那么這個變量的類型符合T extends object,下面這篇文章主要給大家介紹了關于Typescript中extends關鍵字基本使用的相關資料,需要的朋友可以參考下
    2022-08-08
  • 微信小程序 頁面跳轉傳值實現(xiàn)代碼

    微信小程序 頁面跳轉傳值實現(xiàn)代碼

    這篇文章主要介紹了微信小程序 頁面跳轉傳值實現(xiàn)代碼的相關資料,這里分析實現(xiàn)的條件及實例代碼,需要的朋友可以參考下
    2017-07-07
  • 如何實現(xiàn)axios的自定義適配器adapter

    如何實現(xiàn)axios的自定義適配器adapter

    Axios是一個非常優(yōu)秀的基于promise的HTTP庫,可以用在瀏覽器和node.js中。并且提供了很多便捷的功能,但如果我們想基于axios 擴展一些自己的數(shù)據(jù)請求方式(例如某些APP內專屬的數(shù)據(jù)請求方式等),并能夠使用上axios提供的便捷功能,該怎么自定義一個適配器adapter
    2021-05-05
  • JavaScript實現(xiàn)按鍵精靈的原理分析

    JavaScript實現(xiàn)按鍵精靈的原理分析

    這篇文章主要介紹了JavaScript實現(xiàn)按鍵精靈的原理分析,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • BootstrapValidator不觸發(fā)校驗的實現(xiàn)代碼

    BootstrapValidator不觸發(fā)校驗的實現(xiàn)代碼

    BootstrapValidator是基于bootstrap3的jquery表單驗證插件,是最適合bootstrap框架的表單驗證插件,本文給大家介紹BootstrapValidator不觸發(fā)校驗的實現(xiàn)代碼,感興趣的朋友一起看看吧
    2016-09-09

最新評論

永仁县| 铁岭县| 余干县| 子长县| 屯昌县| 济阳县| 东阳市| 高要市| 仙桃市| 基隆市| 千阳县| 化德县| 电白县| 丰县| 报价| 肇东市| 濉溪县| 疏附县| 齐齐哈尔市| 旅游| 依安县| 呈贡县| 巴中市| 赞皇县| 霍山县| 古浪县| 白水县| 昌吉市| 汉中市| 黎平县| 常州市| 高雄县| 资阳市| 东阿县| 加查县| 尚志市| SHOW| 汕尾市| 张家界市| 合作市| 新乡县|