内容简介:一个接口,初期开发的时候没有考虑加密。最近突然想到需要加密传输的数据。比如客服端发送的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>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
How to Solve It
Zbigniew Michalewicz、David B. Fogel / Springer / 2004-03-01 / USD 59.95
This book is the only source that provides comprehensive, current, and detailed information on problem solving using modern heuristics. It covers classic methods of optimization, including dynamic pro......一起来看看 《How to Solve It》 这本书的介绍吧!