网关和加解密

项目需求:

需要对我们现有的项目进行加解密处理,选择 sm2 来进行,并通过 jwt 密钥来对应接口的请求进行加密

在这里插入图片描述

参考资料

具体可以百度一下 什么是 sm2 加密 jwt 的身份授权
在这里插入图片描述
在这里插入图片描述

具体步骤

1. 引入 sm.js 文件

具体的js 文件上传了,可以自己下载

在这里插入图片描述
在public/index.js 中引入sm.js文件,让正常加载

在这里插入图片描述

2.在 utils /encrypt.js 中封装需要使用的加解密函数

在这里插入图片描述
具体代码如下

// 处理大数据精度丢失问题
// var JSONbig = require('json-bigint');
import JSONBig from 'json-bigint' 
const JSONbigString = JSONBig({ storeAsString: true}) 
/* 公钥 */
var publicKey = '自己公司的公钥'
/* 私钥 */
var privateKey = '自己公司的私钥'

/* 分割字符串 */
function splitStr (str) {
  var len = Math.ceil(str.length / 100000)
  var arr = Array(len)
  var i = 0
  for (; i < len; i++) {
    // //console.log('index: %s, len: %s, str: %s', i, len, str.length)
    arr[i] = str.substring(0, 100000)
    if (i < len) {
      str = str.substring(100000, str.length)
    }
  }
  return arr
}

/**
 * SM2加密
 */
export function encryptSM2$$2 (word) {
  var str = btoa(encodeURIComponent(JSON.stringify(word)))
  var arrStr = splitStr(str).map(s => window.SG_sm2Encrypt(s, publicKey))
  return arrStr.join('|')
}
/**
 * SM3哈希
 */
export function encryptSM3$$2 (word) {
  return window.SG_sm3encrypt(word)
}
/**
 * SM2解密
 */
export function decryptSM2$$2 (word) {
  var strs = word.split('|').map(s => window.SG_sm2Decrypt(s, privateKey))
  // var json = JSON.parse(decodeURIComponent(atob(strs.join(''))))
  // var json = JSON.parse(strs)
  var json1 =JSONbigString.parse(strs)
  return json1
}


3.在request.js中引入,用来做请求拦截,和响应拦截的 请求参数 响应参数的加密解密

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

注意 !!!

在 .html 文件中引入

//错误 会导致异步问题,页面加载了,但是这个文件还没有加载成功的问题
<script src="./cdn/sm.js" charset="utf-8"></script>  ×  会导致异步问题

//正确 
使用 <%= BASE_URL %> 动态引入脚本文件可以 
在模板引擎中将<%= BASE_URL %> 替换为实际的根路径,确保 
sm.js 文件在其他脚本文件之前正确加载,从而解决了 
window.SG_sm2Encrypt is not a function 的问题。
这种引入方式可以在刷新页面时保持一致的加载顺序,确保依赖关系正确并且所需函数可用,进而避免出现函数未定义的错误。

<script src="<%= BASE_URL %>cdn/sm.js" charset="utf-8"></script>
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网关加解密攻击是指攻击者利用漏洞或弱点,对网络中的网关设备进行攻击,以获取加密的数据或篡改数据的过程。这种攻击可能会导致敏感信息泄露、数据篡改、身份伪造等安全问题。 攻击者可以利用多种方式进行网关加解密攻击,包括但不限于以下几种: 1. 中间人攻击:攻击者通过欺骗网关和终端设备之间的通信,将自己置于通信路径中,并以两者之间的代理身份进行通信。这使得攻击者能够获取加密通信中的数据,或者篡改数据。 2. 重放攻击:攻击者截获网络中的加密数据包,并将其重新发送到目标网关。这可能导致网关误认为数据包是合法的,并解密或执行相应的操作。攻击者可以利用这种方式重复发送已知数据包,从而实现攻击目的。 3. 密钥破解:攻击者可能尝试通过暴力破解或其他方式获取网关使用的加密密钥。一旦密钥被破解,攻击者就可以解密和篡改经过网关的加密数据。 为了防止网关加解密攻击,可以采取以下措施: 1. 强化网络安全:定期对网关设备进行漏洞扫描和安全评估,及时修补漏洞和弱点,确保设备的安全性。 2. 密钥管理:使用强密码和密钥管理机制,定期更换密钥,并确保密钥的安全存储和传输。 3. 加密协议选择:选择安全可靠的加密协议,如TLS/SSL等,并配置正确的加密参数,以提高通信的安全性。 4. 监测和检测:部署入侵检测系统(IDS)和入侵防御系统(IPS),实时监测网关设备的网络流量和行为,及时检测并阻止潜在的攻击。 5. 用户教育:加强用户的安全意识和培训,防止社会工程学攻击和钓鱼攻击,减少人为因素对网关安全的影响。 请注意,以上措施只是一些基本建议,并不能完全保证网关的安全。实际应用中,还需要根据具体情况制定更为细化和全面的安全策略。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值