加密 scrapy

js常见的加密方式

加密在前端开发和爬虫中是经常遇见的。掌握了加密算法且可以将加密的密文进行解密破解的,也是你从一个编程小白到大神级别质的一个飞跃。且加密算法的熟练和剖析也是很有助于帮助我们实现高效的js逆向。下述只把我们常用的加密方法进行总结。不去深究加密的具体实现方式。

常见的加密算法基本分为这几类:
线性散列算法(签名算法)MD5
对称性加密算法 AES DES
非对称性加密算法 RSA

Md5加密

MD5是一种被广泛使用的线性散列算法,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整的一致性。且MD5加密之后产生的是一个固定长度(32位或16位)的数据。
解密:
常规讲MD5是不存在解密的。但是理论上MD5是可以进行反向暴力破解的。暴力破解的大致原理就是用很多不同的数据进行加密后跟已有的加密数据进行对比,由此来寻找规律。理论上只要数据量足够庞大MD5是可以被破解的。但是要注意,破解MD5是需要考虑破解的成本(时间和机器性能)。假设破解当前的MD5密码需要目前计算能力最优秀的计算机工作100年才能破解完成。那么当前的MD5密码就是安全的。
增加破解成本的方法(方法很多,这里只说我常用的)。

使用一段无意义且随机的私匙进行MD5加密会生成一个加密串,我们暂且称之为串1
将要加密的的数据跟串1拼接,再进行一次MD5,这时会生成串2
将串2再次进行MD5加密,这时生成的串3就是我们加密后的数据。
我们在注册账号时的密码一般都是用的MD5加密。

<html>
	<script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.js"></script>
    <script type="text/javascript">
		var hashCode = md5("i am bobo!"); 
		alert(hashCode)
	</script>
		
</html>

DES/AES加密

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的算法。该加密算法是一种对称加密方式,其加密运算、解密运算需要使用的是同样的密钥(一组字符串)即可。
注意:
现在用AES这个标准来替代原先的DES。

AES和DES的区别:
加密后密文长度的不同:
DES加密后密文长度是8的整数倍
AES加密后密文长度是16的整数倍
应用场景的不同:
企业级开发使用DES足够安全
如果要求高使用AES
DES和AES切换只需要修改 CryptoJS.AES <=> CryptoJS.DES
使用DES/AES进行数据交互时要求双方都拥有相同的私匙

破解方法:
暴力破解。
DES如果使用 56 位的密钥,则可能的密钥数量是 2 的 56 次方个。只要计算足够强大是可以被破解的
DES算法的入口参数有三个:
Key、Data、Mode,padding。
Key为7个字节共56位,是DES算法的工作密钥;
Data为8个字节64位,是要被加密或被解密的数据;
Mode为DES的工作方式。
padding为填充模式,如果加密后密文长度如果达不到指定整数倍(8个字节、16个字节),填充对应字符
padding的赋值固定为CryptoJS.pad.Pkcs7即可

<html>
	<script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.js"></script>
    <script type="text/javascript">
		  var aseKey = "12345678"     //定制秘钥,长度必须为:8/16/32位
		  var message = "i am bobo,who are you ?";
		  //加密 DES/AES切换只需要修改 CryptoJS.AES <=> CryptoJS.DES
		  var encrypt = CryptoJS.DES.encrypt(message, CryptoJS.enc.Utf8.parse(aseKey), {
			mode: CryptoJS.mode.ECB,
			padding: CryptoJS.pad.Pkcs7
		  }).toString();

		  alert(encrypt); // 0Gh9NGnwOpgmB525QS0JhVJlsn5Ev9cHbABgypzhGnM

		  //解密
		  var decrypt = CryptoJS.DES.decrypt(encrypt, CryptoJS.enc.Utf8.parse(aseKey), {
			mode: CryptoJS.mode.ECB,
			padding: CryptoJS.pad.Pkcs7
		  }).toString(CryptoJS.enc.Utf8);

		  alert(decrypt); // 我是一个密码
	</script>
		
</html>

RSA加密

RSA加密:
RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。
非对称加密算法:
非对称加密算法需要两个密钥:
公开密钥(publickey:简称公钥)
私有密钥(privatekey:简称私钥)
公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

注意:
使用时都是使用公匙加密使用私匙解密。公匙可以公开,私匙自己保留。
算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。

使用流程和场景介绍
通过公匙加密,使用私匙解密。私匙是通过公匙计算生成的。假设ABC三方之间相互要进行加密通信。大家相互之间使用公匙进行信息加密,信息读取时使用各自对应的私匙进行信息解密
用户输入的支付密码会通过RSA加密

公钥私钥生成方式:
公私匙可以在线生成

http://web.chacuo.net/netrsakeypair
<html>
	<script src="https://cdn.bootcss.com/jsencrypt/3.0.0-beta.1/jsencrypt.js"></script>
    <script type="text/javascript">
        //公钥
        var PUBLIC_KEY = '-----BEGIN PUBLIC KEY-----MFwwDQYJKoZIhvcNAQEBBQA
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scrapy是一个Python编写的开源网络爬虫框架,它可以帮助开发者快速高效地抓取、处理和存储互联网上的数据。所以,在本地安装Scrapy包是非常有必要的。 首先,我们需要确保本地已经安装了Python解释器。然后,我们可以通过命令行运行以下命令来安装Scrapy包: ``` pip install scrapy ``` 这个命令会自动从Python包索引(PyPI)下载最新版的Scrapy,并完成安装过程。 安装完成后,我们可以通过命令行验证Scrapy是否成功安装。运行以下命令: ``` scrapy --version ``` 如果成功安装,我们会看到Scrapy的版本号。 除了Scrapy包本身,我们还需要安装一些其他依赖项,以确保Scrapy正常工作。这些依赖项包括:Twisted(异步网络框架)、pyOpenSSL(加密协议)、lxml(用于HTML和XML的解析库)等。我们可以使用以下命令一次性安装所有依赖项: ``` pip install twisted pyOpenSSL lxml ``` 安装完成后,我们就可以在本地使用Scrapy了。我们可以使用Scrapy提供的命令行工具来创建和管理我们的爬虫项目。通过运行以下命令,可以创建一个新的Scrapy项目: ``` scrapy startproject project_name ``` 其中,`project_name`是我们为项目指定的名称。 然后,我们可以使用编辑器打开项目文件夹,并在其中定义和配置我们的爬虫。在项目文件夹中的`spiders`文件夹中,我们可以创建一个新的爬虫文件。在这个文件中,我们可以定义我们的爬虫如何解析网页和提取数据。 最后,我们可以在命令行中运行以下命令来启动我们的爬虫: ``` scrapy crawl spider_name ``` 其中,`spider_name`是我们定义的爬虫的名称。 总而言之,通过在本地安装Scrapy包,我们可以轻松开始使用这个强大的网络爬虫框架,并实现高效地抓取、处理和存储互联网上的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值