首页 > Web开发 > 详细

crypto-js加密

时间:2020-05-12 12:54:44      阅读:58      评论:0      收藏:0      [点我收藏+]
为了保证数据库中存储的密码更安全,则需要在后端用多种单向(非对称)加密手段混合进行加密存储。前端加密后端又需要解密,所以需要对称加密算法,即前端使用 encrypted = encrypt(password+key),后端使用 password = decrypt(encrypted +key)前端只传输密码与key加密后的字符串encrypted ,这样即使请求被拦截了,也知道了加密算法,但是由于缺少key所以很难破解出明文密码。所以这个key很关键。而这个key是由后端控制生成与销毁的,用完即失效,所以即使可以模拟用加密后的密码来发请求模拟登录,但是key已经失效了,后端还是验证不过的。
import CryptoJS from ‘crypto-js‘
function getAesString(data, key, iv) { // 加密
  var keys = CryptoJS.enc.Utf8.parse(key)
  var ivs = CryptoJS.enc.Utf8.parse(iv)
  var encrypted = CryptoJS.AES.encrypt(data, keys,
    {
      iv: ivs,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    })
  return encrypted.toString() // 返回的是base64格式的密文
}
function getDAesString(encrypted, key, iv) { // 解密
  var keys = CryptoJS.enc.Utf8.parse(key)
  var ivs = CryptoJS.enc.Utf8.parse(iv)
  var decrypted = CryptoJS.AES.decrypt(encrypted, keys,
    {
      iv: ivs,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    })
  return decrypted.toString(CryptoJS.enc.Utf8)
}

export function getAES(data) { // 加密
  var key = ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA‘ // 密钥
  var iv = ‘1234567812345678‘
  var encrypted = getAesString(data, key, iv) // 密文
  // var encrypted1 = CryptoJS.enc.Utf8.parse(encrypted)
  return encrypted
}

export function getDAes(data) { // 解密
  var key = ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA‘ // 密钥
  var iv = ‘1234567812345678‘
  var decryptedStr = getDAesString(data, key, iv)
  return decryptedStr
}

密码加密和解密后

技术分享图片

 

 

crypto-js加密

原文:https://www.cnblogs.com/star-meteor/p/12875205.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!