html引入vue.js DES加密、解密

https://www.bootcdn.cn/crypto-js/
标准的js加密库下载crypto-js文件,里面还有更多其他加密方法的文件,今天主要是使用des加密

新建crypto-js.js:

const key = CryptoJS.enc.Utf8.parse("hbxxcxhdlm"); // 十六位十六进制数作为密钥
const iv = CryptoJS.enc.Utf8.parse("hbxxjyjt");  // 十六位十六进制数作为密钥偏移量 CBC模式下用到, ECB模式不用

// 解密方法
// DES解密算法, 必须为base64格式才能解密,如果为16进制,需要先转为base64
function Decrypt(word) {
  let decrypt = CryptoJS.DES.decrypt(word, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  });
  return decrypt.toString(CryptoJS.enc.Utf8);
}

// 加密方法
function Encrypt(word) {
  var srcs = CryptoJS.enc.Utf8.parse(word);
  var encrypted = CryptoJS.DES.encrypt(srcs, key, {
    mode: CryptoJS.mode.CBC, // 加密模式
    padding: CryptoJS.pad.Pkcs7, // 填充方式
    iv: iv // 偏移向量
  });
  return encrypted.toString();
}

export const DC = (message) => {
  // console.log("测试测测试测试");
  // console.log(message);
  // console.log(message instanceof Array);
  var obj = {}
  if (typeof message == 'object') {
    // console.log("是对象或者数组");
    for (let i in message) {
      if (typeof message[i] == 'object') {
        for (let j in message[i]) {
          if (typeof message[i][j] == 'object') {
            // console.log("三维");
            // console.log(message[i][j]);
            for (let x in message[i][j]) {
              if (typeof message[i][j][x] == 'object') {
                // console.log("四维");
                for (let k in message[i][j][x]) {
                  if (typeof message[i][j][x][k] == 'object') {
                    for (let l in message[i][j][x][k]) {
                      message[i][j][x][k][l] = decryptDes(
                        message[i][j][x][k][l]
                      )
                    }
                  } else {
                    // console.log(message[i][j][x][k]);
                    message[i][j][x][k] = decryptDes(message[i][j][x][k])
                    // console.log(message[i][j][x][k]);
                  }
                }
              } else {
                message[i][j][x] = decryptDes(message[i][j][x])
              }
            }
          } else {
            // console.log("二维");
            message[i][j] = decryptDes(message[i][j])
            // console.log(message[i][j])
          }
        }
      } else {
        message[i] = decryptDes(message[i])
      }
    }
  } else {
    // console.log("是字符串");
    message = decryptDes(message)
  }

  return message
}

export const EC = (message) => {
  if (typeof message == 'object') {
    for (let i in message) {
      if (typeof message[i] == 'object') {
        for (let j in message[i]) {
          if (typeof message[i][j] == 'object') {
            for (let x in message[i][j]) {
              message[i][j][x] = encryptDes(message[i][j][x])
            }
          } else {
            message[i][j] = encryptDes(message[i][j])
          }
        }
      } else {
        message[i] = encryptDes(message[i])
      }
    }
  } else {
    message = encryptDes(message)
  }
  return message
}

html:

<script src="js/CryptoJS.min.js"></script> 
<script src="js/crypto-js.js"></script>
<script  type="text/babel">
	var myApp = new Vue({
	el: '#app',
	data: {},
	methods: {
		doEncrypt () {
			var title = encodeURIComponent(Encrypt('标题标题'))
			// Encrypt 直接引用
			/*数据加密后有的数据会有'+'等字符提交数据时会变成空格
			使用encodeURIComponent(str)对加密后数据进行编码 提交后数据不会有改变 功能才可以正常使用 */
		}
	}
</script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值