关于node.js:NodeJS中与爬虫相关的常见加密
NodeJS中的Crypto应用在爬虫JS解密的时候常常会遇到常见的加密,例如:MD5,Sha1,Sha256,AES,RSA等加密算法,这些能够在Python中调用,当然有时候采纳NodeJS调用也很不便,相熟NodeJS常见的加密算法对逆向JS很有帮忙。NodeJS 中的 Crypto 模块提供了加密性能,包含对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证性能的一整套封装。 Hash将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规定就是哈希算法,而通过原始数据映射之后失去的二进制值串就是哈希值(散列值).一个优良的哈希算法须要满足: 从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法);对输出数据十分敏感,哪怕原始数据只批改了一个 Bit,最初失去的哈希值也大不相同;散列抵触的概率要很小,对于不同的原始数据,哈希值雷同的概率十分小;哈希算法的执行效率要尽量高效,针对较长的文本,也能疾速地计算出哈希值。哈希算法严格来说并不属于加密算法,传统意义上的 加密 是与 解密 相配对的。哈希算法只能加密不能反向解密。 MD5在NodeJS中 MD5 Hash 函数的用法如下: const crypto = require('crypto');const hash = crypto.createHash('md5');console.log(hash.update('666666').digest('hex'))// f379eaf3c831b04de153469d1bec345econst hash2 = crypto.Hash('md5');console.log(hash2.update('666666').digest('hex'))// f379eaf3c831b04de153469d1bec345e其中摘要的编码方式有如下三种: latin1hexbase64Sha1const crypto = require('crypto');const hash = crypto.createHash('sha1');console.log(hash.update('666666').digest('hex'))// 1411678a0b9e25ee2f7c8b2f7ac92b6a74b3f9c5const hash2 = crypto.Hash('sha1');console.log(hash2.update('666666').digest('hex'))// 1411678a0b9e25ee2f7c8b2f7ac92b6a74b3f9c5Base64百度百科中对Base64有一个很好的解释:“Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来示意二进制数据的办法”。什么是“可打印字符”呢?为什么要用它来传输8Bit字节码呢?在答复这两个问题之前咱们有必要来思考一下什么状况下须要应用到Base64?Base64个别用于在HTTP协定下传输二进制数据,因为HTTP协定是文本协定,所以在HTTP协定下传输二进制数据须要将二进制数据转换为字符数据。然而间接转换是不行的。因为网络传输只能传输可打印字符。什么是可打印字符?在ASCII码中规定,0~31、127这33个字符属于控制字符,32~126这95个字符属于可打印字符,也就是说网络传输只能传输这95个字符,不在这个范畴内的字符无奈传输。那么该怎么能力传输其余字符呢?其中一种形式就是应用Base64。 Base64,就是应用64个可打印字符来示意二进制数据的办法。Base64的索引与对应字符的关系如下表所示: 更加具体的解释能够参考:什么是Base64? 严格来说Base64也不是加密算法,然而爬虫中也会常常遇到,所以在此给出在NodeJS中的Base64的"加密"与"解密"。在浏览器中加密与解密别离对应 btoa 和 atob。 Base64加密对应浏览器中的 btoa: const data = '666666';const encodedData = Buffer.from(data, 'utf-8').toString('base64'); // 输出编码为utf8,输入为base64console.log(encodedData);// NjY2NjY2Base64解密对应浏览器中的 atob: const data = 'NjY2NjY2';const decodedData = Buffer.from(data, 'base64').toString('utf8'); // 输出编码为base64,输入编码为utf8console.log(decodedData);// 666666DESDES 是 Data Encryption Standard(数据加密规范)的缩写。它是由IBM公司研制的一种对称明码算法,美国国家标准局于1977年颁布把它作为非机要部门应用的数据加密规范,它始终沉闷在国内窃密通信的舞台上,表演了非常重要的角色。 ...