爬虫(二)前端加密算法之AES-ECB

本文介绍了AES-ECB加密算法,它是对称加密的一种,用于JavaScript中的加密。文章详细展示了如何使用CryptoJS库实现ECB模式加密,并提供了两种调用方式:execjs和js2py。然而,ECB模式的缺点在于相同明文加密后密文重复,易被破解,存在安全风险。
摘要由CSDN通过智能技术生成

前端加密算法之AES-ECB

一、简介

	AES加密算法是DES算法的替代者,也是现在最流行的对称加密算法之一,由于是双向加密,所以是可逆的;
	对称加密:加密和解密使用的密钥是相同的区别于非对称加密,AES加密算法主要分为以下几种模式:ECB、CBC、CTR等五种模式;
	ECB是最简单的工作模式,ECB模式下,相同的明文经过加密始终会变成相同的密文块,所以安全性比较差。

二、实现(核心加密js)

function get_result(password){
    var key = CryptoJS.enc.Utf8.parse("AES454-HTJSQ9-IT");
    var srcs = CryptoJS.enc.Utf8.parse(password);
    var n = CryptoJS.AES.encrypt(srcs, key, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    return n.toString();
}

三、调用

	使用AES加密算法,必须要引入crypto-js,crypto-js是一个纯javascript写的加密算法库,具体完成的js放在下面的url里了

链接:https://pan.baidu.com/s/1Mn9rtlhqzCpjRx-EnqxY8g
提取码:hg8r

读取到拿到js文件后,我在想怎么调用他呢,这里给出两种方式:
1、import execjs
使用execjs,编译js源文件or方法,然后调用js方法,正常传参,具体应用这里给出一个小demo,自己品

import execjs

js = execjs.compile("""
function add(x,y){
    return x+y;
}
""")
if __name__ == '__main__':
    print(js.call("add", 1, 2))

这种方式有个不好的就是脚本所处环境需要有nodejs这样的javascript运行环境,不然没法编译js,所以下面给出了另外一种方式

2、import js2py
使用js2py生成一个上下文环境对象,然后在上下文环境中执行js源文件or方法,然后调用即可,这里同样给出一个小demo,自己品

import js2py

context_obj = js2py.EvalJs()
context_obj.execute("""
var a = 10;
function add(x, y){
    return x*y;
}
""")
if __name__ == '__main__':
    print(context_obj.add(9, 10))
    print(context_obj.a)

这种方式就对js编译环境没有严格的要求

四、缺点分析

	这种加密算法存在明显缺点:相同的明文加密后得到的密文是相同的。这样一来,只要观察一下密文,就可以知道明文存在怎样的重复组合,
	并可以以此为线索来破译密码,因此ECB模式是存在一定风险的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值