Crypto-JS

js与php7互通加解密

荒凉一梦 提交于 2021-01-23 23:44:07
php 7.1以后mcrypt_encrypt将会被废弃,所以我们使用openssl_decrypt和openssl_encrypt的组合方式实现AES加密实现 php /js互通加密/解密。 js端使用CryptoJS封装的库 https://blog.csdn.net/weixin_35719518/article/details/112054379 来源: oschina 链接: https://my.oschina.net/shunshun/blog/4921830

微信小程序des加密、PHP des解密

五迷三道 提交于 2020-12-29 17:12:23
最近在做对小程序传输数据进行加密,加密方法有很多,使用的是des对称加密 采用的是CBC模式, 引用的插件为tripledes.js, https://github.com/Favour1111in/hello-world/tree/master 需要传入内容,密钥,初始化向量3个参数 var server = require('../../utils/server.js' ); var CryptoJS = require('../../utils/tripledes.js' ); Page({ /* * * 页面的初始数据 */ data: { val: '' }, input(e) { var val = e.detail.value; this .encrypt(val); }, encrypt(val) { var pwd = 'lib123123'; // 这里需要传入8个字节以上的密钥 var iv = '123123123' ; var encryptData = this .encryptByDESModeCBCUtf8to64(val, pwd, iv); console.log(encryptData); this .setData({ encryptData: encryptData }) server.postJSON( 'Index/decrypt',

微信小程序的AES加密和解密

