亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

前端使用國密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:需要加密的內(nèi)容
    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對象轉(zhuǎn)換為字符串后進行加密:JSON.stringify(data)
	const encryptData = encrypt(JSON.stringify(data))

	// data:需要解密的密文
	// decryptData:解密后的數(shù)據(jù)
	// 若解密結果為json字符串,則可以通過JSON.parse()方法將解密結果轉(zhuǎn)化為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對象轉(zhuǎn)換為字符串后進行加密:JSON.stringify(data)
	const encryptData = encrypt(JSON.stringify(data))

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

總結 

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

相關文章

  • javascript URL錨點取值方法

    javascript URL錨點取值方法

    url取值的比較不錯的思路,一般都是這樣的話,或直接先將?替換成統(tǒng)計分隔符,js數(shù)組一定要特別熟悉。
    2009-02-02
  • JS模式之單例模式基本用法

    JS模式之單例模式基本用法

    這篇文章主要介紹了JS模式之單例模式基本用法,實例分析了javascript單例模式的基本實現(xiàn)方法,需要的朋友可以參考下
    2015-06-06
  • js實現(xiàn)無縫滾動特效

    js實現(xiàn)無縫滾動特效

    這篇文章主要介紹了js實現(xiàn)無縫滾動特效,結合已學知識進行擴展性練習,感興趣的朋友可以參考一下
    2015-12-12
  • javascript函數(shù)式編程程序員的工具集

    javascript函數(shù)式編程程序員的工具集

    函數(shù)式編程語言一向被認為是比其它編程語言更高深的語言。一是因為函數(shù)式編程語言的語法很另類,比如Lisp語言,二是因為函數(shù)式編程語言都很古老,比如Schema語言。在如今面向?qū)ο笳Z言大行其道的時代,函數(shù)式編程語言有其特殊的優(yōu)勢
    2015-10-10
  • Javascript 實用小技巧

    Javascript 實用小技巧

    都是一些非常不錯的js 小技巧,學習js的朋友一定要看下,有很多不錯的代碼。
    2010-04-04
  • JavaScript制作簡單網(wǎng)頁計算器

    JavaScript制作簡單網(wǎng)頁計算器

    這篇文章主要為大家詳細介紹了JavaScript制作簡單網(wǎng)頁計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 微信小程序?qū)崿F(xiàn)的圖片保存功能示例

    微信小程序?qū)崿F(xiàn)的圖片保存功能示例

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)的圖片保存功能,結合實例形式分析了微信小程序wx.downloadFile({})及wx.saveImageToPhotosAlbum({})函數(shù)圖片保存功能相關使用技巧,需要的朋友可以參考下
    2019-04-04
  • JS模擬并美化的表單控件完整實例

    JS模擬并美化的表單控件完整實例

    這篇文章主要介紹了JS模擬并美化的表單控件實現(xiàn)方法,涉及javascript結合css樣式美化表單的功能,非常美觀實用,需要的朋友可以參考下
    2015-08-08
  • JS簡單生成隨機數(shù)(隨機密碼)的方法

    JS簡單生成隨機數(shù)(隨機密碼)的方法

    這篇文章主要介紹了JS簡單生成隨機數(shù)(隨機密碼)的方法,簡單分析了javascript隨機數(shù)相關函數(shù)并結合具體實例形式分析了隨機數(shù)的相關生成技巧,需要的朋友可以參考下
    2017-05-05
  • JavaScript獲取數(shù)組最后一個元素的3種方法以及性能

    JavaScript獲取數(shù)組最后一個元素的3種方法以及性能

    在開發(fā)過程中,我們常常需要得到js數(shù)組的最后一個數(shù)組元素,下面這篇文章主要給大家介紹了關于JavaScript獲取數(shù)組最后一個元素的3種方法以及性能,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-06-06

最新評論