程序员的资源宝库

网站首页 > gitee 正文

加解密 加密解密算法

sanyeah 2024-03-29 17:54:15 gitee 7 ℃ 0 评论

# 加解密

# Base64加解密

# Base64加密

window.btoa(1111); // 'MTExMQ=='

# Base64解密

window.atob('MTExMQ==') // '1111'

# 注意事项

  • 不能加密中文
  • 数字类型加密后再解密为字符串格式

# escape()和unescape()

# escape加密

escape("我的名//字是:HerayChen"); // '%u6211%u7684%u540D//%u5B57%u662F%uFF1AHerayChen'

# unescape解密

unescape('%u6211%u7684%u540D//%u5B57%u662F%uFF1AHerayChen'); // '我的名//字是:HerayChen'

# 注意事项

  • 编码的时候必须中英文混合,纯英文的时候编码是不生效的
  • 也可以理解为编码只对中文和符号生效

# AES/DES加密解密

# 带iv的话mode需要用 CryptoJS.mode.CBC

{/* <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script> */}
import CryptoJS from 'crypto-js'

const keyHex = CryptoJS.enc.Utf8.parse("5ssOaSedvbTygcfT"); //秘钥必须为:8/16/32位
const iv = CryptoJS.enc.Utf8.parse("9cROnuEytZI5y6IA");

function encode(msg){
    
    const encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(msg), keyHex, {
        iv: iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    })
    return encrypted.toString();
}

function decode(enc){
    let decrypt = CryptoJS.AES.decrypt(enc, keyHex, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
    let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    return decryptedStr.toString();
}

export default {
    encode,
    decode
}

# 不带iv的话modeCryptoJS.mode.ECB

  • 带上iv也不报错,没效果
import CryptoJS from 'crypto-js'
const keyHex = CryptoJS.enc.Utf8.parse("5ssOaSedvbTygcfT"); //秘钥必须为:8/16/32位

function encode(msg){
    
    const encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(msg), keyHex, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    })
    return encrypted.toString();
}

function decode(enc){
    let decrypt = CryptoJS.AES.decrypt(enc, keyHex, {  mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
    let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    return decryptedStr.toString();
}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表