剁完手还没收到快递,诈骗电话就来了,一文了解如何提高电商隐私安全?>>>Postman报文进行加密之RSA公钥加密_postman

RSA公钥加密和私钥加密整个结构是一致的,《Postman报文进行加密之RSA+Bate64》中私钥做的签名,这里RSA公钥是进行加密。

//--------RSA使用公钥对AES密码进行加密-------------//

function pubencrypt(pubencrypt_key, aeskey){

console.info('pubencrypt_key:'+pubencrypt_key);

console.info('aeskey: ' + aeskey);

//注意此处上下的BEGIN PRIVATE KEY不要删除,框架自带的

const public_key = '-----BEGIN PUBLIC KEY-----\n'

+ pubencrypt_key

+ '\n-----END PUBLIC KEY-----';

var publicKey = forge.pki.publicKeyFromPem(public_key);

var buffer = forge.util.createBuffer(aeskey, 'utf8');

var bytes = buffer.getBytes();

var pubencryptedText = forge.util.encode64( publicKey.encrypt(bytes, 'RSAES-PKCS1-V1_5', {

md: forge.md.sha256.create(),

mgf1: {

md: forge.md.sha1.create()

}

})

);

console.info('pulencryptedText: '+ pubencryptedText);

return pubencryptedText;

}

// 第一次运行时从网络加载forgeJS,会导致请求失败

if(!pm.globals.has('forgeJS')){

console.log('request forge.js from ' + forge_url);

pm.sendRequest(forge_url, function (err, res) {

if (err) {

console.error(err);

} else {

console.info("request forgs.js: Succeed, please try again");

pm.globals.set('forgeJS', res.text());

}

}

);

}

eval(pm.globals.get('forgeJS'));

pubencryptedText = pubencrypt(pubencrypt_key,vkey);

console.log(pubencryptedText);

postman.setGlobalVariable("encryptkey",pubencryptedText)

这一段主要实现使用RSA公钥加密AES密码,AES密码是自己定义的,加密后的密文传递给变量"encryptkey",作为实际请求的参数。

'pubencrypt_key'是RSA公钥需要加上公钥的格式;

 

const public_key = '-----BEGIN PUBLIC KEY-----\n'

+ pubencrypt_key

+ '\n-----END PUBLIC KEY-----';

'aeskey'是自定义的AES密码;

forge.pki.publicKeyFromPem(public_key)转换pem格式的公钥;

forge.util.createBuffer(aeskey, 'utf8')创建缓冲区,设置编码格式;

buffer.getBytes()转成字节;

publicKey.encrypt(bytes, 'RSAES-PKCS1-V1_5')加密函数,把明文使用'RSAES-PKCS1-V1_5'加密成密文;

forge.util.encode64()把加密后的密文按照encode64进行编码输出;

setGlobalVariable()将密文赋值给Body栏目对应的字段;

这样需要签名加密的参数都完成了,就可以使用新Body发起HTTP请求。