jsencrypt安装,jsencrypt教程

http://www.itjxue.com  2023-01-05 01:36  来源:未知  点击次数: 

uni-app 利用Hbuilderx 的 rsa加密插件,实现加密

1.安装插件,通过HbuilderX 导入插件

2.项目文件夹下,会自动生成一个文件夹,js_sdk,把最里面的jsencrypt文件夹,拷贝到components下

3. 在需要参数加密的vue页面,引入该组件,就可以正常使用了

import? ?jsencrypt? ?from '@/components/jsencrypt/jsencrypt.vue';

onLoad(options){

var publiukey='-----BEGIN PUBLIC KEY-----'+'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlOJu6TyygqxfWT7eLtGDwajtNFOb9I5XRb6khyfD1Yt3YiCgQWMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76xFxdU6jE0NQ+Z+zEdhUTooNRaY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4gwQco1KRMDSmXSMkDwIDAQAB' +'-----END PUBLIC KEY-----';

? ? var pubblicData=jsencrypt.setEncrypt(publiukey,"1234");

? ? console.log('密文',pubblicData);

}

H5常见的加解密方式

本文总结项目中用到加解密方式,MD5、RSA、M2/M4、RES、AES/DES

使用JS函数的escape()和unescape(),分别是编码和解码字符串

1.安装依赖

npm install jsencrypt --save-dev

2.在项目中新建RSA.js,用来存放公共加解密方法

3.引入与调用

1.安装依赖

npm install crypto-js --save-dev

2公共文件下创建js,引入依赖并封装加解密方法

AES.js

DES.js

3.引入与调用

AES

DES

国密需2要用到的依赖

npm install --save sm-crypto

国密4

国密需4要用到的依赖

npm install --save gm-crypt

前端加密、解密数据

首先,为了更好的加密,我们不能用简单的加密,因为很有可能会被轻松破解掉,我之前实现的加密只是简单的把数据加密,在测试过程中(安全性测试),通过一些技巧还是可以解密成功。

所以,对于一些重要的信息可能需要非对称加密。

所谓的非对称加密解密,在我的理解的,就是前端用一把钥匙解密/加密,而后台用另一把钥匙来做同样的操作。

也就是,前端加密用特定的钥匙,解密的钥匙只在后端那里。这样在传输过程中就不会把钥匙丢掉。

同样,后端加密数据用一把钥匙,解密的时候,前端自己有规定的钥匙,这样数据也不会在过程中解密截取。

1、我这里是用vue

所以,第一步?npm install jsencrypt

2、安装完之后,开始定义一个专门用来加密解密的文件,我放到utils文件里面。

引入JSEncrypt

3、重点来了加密解密

首先,我这里使用公钥加密(由后台来给你公钥)

全局引用,使用

这样加密就完成了。

通常由后台加密,前端负责加密

由后台生成私钥,然后前端用来解密。

引用和加密一样

怎么用 python 模拟 js 里 JSEncrypt 模块的加密方式

PC登录新浪微博时,在客户端用js预先对用户名、密码都进行了加密,而且在POST之前会GET一组参数,这也将作为POST_DATA的一部分。这样,就不能用通常的那种简单方法来模拟POST登录(比如人人网)。

通过爬虫获取新浪微博数据,模拟登录是必不可少的。

1、在提交POST请求之前,需要GET获取四个参数(servertime,nonce,pubkey和rsakv),不是之前提到的只是获取简单的servertime,nonce,这里主要是由于js对用户名、密码加密方式改变了。

1.1 由于加密方式的改变,我们这里将使用到RSA模块,有关RSA公钥加密算法的介绍可以参考网络中的有关内容。下载并安装rsa模块:

下载:https//pypi.python.org/pypi/rsa/3.1.1

rsa模块文档地址:http//stuvel.eu/files/python-rsa-doc/index.html

根据自己的Python版本选择适合自己的rsa安装包(.egg),在win下安装需要通过命令行使用easy_install.exe(win上安装setuptool从这里下载:setuptools-0.6c11.win32-py2.6.exe 安装文件 )进行安装,例如:easy_install rsa-3.1.1-py2.6.egg,最终命令行下测试import rsa,未报错则安装成功。

