当前位置:首页 > 生活百科

js加密怎么破解(爬虫破解js加密的流程)

栏目:生活百科日期:2025-01-01浏览:0

场景

在开发过程中,我们会经常会从当前系统跳转别的系统进行访问或者页面嵌套使用。

那一般都会给到一个地址进行参数拼接,然后去访问。那么会存在一个问题,就是地址暴露在外面参数使用明文的话会被篡改,极度不安全。

这个时候我们就考虑到加密,前端和后端协定好一种加密方式,然后前端进行参数加密传到后端,后端再去解密(可逆)。

加密方式也有很多种,今天我推荐的是一款强大的前端加密/解密js库——crypto-js

crypto-js是什么

crypto-js 是一个纯 javascript 写的加密算法类库 ,可以非常方便地在 javascript 进行 MD5、SHA1、SHA2、SHA3、RIPEMD-160 哈希散列,进行 AES、DES、Rabbit、RC4、Triple DES 加解密。

GitHub:https://github.com/brix/crypto-js

安装

npm install crypto-js

使用

ES6模块引入方法:

import sha256 from 'crypto-js/sha256';import hmacSHA512 from 'crypto-js/hmac-sha512';import Base64 from 'crypto-js/enc-base64';

模块加载引入方法:

var AES = require("crypto-js/aes");var SHA256 = require("crypto-js/sha256");

页面标签引入方法:

&<script type="text/javascript" src="path-to/bower_components/crypto-js/crypto-js.js"&>&</script&>&<script type="text/javascript"&>    var encrypted = CryptoJS.AES(...);    var encrypted = CryptoJS.SHA256(...);&</script&>

项目中使用实例

这里我以 React作为例子,其他的也就大同小异了。

第一步:封装工具类

我们可以写一个工具类,专门封装加密解密的方法,比如我新建一个cryptoAES.js的文件,放在utils 目录下(放哪无所谓),代码如下:

const CryptoJS = require('crypto-js');  //引用AES源码js    const key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF");  //十六位十六进制数作为密钥const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412');   //十六位十六进制数作为密钥偏移量//解密方法function (word) {    let encryptedHexStr = CryptoJS.enc.Hex.parse(word);    let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);    let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });    let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);    return decryptedStr.toString();}//加密方法function Encrypt(word) {    let srcs = CryptoJS.enc.Utf8.parse(word);    let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });    return encrypted.ciphertext.toString().toUpperCase();}export default {  Decrypt ,  Encrypt}

上面的代码中的 key 是密钥 ,iv 是密钥偏移量,这两个参数前后端协定好保持一致,相当是我们的小秘密,不能告诉别人,不然加密的意义就没了。

值得注意的是密钥的长度,由于对称解密使用的算法是 AES-128-CBC算法,数据采用 PKCS#7 填充 , 因此这里的 key 需要为16位!

接着我们定义了 解密方法Decrypt加密方法 Encrypt ,最后通过 export 和default 将其暴露出去,方便在需要的时候进行引入&….

工具类写好了,很简单,然后是怎么使用了~

第二步:使用工具类

我们有一个index.tsx文件,在这里面使用加密和解密的方法。

这里我只演示加密,解密同理。

import { Decrypt, Encrypt } from '/utils /cryptoAES.js';..//比如我组装好了拼接的参数const str = '103170,112425366,253.00,20210428173700'Encrypt(str)

加密后的结果是:

hoDfJ9U+uY+v8wYKdudbTUR+Z7g1Ui9YraVhfD9g2fMipYlFxnoLE0qbf+YsnEuk

这里有个问题,加密后的字符串里面是包含了+号,发送的话,在进行地址解析时,会把 + 号转换为 空格, 直接导致参数不能正确传输,所以我们用到了JS的encodeURIComponent(),将所有的 + 号 手动转换为 %2B 即可正常传输。

encodeURIComponent(str)//返回新结果hoDfJ9U%2BuY%2Bv8wYKdudbTUR%2BZ7g1Ui9YraVhfD9g2fMipYlFxnoLE0qbf%2BYsnEuk

好了,一个简单的前端加密的过程就写完了。

总结

使用加密的场景有很多,我这里只讲述了URL地址加密的场景,简单总结下:

第一步:安装crypto-js

第二步:引入crypto-js

第三步:封装工具类(当然也可以直接使用)

第四步:调用工具类

第五步:使用encodeURIComponent方法转码,然后拼接

当然,这个是最基础的用法,想深入可查看官方文档!

结尾:希望小凡的每篇文章对你都有所帮助!

“js加密怎么破解(爬虫破解js加密的流程)” 的相关文章

edittext去掉下划线输入(批量改文件后缀命令)

和你一起终身学习,这里是程序员Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、EditText继承关系二...

如何做好手机短信营销,短信营销技巧及话术大全

刚刚过去的双十一让众多商家忙的不亦乐乎。单说促销短信,从双十一前几天的预热群发,到活动当天根据销售情况做的临时调整发送,以及最后一波的销量冲刺——看似简单的短信...

office破解工具怎么用(office一键激活工具使用)

学会使用简单的密码破解工具,破解MicrosoftOffice加密文件的密码。使用AdvancedOfficePasswordRecovery破解Microso...

冰淇淋品牌排行,揭秘全球人气最高的十大冰淇淋

哈根达斯:开始于1921年美国,哈根达斯的冰淇淋无需加配料,本身口感就很纯正。使用纯正的材料是它的成功之本和路雪wall&&#8217;s:联合利华集团旗下世界...

小米8什么时候上市,小米8的优缺点介绍

今天凌晨苹果的发布会可以说给了全世界一个大大的惊喜:没有任何硬件产品!还想换手机的朋友不妨可以把目光转向前不久发布的小米8,这款旗舰机自发布以来就收获了众消费者...

卡诗精油好用吗(简述卡诗护发2款精油的区别)

护肤很重要,护发也不可忽视~相信很多小姐妹都希望有一头柔顺的秀发,仙气飘飘!今天呢想跟大家分享2款神仙精油,真的是除了贵,就没什么毛病!一款是卡诗的经典神仙精油...

小区里摆地摊卖什么好,适合在小区长期摆摊生意

很多人都想赚钱,其实摆地摊就是不错的选择,投资不大,只需要你有叫卖的勇气和销售的智慧,就能创造财富的奇迹,那么,摆地摊卖什么最赚钱呢?请看详细介绍。摆地摊卖什么...

五金属于什么行业类型,中国五金市场现状分析

中国五金制品协会与全球电子商务企业eBay近日在上海联合发布的《中国五金制品跨境电商出口白皮书》(下称“白皮书”)显示,目前,中国五金行业总产值超过1万亿元人民...

3d光域网怎么导入(教你3d渲染方法)

3Dmax灯光布置过程中,对于初学者来讲,灯光类型的选择,灯光强度颜色的控制是属于设计层面的问题;而灯光的关联复制,与模型的对齐关系和角度调整,以及筒灯模型的导...

一台电脑怎么挣钱,分享3个日赚100的方法

电脑现在已经是家家户户都有的东西了,即便是一些偏远的村庄也不例外,但绝大部分人还是主要用电脑来上网聊天、玩游戏、看电影,而也有那么一小部分人他们并非是用电脑来娱...