荒凉一梦 提交于 2020-12-29 15:56:24
没有一款社交软件可以治愈孤独。如果可能的话,去找回你所在意的人,放下手机,在他们的身边把时光挥霍,才是最美妙的事了。 /* CryptoJS v3.1.2 code.google.com/p/crypto-js (c) 2009-2013 by Jeff Mott. All rights reserved. code.google.com/p/crypto-js/wiki/License */ var CryptoJS = CryptoJS || function (u, p) { var d = {}, l = d.lib = {}, s = function () { }, t = l.Base = { extend: function (a) { s.prototype = this ; var c = new s; a && c.mixIn(a); c.hasOwnProperty( " init " ) || (c.init = function () { c.$super.init.apply( this , arguments) }); c.init.prototype = c; c.$super = this ; return c }, create: function () { var a = this .extend(); a.init.apply(a,

前后端API交互数据加密——AES与RSA混合加密完整实例

纵然是瞬间 提交于 2020-12-17 06:36:43
  前言   前段时间看到一篇文章讲如何保证API调用时数据的安全性(传送门: https://blog.csdn.net/ityouknow/article/details/80603617 ),文中讲到利用RSA来加密传输AES的秘钥,用AES来加密数据,并提供如下思路:   说人话就是前、后端各自生成自己的RSA秘钥对(公钥、私钥),然后交换公钥(后端给前端的是正常的明文公钥,前端给后端的是用后端公钥加密后的密文公钥;PS:其实我觉得直接交换两个明文公钥就行了),后端生成AES的 明文key ,用明文key进行AES加密得到 密文数据 ,用前端的公钥进行RSA加密得到 密文key ,API交互时 并将密文数据与密文key进行传输,前端用自己的私钥进行RAS解密的到明文key,用明文key进行AES解密得到明文数据;前端给后端发送数据时同理,这样一来,传输的数据都是密文,且只有秘钥才能解密   可惜这篇博客只提供了思路,但并没有具体的代码,我们在网上查找一下资料,开始生撸代码,实现一个前后端API交互数据加密——AES与RSA混合加密,并应用到项目中   后端加、解密   从网上查找工具类,再进行改造   先引入Base64工具类 <!-- Base64编码需要 --> < dependency > < groupId > org.apache.directory.studio

AES与RSA混合加密完整实例

社会主义新天地 提交于 2020-12-17 05:19:47
前后端API交互数据加密——AES与RSA混合加密完整实例   前言   前段时间看到一篇文章讲如何保证API调用时数据的安全性(传送门: https://blog.csdn.net/ityouknow/article/details/80603617 ),文中讲到利用RSA来加密传输AES的秘钥,用AES来加密数据,并提供如下思路:   说人话就是前、后端各自生成自己的RSA秘钥对(公钥、私钥),然后交换公钥(后端给前端的是正常的明文公钥,前端给后端的是用后端公钥加密后的密文公钥;PS:其实我觉得直接交换两个明文公钥就行了),后端生成AES的明文key,用明文key进行AES加密得到密文数据,用前端的公钥进行RSA加密得到密文key,API交互时并将密文数据与密文key进行传输,前端用自己的私钥进行RAS解密的到明文key,用明文key进行AES解密得到明文数据;前端给后端发送数据时同理,这样一来,传输的数据都是密文,且只有秘钥才能解密   可惜这篇博客只提供了思路,但并没有具体的代码,我们在网上查找一下资料,开始生撸代码,实现一个前后端API交互数据加密——AES与RSA混合加密,并应用到项目中   后端加、解密   从网上查找工具类,再进行改造   先引入Base64工具类 <!-- Base64编码需要 --> <dependency> <groupId>org

超简单获取快应用摘要值

↘锁芯ラ 提交于 2020-10-30 18:33:09
最近有需求获取快应用的摘要值,但是发现快应用规范并未提供相关接口。有幸的是,经过一番搜索,我发现可以使用第三方库crypto-js获取,以下对获取方式进行分享。 安装依赖 检查快应用项目目录下是否已经有第三方库依赖文件package.json。 如果没有,在快应用IDE中启动第三方依赖库:工具栏Npm->Start Npm Library,执行完这个步骤后,在快应用项目根目录下生成package.json文件。 执行npm install : 工具栏Npm->Npm Install. 切换到IDE下方的”终端”tab,进入快应用项目根目录,安装crypto-js库,输入安装命令: npm i -S crypto-js,如下图所示: 安装完成后,会在package.json文件中自动增加crypto-js的依赖。 代码引用 参考crypto-js在es6中的使用,如: import sha256 from 'crypto-js/sha256'; import MD5 from 'crypto-js/md5'; genSha256: function (e) { const msg = this.testdata; this.sha256value = sha256(msg); }, genMD5: function () { const msg = this.testdata;

这种反爬虫手段有点意思,看我破了它!

北城余情 提交于 2020-10-02 10:58:32
这种反爬虫手段被广泛应用在一线互联网企业的产品中,例如汽车资讯类网站、小说类网站等文字密度较大的站点。在开始学习之前,我们先来看看具体的现象。 打开网址: https://implicit-style-css_0.crawler-lab.com 呈现在我们眼前的是这样一个界面: 这次的任务,就是拿到页面上所呈现的内容的文本。在编写爬虫代码之前,我们要做几件事: 确定目标内容的来源,也就是找到响应目标内容的那次请求 确定目标内容在网页中的位置 其实就是最基本的观察和分析。 网络请求方面,打开浏览器调试工具并切换到 Network 面板后,看到页面只加载了 2 个资源: 一个 html 文档和一个 js 文件,想必我们要的内容就在 html 文档中。点击该请求,浏览器开发者工具就会分成两栏,左侧依然是请求记录列表,右侧显示的是指定请求的详情。右侧面板切换到 Response,就可以看到服务器响应的内容: 看样子,我们要的东西就在这次响应正文中。咋一看,我们直接取 class 为 rdtext 的 div 标签下的 p 标签中的文本内容即可。然而事情并没有那么简单,细心的读者可能发现了,响应正文中显示的内容和页面中呈现的文字并不完全相同——响应正文中少了一些标点符号和文字,多了一些 span 标签。 例如页面中显示的是: 夜幕团队 NightTeam 于 2019 年 9 月 9

JS实现国密算法SM2加密,后端Java解密

孤人 提交于 2020-08-14 02:46:43
项目涉及保密传输,要求使用国密算法,一般遇到类似问题首先想到的就是使用非对称加密,后端生成密钥对,将公钥交给前端,前端用公钥加密数据,后端用私钥对数据解密。项目的复杂度在于国密的非对称加密算法SM2的Java及JS实现。 Java版比较好办,较新版本的bouncycastle就支持了SM2/SM3/SM4,麻烦在于JS版,找了很多都有问题,直到遇到了这个项目:https://github.com/Saberization/SM2,感谢作者。分别整理下前端后端的实现过程: 后端首先引入bouncycastle,Maven配置如下: <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.65</version> </dependency> 后端Java代码如下: //生成密钥对 X9ECParameters sm2ECParameters = GMNamedCurves.getByName("sm2p256v1"); ECDomainParameters domainParameters = new ECDomainParameters(sm2ECParameters.getCurve(), sm2ECParameters.getG(),

看JS中利用CryptoJS进行MD5/SHA256/BASE64/AES加解密的方法与示例

匆匆过客 提交于 2020-08-13 04:56:16
CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法,由于它使用起来稍微有些复杂。所以本文主要着重说一下CryptoJS进行MD5/SHA256/BASE64/AES加解密的方法与示例。 准备工作 你可以下载CryptoJS( https://github.com/brix/crypto-js )到您本地,新建一个网页然后通过console.log()进行调试,可以使用一款接口管理工具ApiPost( https://www.apipost.cn/ )进行调试。 ApiPost是一款功能类似Postman的工具,但是融入了文档分享功能,使用起来很方便。它内置了CryptoJS支持,所以我就以它作为调试工具了。 MD5加密 CryptoJS.MD5( '待加密字符串').toString() SHA256加密 CryptoJS.SHA256( '待加密字符串').toString() base64加密 CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse( '待加密字符串')) base64解密 CryptoJS .enc .Base64 .parse("待解密字符串") .toString( CryptoJS .enc .Utf8) AES简单加密 CryptoJS.AES.encrypt

JS实现国密算法SM2加密,后端Java解密

蓝咒 提交于 2020-08-10 02:26:18
项目涉及保密传输,要求使用国密算法,一般遇到类似问题首先想到的就是使用非对称加密,后端生成密钥对,将公钥交给前端,前端用公钥加密数据,后端用私钥对数据解密。项目的复杂度在于国密的非对称加密算法SM2的Java及JS实现。 Java版比较好办,较新版本的bouncycastle就支持了SM2/SM3/SM4,麻烦在于JS版,找了很多都有问题,直到遇到了这个项目:https://github.com/Saberization/SM2,感谢作者。分别整理下前端后端的实现过程: 后端首先引入bouncycastle,Maven配置如下: <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.65</version> </dependency>    后端Java代码如下: //生成密钥对 X9ECParameters sm2ECParameters = GMNamedCurves.getByName("sm2p256v1"); ECDomainParameters domainParameters = new ECDomainParameters(sm2ECParameters.getCurve(), sm2ECParameters.getG()