vue3(TS)登录账号和密码进行加密 (crypto-js)要求:aes cbc 填充模式: PKCS7 , base64URL格式

记得先安装crypto-js依赖

npm install crypto-js
npm install --save @types/crypto-js

1.在utils下新建一个AES-Pkcs7.ts文件 用来封装加密方法

import CryptoJS from 'crypto-js'
 
export interface CrypotoType {
  encrypt: any
  decrypt: any
}

export default class Crypoto implements CrypotoType {
  key = CryptoJS.enc.Utf8.parse('123456789') // 这里找后端要
  iv = CryptoJS.enc.Utf8.parse('987654321') // 这里找后端要

  /* 加密 */
  encrypt(word: any) {
    const srcs = CryptoJS.enc.Utf8.parse(word)
    const encrypted = CryptoJS.AES.encrypt(srcs, this.key, { iv: this.iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
    const ciphertext = encrypted.ciphertext.toString(CryptoJS.enc.Base64url) // 将加密结果转换为 Base64URL 格式 确认后端要的是Base64URL 还是Base64 这两种编码格式不一样
    return ciphertext
  }
}

2.在你的login.vue页面引入

import Crypoto from '@/utils/util/AES-Pkcs7';

const cry: any = new Crypoto()

let loginInfo = ref({
  account: '',
  password: '',
})

const loginClick = (value: string) =>{

  //加密 账号密码格式:
//`{"account":"test_account","password":"test_passwd"}`

  const dataItem: any = {
    account: loginInfo.value.account, // 
    password: loginInfo.value.password,
  }

  const encryptData = cry.encrypt(JSON.stringify(dataItem))

// 这里根据后端要求格式来传  加密之后:
//{
//  "data": "j-D9FSdnAca4Q1R8oc0jiOkZ3Ex47Lts7EixKNuWoZ_hcq2B0_D9rhqF9KCq_oRsv0__iP2F7AJfTw5eaXua5Q"
//}
  getUserLogin({data:encryptData}).then((res:any)=>{
    ...
  }) 
}

<InputItem title="账号">
        <XInput ref="adminRef" v-model="loginInfo.account" type="text" :regex="/^.+$/"</XInput>
</InputItem>
InputItem title="密码">
  <XInput ref="passwordRef" v-model="loginInfo.password" type="password":regex="/^.+$/"></XInput>
</InputItem>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值