内容简介:一个接口,初期开发的时候没有考虑加密。最近突然想到需要加密传输的数据。比如客服端发送的json格式{“data”:{“key1”:“v1”, “key2”:“v2”}}
一个接口,初期开发的时候没有考虑加密。最近突然想到需要加密传输的数据。
比如
客服端发送的json格式{“data”:{“key1”:“v1”, “key2”:“v2”}}
客服端收到的json格式{“data”:{“key1”:“v1”, “key2”:“v2”}}
我们的方案是直接将data的value加密,结果是{“data”:“encrypted with base64 string”}
以前写好的Postman要如何改造才能进行测试呢?
这就需要用到Postman的Pre-request script配合使用,
在发送的时候用一个参数来占位,比如
{“placeholder”:{“key1”:“v1”, “key2”:“v2”}, “data”:"{{data}}"}
在Pre-request script中获取placeholder的值,然后加密,将加密后的字符串存入环境变量data中即可。
如果加密的内容中有依赖环境变量的该如何办呢?我的解决方案就是用正则替换,比如
let value = postman.getEnvironmentVariable("key");/ let reg = /\{{(.*?)\}}/; let param = request.data; let data = param.replace(reg, value);
解密的时候可以在Postman的Tests中进行, 就不说了。
我用的是DES加密,分享一个js的DES测试用例, 来源于 网络gist
<html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>JS:DES-Test</title> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script> <script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.js"></script> <script> //DES 加密 function encryptByDES(message, key) { var keyHex = CryptoJS.enc.Utf8.parse(key); // console.log(CryptoJS.enc.Utf8.stringify(keyHex), CryptoJS.enc.Hex.stringify(keyHex)); // console.log(CryptoJS.enc.Hex.parse(CryptoJS.enc.Utf8.parse(key).toString(CryptoJS.enc.Hex))); // CryptoJS use CBC as the default mode, and Pkcs7 as the default padding scheme var encrypted = CryptoJS.DES.encrypt(message, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); // decrypt encrypt result // var decrypted = CryptoJS.DES.decrypt(encrypted, keyHex, { // mode: CryptoJS.mode.ECB, // padding: CryptoJS.pad.Pkcs7 // }); // console.log(decrypted.toString(CryptoJS.enc.Utf8)); // when mode is CryptoJS.mode.CBC (default mode), you must set iv param // var iv = 'inputvec'; // var ivHex = CryptoJS.enc.Hex.parse(CryptoJS.enc.Utf8.parse(iv).toString(CryptoJS.enc.Hex)); // var encrypted = CryptoJS.DES.encrypt(message, keyHex, { iv: ivHex, mode: CryptoJS.mode.CBC }); // var decrypted = CryptoJS.DES.decrypt(encrypted, keyHex, { iv: ivHex, mode: CryptoJS.mode.CBC }); // console.log('encrypted.toString() -> base64(ciphertext) :', encrypted.toString()); // console.log('base64(ciphertext) <- encrypted.toString():', encrypted.ciphertext.toString(CryptoJS.enc.Base64)); // console.log('ciphertext.toString() -> ciphertext hex :', encrypted.ciphertext.toString()); return encrypted.toString(); } /** * Decrypt ciphertext by DES in ECB mode and Pkcs7 padding scheme * * @param {String} ciphertext(base64 string) * @param {String} key * @return {String} plaintext * */ //DES 解密 function decryptByDES(ciphertext, key) { var keyHex = CryptoJS.enc.Utf8.parse(key); // direct decrypt ciphertext var decrypted = CryptoJS.DES.decrypt({ ciphertext: CryptoJS.enc.Base64.parse(ciphertext) }, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return decrypted.toString(CryptoJS.enc.Utf8); } </script> <script> //加密 function encryptStr() { var strKey = $.trim($('#key').val()); var strMsg = $.trim($('#text1').val()); $('#text2').val(encryptByDES(strMsg, strKey)); } //解密 function decryptStr() { var strKey = $.trim($('#key').val()); var ciphertext = $.trim($('#text2').val()); $('#text3').val(decryptByDES(ciphertext, strKey)); } </script> </head> <body> <h1>JS׃DES-Test</h1> <label>key</label> <input type="text" value='12345678' id="key" /> <div> <textarea id="text1" placeholder="原文" style="width:300px;"></textarea> </div> <div> <input type="button" value="加密" onclick="encryptStr();" /> <textarea id="text2" placeholder="加密结果" style="width:300px;"></textarea> </div> <div> <input type="button" value="解密" onclick="decryptStr();" /> <textarea id="text3" placeholder="解密结果" style="width:300px;"></textarea> </div> </body> </html>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- API接口加密方法
- 基于JWE的API接口加密方案设计
- PHP的RSA加密解密方法以及开发接口使用
- 加密原理详解:对称式加密 VS 非对称式加密
- 编码、摘要和加密(三)——数据加密
- 聊聊对称加密与非对称加密
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
密码学原理与实践
[加]Douglas R.Stinson / 冯登国 / 电子工业出版社 / 2009年 / 55.00元
冯登国(FENG Dengguo,1965.5~), 现为中国科学院软件所研究员、博士生导师,信息安全国家重点实验室主任,国家计算机网络入侵防范中心主任,国家信息化专家咨询委员会委员。目前主要从事信息与网络安全方面的研究与开发工作。一起来看看 《密码学原理与实践》 这本书的介绍吧!