• postman 密码rsa加密登录-2加密密码


    上一篇讲了获取公钥,将环境准备好之后,在登录接口的Pre-request Scrip 里,使用公钥进行加密后在正常登录。本文采用的方案是使用第三方模块forge.js来实现加密。

    1、环境准备好,系统git 和node都OK。下载forge.js

    git clone https://github.com/digitalbazaar/forge.git

          进入下载的路径下进入bash进行安装

    npm install

    安装遇到的问题:

    问题一:

    Error: EPERM: operation not permitted, mkdir 'D:\Program Files\nodejs\node_global\node_modules

            是因为node是admin权限,用户无该文件权限。解决方法nodejs文件右键属性,在安全里修改文件权限,用户的权限全加,重新安装不再报这个错。

    问题二:

    Error: error:0308010C:digital envelope routines::unsupported

          是因为node.js版本过高的原因,卸载后重新安装V17以下版本,重新安装不再报错。

    2、Pre-request Scrip脚本如下

           修改明文密码后,进行加密即可。有的文章提到加密前,密码后还加了时间戳之类的信息,这个就看具体的系统是如何实现的,具体可以咨询开发同事。

    1. var clearText = '123456'
    2. var public_key ='-----BEGIN PUBLIC KEY-----\n'+
    3. pm.environment.get("pubKey") + '\n' +
    4. '-----END PUBLIC KEY-----'
    5. //postman自带的加密函数是cryptoJS,无法满足;因此需要引用第三方库forge.js
    6. //调用forge.js服务的地址:https://raw.githubusercontent.com/loveiset/RSAForPostman/master/forge.js打不开时,就用https://lzq1357.gitee.io/various/forge_min.js
    7. const forge_url = "https://lzq1357.gitee.io/various/forge_min.js"
    8. //定义Rsa加密函数encryptRsa,其中public_key为公钥,clearText为所需要加密的内容
    9. function encryptRsa(public_key,clearText){
    10. console.info('clearText:' + clearText)
    11. //公钥转化为pem格式
    12. var publicKey = forge.pki.publicKeyFromPem(public_key)
    13. //创建缓冲区,所需要加密内容设置编码格式
    14. var buffer = forge.util.createBuffer(clearText, 'utf8')
    15. //转化为字节
    16. var bytes = buffer.getBytes()
    17. //publicKey.encrypt(bytes,'RSAES-PKCS1-V1_5')加密函数,把明文使用'RSAES-PKCS1-V1_5'加密成密文
    18. //forge.util.encode64()把加密后的密文按encode64进行编码输出
    19. var encryptedText = forge.util.encode64(publicKey.encrypt(bytes,'RSAES-PKCS1-V1_5',{
    20. md:forge.md.sha256.create(),
    21. mgf1:{
    22. md:forge.md.sha1.create()
    23. }
    24. }));
    25. //控制台输出加密内容
    26. console.info('encryptedText:' + encryptedText)
    27. return encryptedText;
    28. };
    29. //第一次运行时从网络加载forgeJS,会导致请求失败
    30. if(!pm.globals.has('forgeJS')){
    31. console.log('request forge.js from ' + forge_url)
    32. pm.sendRequest(forge_url,function(err,res){
    33. if(err){
    34. console.error(err)
    35. } else {
    36. console.info("request forge.js: Succeed,please try again")
    37. pm.globals.set('forgeJS',res.text())
    38. }
    39. });
    40. return;
    41. };
    42. //设置全局变量forgeJS
    43. eval(pm.globals.get('forgeJS'))
    44. //定义加密,调用Rsa加密函数encryptRsa
    45. var encryptedText = encryptRsa(public_key,clearText)
    46. //控制台输出加密
    47. console.log(encryptedText)
    48. //第三部分------设置环境变量password
    49. pm.environment.set("password",encryptedText)

    3、下发登录接口 ,查看接口返回里,已经有系统的cookie拉。

  • 相关阅读:
    Android开发之应用更新或软件下载
    [论文精读|顶刊论文]Relational Triple Extraction: One Step is Enough
    zookeeper分布式锁demo
    【QML】一文入门QML应用程序的性能分析
    一文解读如何应用 REST 对资源进行访问?
    2022年最新湖北建筑特种工(施工升降机)模拟题库及答案
    HarmonyOS NEXT中怎么理解HAR、HAP、HSP、App的关系
    mathtype设置公式编号,公式居中以及编号靠右
    Inductor characater
    LeetCode 239 滑动窗口最大值
  • 原文地址:https://blog.csdn.net/qq_34020468/article/details/133774350