1.2 获得以及查看新浪微博登录js文件

查看新浪通行证url (http//login.sina.com.cn/signup/signin.php)的源代码,其中可以找到该js的地址 http//login.sina.com.cn/js/sso/ssologin.js,不过打开后里面的内容是加密过的,可以在网上找个在线解密站点解密,查看最终用户名和密码的加密方式。

1.3 登录

登录第一步,添加自己的用户名(username),请求prelogin_url链接地址:

prelogin_url = 'http//login.sina.com.cn/sso/prelogin.php?entry=ssocallback=sinaSSOController.preloginCallBacksu=%srsakt=modclient=ssologin.js(v1.4.4)' % username

使用get方法得到以下类似内容:

sinaSSOController.preloginCallBack({"retcode":0,"servertime":1362041092,"pcid":"gz-6664c3dea2bfdaa3c94e8734c9ec2c9e6a1f","nonce":"IRYP4N","pubkey":"EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443","rsakv":"1330428213","exectime":1})

进而从中提取到我们想要的servertime,nonce,pubkey和rsakv。当然,pubkey和rsakv的值我们可以写死在代码中,它们是固定值。

2、之前username 经过BASE64计算:

复制代码 代码如下:

username_ = urllib.quote(username)

username = base64.encodestring(username)[:-1]

password经过三次SHA1加密,且其中加入了 servertime 和 nonce 的值来干扰。即:两次SHA1加密后,结果加上servertime和nonce的值,再SHA1算一次。

在最新的rsa加密方法中,username还是以前一样的处理;

password加密方式和原来有所不同:

2.1 先创建一个rsa公钥,公钥的两个参数新浪微博都给了固定值,不过给的都是16进制的字符串,第一个是登录第一步中的pubkey,第二个是js加密文件中的‘10001'。

这两个值需要先从16进制转换成10进制,不过也可以写死在代码里。这里就把10001直接写死为65537。代码如下:

复制代码 代码如下:

rsaPublickey = int(pubkey, 16)

key = rsa.PublicKey(rsaPublickey, 65537) #创建公钥

message = str(servertime) + '\t' + str(nonce) + '\n' + str(password) #拼接明文js加密文件中得到

passwd = rsa.encrypt(message, key) #加密

passwd = binascii.b2a_hex(passwd) #将加密信息转换为16进制。

2.2 请求通行证url:login_url =‘http//login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.4)'

需要发送的报头信息

复制代码 代码如下:

postPara = {

'entry': 'weibo',

'gateway': '1',

'from': '',

'savestate': '7',

'userticket': '1',

'ssosimplelogin': '1',

'vsnf': '1',

'vsnval': '',

'su': encodedUserName,

'service': 'miniblog',

'servertime': serverTime,

'nonce': nonce,

'pwencode': 'rsa2',

'sp': encodedPassWord,

'encoding': 'UTF-8',

'prelt': '115',

'rsakv' : rsakv,

'url': 'http//weibo.com/ajaxlogin.php?framelogin=1callback=parent.sinaSSOController.feedBackUrlCallBack',

'returntype': 'META'

}

请求的内容中添加了rsakv,将pwencode的值修改为rsa2,其他跟以前一致。

将参数组织好,POST请求。检验是否登录成功,可以参考POST后得到的内容中的一句 location.replace(";callback=parent.sinaSSOController.feedBackUrlCallBackretcode=101reason=%B5%C7%C2%BC%C3%FB%BB%F2%C3%DC%C2%EB%B4%ED%CE%F3");

如果retcode=101则表示登录失败。登录成功后结果与之类似,不过retcode的值是0。

3、登录成功后,在body中的replace信息中的url就是我们下一步要使用的url。然后对上面的url使用GET方法来向服务器发请求,保存这次请求的Cookie信息,就是我们需要的登录Cookie了。

(责任编辑:IT教学网)

更多

推荐其他WEB语言文章