sm4加密,其实就是将字符串转成byte数组,再设置一个与解密相同的字符串,将byte的数据再转成二级制的数据,进行异或的运算,得到一组没有规则的字符串!

概述

sm4加密有两种模式:ecb和cbc。两种模式的区别如下(下面文字来自百度):

一、优bai点不同:

ECB模式:1、简单;2、有利于并行计算;3、误差不会bai被传送;

CBC模式:1、不容易主动攻击,安全性好于baiECB,适合传输长度长的报文,是SSL、IPSec的标准。

二、缺点不同:

ECB模式:1、不能隐藏明文的模式;2、可能对明文进行主动攻击;

CBC模式:1、不利于并行计算;2、误差传递;3、需要初始化向量IV

三、概念不同

1、ECB模式又称电子密码本模式:Electronic codebook,是最简单的块密码加密模式,加密前根据加密块大小(如AES为128位)分成若干块,之后将每块使用相同的密钥单独加密,解密同理。

2、密码分组链接(CBC,Cipher-block chaining)模式,由IBM于1976年发明,每个明文块先与前一个密文块进行异或后,再进行加密。在这种方法中,每个密文块都依赖于它前面的所有明文块。同时,为了保证每条消息的唯一性,在第一个块中需要使用初始化向量IV。

使用

这里只介绍ecb模式的使用:

加密过程中,需要依赖于base64js相关方法。

相关js文件可从这里下载:链接: https://pan.baidu.com/s/1RfDe079I6n46spyw-mzDKg 提取码: vei2

其中包含base64js和SM4Encode文件

其中SM4Encode文件有所改动:

1、将两个文件下载下来并放到同一个文件夹下

2、在需要用到的地方引入方法

const {sm4}=await import("../../utils/SM4Encode.js")

 3、调用encrypt_ecb方法进行加密

let _pwd=sm4.encrypt_ecb(加密明文,加密key值)

问题

在vue-cli3.0中会发现,使用require引入的base64js无效

原因是vue-cli3默认禁止common.js,使用babel解决解禁。具体操作如下:

安装@babel/plugin-transform-modules-commonjs

npm i @babel/plugin-transform-modules-commonjs -D

修改babel.config.js配置文件

module.exports = {
  presets: [
    '@vue/app'
  ],
  plugins: [
    [
    '@babel/plugin-transform-modules-commonjs',
      {
      allowTopLevelThis: true,
      },
    ],
  ],
}

 

Logo

前往低代码交流专区

更多推荐