nodejs版本DESede/CBC/PKCS5Padding算法封装(3des)
最近对接了一个第三方支付项目,用的加密算法是根本没听过的:DESede/CBC/PKCS5Padding
这个算法真的是坑爹了,网上搜索了一堆只有java版本是正常的,nodejs版本的各种问题,我了个乖乖,硬着头皮调了大半天,踩了N个坑,真的是无语了
talk is cheap,上代码
const crypto = require('crypto');
/**
* base64编码
* @param text
* @returns {Buffer}
*/
function base64(text) {
return Buffer.from(text, "base64");
};
/**
* 加密
*
* @param text
* @param secretKey
* @returns {string}
*/
function encode(text, secretKey) {
secretKey = base64(secretKey);
const cipher = crypto.createCipheriv('des-ede3-cbc', secretKey, Buffer.alloc(8));
const encrypted = cipher.update(text, 'utf8', 'base64');
return encrypted + cipher.final('base64');
};
/**
* 解密
* @param encryptedBase64
* @param secretKey
* @returns {string}
*/
function decode(encryptedBase64, secretKey) {
secretKey = base64(secretKey);
const decipher = crypto.createDecipheriv('des-ede3-cbc', secretKey, Buffer.alloc(8));
let decrypted = decipher.update(encryptedBase64, 'base64', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
};
我们来运行一下
//待加密josn
let json = `{"name":"chenqionghe","cn": "雪山飞猪","content": "no pain no gain, light weight baby"}`;
//密钥
let key = 'mdgIaBrQjIKU30IIEpZS1dsFNOLX73nQ';
//加密内容
let encrypted = encode(json, key);
console.log(encrypted);
//解密
console.log(decode(encrypted, key));
输出
EPvugsT71sqeIDPuVuP0mx+cotWTJ3BtVgmwj2aRWQCwiPfoB1/RKzErV/XFVWwbo00I7F9jpDqO6XxRHGO4yYWlSStS53AbJSSXOZy0Gszlx3MsHVfCLgQJ6uI2Czwn
{"name":"chenqionghe","cn": "雪山飞猪","content": "no pain no gain, light weight baby"}
以上内容为chenqionghe踩坑封装,感谢lidong童鞋的倾情演出,转载请申请地址
nodejs版本DESede/CBC/PKCS5Padding算法封装(3des)的更多相关文章
- android加密DESede/CBC/PKCS5Padding
from://http://my.oschina.net/u/269082/blog/56163 工作中需要和HPH对接,接口一些敏感信息,讨论后用3DES加密,由于我做的android邮件客户端是依 ...
- java.security.NoSuchAlgorithmException: Cannot find any provider supporting DESede/CBC/PKCS5Padding
最近在做3DES加密,在本地window下面运行ok的程序,放到linux环境上竟然报错: Java.security.NoSuchAlgorithmException: Cannot find an ...
- 关于DES加密中的 DESede/CBC/PKCS5Padding
今天看到一段3DES加密算法的代码,用的参数是DESede/CBC/PKCS5Padding,感觉比较陌生,于是学习了一下. 遇到的java代码如下: Cipher cipher=Cipher.get ...
- DESede/CBC/PKCS5Padding
Java.security.NoSuchAlgorithmException: Cannot find any provider supporting DESede/CBC/PKCS5Padding ...
- nodejs版本RSA算法封装(SHA1)
故事背景 看到没写过代码的人聊算法细节装X,真的感觉非常逗,又不好意思戳破人家的表演. 这个世界好奇妙,总有那种看了一些周边普及性书籍就开始好为人师.指点江山,乖乖,放到古代很可能就是赵括,能代替廉颇 ...
- C#中TripleDES对应Java中的DESede即大家说的3DES,附C#及Java加解密结果一致的控制台程序例子
直接上代码了. Java控制台代码: package Test; import java.security.Key; import javax.crypto.Cipher; import javax. ...
- java/php DES/CBC/PKCS5Padding加密解密算法实现过程
先看java代码 public static String encrypt(String message, String key) throws Exception { Cipher cipher = ...
- ID过滤靓号写法(PHP和Nodejs版本)
1 前言 例如某APP的用户ID,需要按照一定规则把靓号先存取来,然后慢慢按要求释放靓号 2 代码 PHP版本如下: function genUserId(){ $id = ""; ...
- window nodejs 版本切换 nvmw
参考文档:https://cnodejs.org/topic/5338c5db7cbade005b023c98 nvmw 下载到本地 git clone https://github.com/hako ...
随机推荐
- 初步知道scss 简化css复杂层级
简介:今天在调试前端样式的时候,el-button组件位置需要调整并且 需要改字体大小 .直接上了一个 font-text:20px; 发现没作用,谷歌调试发现并未作用到组件里的<span> ...
- 7个获取访问者真实IP的方法,速学!!!
通常情况下,网站访问并不是简单地从用户的浏览器直达服务器,中间可能部署有CDN.WAF.高防.例如,采用这样的架构:“用户 > CDN/WAF/高防 > 源站服务器” .那么,在经过多层代 ...
- 使用MacOS直播
参考链接:https://www.jianshu.com/p/94f42a793a7e 参考链接:https://blog.dreamtobe.cn/live_guideline/ 所需软件 密码: ...
- Python模块_import语句_from...import 函数名_from ... import *
Python模块:包含了所有定义的函数和变量的文件,后缀名为 .py 将某些方法存放在文件中,当某些脚本 或 交互式需要使用的时候,导入进去. 导入的文件,就称为模块.导入之后就可以使用导入的文件的函 ...
- 一次django内存异常排查
起因 Django 作为 Python著名的Web框架,相信很多人都在用,自己工作中也有项目项目在用,而在最近几天的使用中发现,部署Django程序的服务器出现了内存问题,现象就是运行一段时间之后,内 ...
- Python os.chroot() 方法
概述 os.chroot() 方法用于更改当前进程的根目录为指定的目录,使用该函数需要管理员权限.高佣联盟 www.cgewang.com 语法 chroot()方法语法格式如下: os.chroot ...
- PHP set_file_buffer() 函数
定义和用法 set_file_buffer() 函数设置打开文件的缓冲大小. 使用 fwrite() 函数输出结果,缓冲的大小通常为 8K.因此,如果要将两个进程写入同一个文件,那么每个文件一次最多只 ...
- 牛客IOI周赛17-提高组 卷积 生成函数 多项式求逆 数列通项公式
LINK:卷积 思考的时候 非常的片面 导致这道题没有推出来. 虽然想到了设生成函数 G(x)表示最后的答案的普通型生成函数 不过忘了化简 GG. 容易推出 \(G(x)=\frac{F(x)}{1- ...
- 一本通 1783 矩阵填数 状压dp 容斥 计数
LINK:矩阵填数 刚看到题目的时候感觉是无从下手的. 可以看到有n<=2的点 两个矩形. 如果只有一个矩形 矩形外的方案数容易计算考虑 矩形内的 必须要存在x这个最大值 且所有值<=x. ...
- FFT专练
就多项式乘法这个地方不太熟 再多巩固一下. LINK:[ZJOI2014力](https://www.luogu.com.cn/problem/P3338) 把$(j-i)^2$看成一个函数 可以发现 ...