1 const SM4 = require("gm-crypt").sm4;
2 let sm4Config = {
3 //配置sm4參數
4 key: "gDg4g8CQyIrs^bv2", //這里這個key值是跟后端要的
5 mode: "ecb", // 加密的方式有兩種,ecb和cbc兩種,也是看后端如何定義的,不過要是cbc的話下面還要加一個iv的參數,ecb不用
6 cipherType: "base64"
7 };
8 let sm4 = new SM4(sm4Config);
1 // 開始加密
2 let username = sm4.encrypt(tmpObj.username);
3 let password = sm4.encrypt(tmpObj.password);
1 概述
2 sm4加密有兩種模式:ecb和cbc。兩種模式的區別如下(下面文字來自百度):
3
4 一、優bai點不同:
5
6 ECB模式:1、簡單;2、有利於並行計算;3、誤差不會bai被傳送;
7
8 CBC模式:1、不容易主動攻擊,安全性好於baiECB,適合傳輸長度長的報文,是SSL、IPSec的標准。
9
10 二、缺點不同:
11
12 ECB模式:1、不能隱藏明文的模式;2、可能對明文進行主動攻擊;
13
14 CBC模式:1、不利於並行計算;2、誤差傳遞;3、需要初始化向量IV
15
16 三、概念不同
17
18 1、ECB模式又稱電子密碼本模式:Electronic codebook,是最簡單的塊密碼加密模式,加密前根據加密塊大小(如AES為128位)分成若干塊,之后將每塊使用相同的密鑰單獨加密,解密同理。
19
20 2、密碼分組鏈接(CBC,Cipher-block chaining)模式,由IBM於1976年發明,每個明文塊先與前一個密文塊進行異或后,再進行加密。在這種方法中,每個密文塊都依賴於它前面的所有明文塊。同時,為了保證每條消息的唯一性,在第一個塊中需要使用初始化向量IV。