2020-09-05 21:07 采纳率: 50%
浏览 153

【不懂就问】在尝试模拟登录中遇到的关于AES-128-CBC对称加密的问题

我想模拟登录自己学校的教务系统,发现登录的表单里密码那一栏是加密的,应该是AES-128-CBC模式的,让我不明白的是它的**iv偏移量**为什么是random出来的?这样的话后端服务器要怎么验证内容呢?

ps:pwd1为表单内提交给后端的加密内容,pwdDefaultEncryptSalt为页面内嵌入的key的值

下面贴出代码:

图片说明

function getAesString(data,key0,iv0){
    key0 = key0.replace(/(^\s+)|(\s+$)/g, "");
    var key  = CryptoJS.enc.Utf8.parse(key0);
    var iv   = CryptoJS.enc.Utf8.parse(iv0);randomString(16)
    var encrypted =CryptoJS.AES.encrypt(data,key, 
        {
            iv:iv,
            mode:CryptoJS.mode.CBC,
            padding:CryptoJS.pad.Pkcs7
        });
        console.log(encrypted.toString())
    return encrypted.toString();    

}

function encryptAES(data,aesKey){ 
    if(!aesKey){
        return data;
    }
    var encrypted =getAesString(randomString(64)+data,aesKey,randomString(16)); 
    return encrypted;
}

var $aes_chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';/****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
var aes_chars_len = $aes_chars.length;

function randomString(len) {
    var retStr = '';
    for (i = 0; i < len; i++) {
        retStr += $aes_chars.charAt(Math.floor(Math.random() * aes_chars_len));
    }
    return retStr;
}
var pwd1 = encryptAES('输入的原始密码','页面内嵌入的key(pwdDefaultEncryptSalt)');
  • 写回答

1条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证