首先,实现RSA加密,需要用到pycrypto这个库,这个库又依赖openssl,所以需要先下载openssl,具体教程可以参考http://bbs.csdn.net/topics/392193545?page=1
安装完成后就可以安装pycrypto, pip install pycrypto ,如果报的错是VC++ ,那么就现在安装vc++在安装pycrypto ,https://www.microsoft.com/en-us/download/details.aspx?id=44266
java版的加密函数如下:

public static String sign(byte data, final String privateKey) throws Exception {byte keyBytes = Base64Utils.decrypt(privateKey);PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);KeyFactory keyFactory = KeyFactory.getInstance("RSA");PrivateKey privateK = keyFactory.generatePrivate(pkcs8KeySpec);Signature signature = Signature.getInstance("MD5withRSA");signature.initSign(privateK);signature.update(data);return Base64Utils.encrypt(signature.sign());
}

具体的python函数如下:

import hashlib
import base64
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA
from Crypto.Hash import MD5priKey = '''-----BEGIN RSA PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAN8M7oBSoZOzAoxL3tmzku/ZTtQn/BBqfe8jj0GZeFKh0IY8qDpFrNONzxp4S+TH4xCXYyEFkkEIcS9SKMCbqba
-----END RSA PRIVATE KEY-----'''def sign(self, signdate):reload(sys)sys.setdefaultencoding('utf-8')h=MD5.new(signdate)signer = PKCS1_v1_5.new(RSA.importKey(priKey))signn = signer.sign(h)signn=base64.urlsafe_b64encode(signn)return signn

priKey是私钥,每个公司的私钥是不一样的。

在robotframework中导入自己写的py文件就可以调用sign了,但是这个签名结果后面多了一个‘=’,需要加一步替换,把=替换为空,

在python内置的base64库中,可以直接进行编码,base64.b64encode,但是编码后的数据可能会出现‘+’或者‘/’,这在rul中是不能作为参数的,而base64.rulsafe_b64encode则把‘+’或‘/’转换成‘-‘或者’_‘。具体编码函数看需求,如果是做url则必须用urlsafe
Base64是一种通过查表的编码方法,不能用于加密,即使使用自定义的编码表也不行。
Base64适用于小段内容的编码,比如数字证书签名、Cookie的内容等。
由于=字符也可能出现在Base64编码中,但=用在URL、Cookie里面会造成歧义,所以,很多Base64编码后会把=去掉,这也就是上面提到的为什么多了一个’=‘。

get。
接口测试第一步是创建session,第一个参数是alias,也就是命名,识别用的,第二个参数为url,第二行为rsa加密,看需要,第五行是创建头文件(具体参数看公司需求),第六行是参数变量,第八行即为连接api,第一个参数是alias,需要跟上面的保持一致,第二个参数是uri,第三第四为头文件跟参数变量

post
post跟get基本一致,在post需要注意接口传参是用data还是用params。params是在请求url里的参数,而data是请求body里的,可以是json,也可以是urlencoded,试具体情况而定(经雪霁大神指正)。

data如下,其实也就是把params改成data

使用params还是data对签名也有影响,使用params时,签名需要把所有参数附上,而且得按字母排序,用data时就不用加上参数。(本公司RSA加密的签名规则是这样,其他公司的具体的就不知道了,不懂得可以问问公司开发人员)具体如下:

/public/corporate/fund/proposa?fundCode=${fundCode}&investmentAmount=${investmentAmount}&x-api-key=I&x-api-timestamp=${timestamp}&x-api-version=2.0
/public/corporate/fund?x-api-key=I&x-api-timestamp=${timestamp}&x-api-version=2.0

在我这里,rsa加密,如果参数是json格式,那么在加密的时候是不需要加参数的,参数直接在post request用data进行传输,数据在这里有一个需要注意的地方,那就是

{"accountNumber": "IF2016070100000044","corporateUserCode": 0,"investorPayId": 28,"merchantNumber": "IF2017112100003","password": "if123","payMethod": 0,"purchaseFunds": [{"currency": "156","fundCode": "0408","investmentAmount": 10}],"riskConfirmed": 1
}

json里面有没有出现数组,即有没有出现中括号’[’,‘ ]‘,有的话,需要先进行create dictionary 之后再进行create list,这样传输的数据才能正确。

时间戳:
获取当前时间的时间戳为:${date} get time epoch;get time 是内置库BuiltIn的关键字
把时间转成时间戳:${date} Convert Date 2017-11-22 10:00:00 epoch;Convert Date是Date Time库的关键字
把时间戳转成时间:${date} get time ‘空一格’ ${time};注意在空一格那位置上空一格。。
 
有什么错误的地方欢迎大家指点,共同学习。

转载于:https://www.cnblogs.com/changyou615/p/8776780.html

robotframework 接口测试 +RSA 加密相关推荐

  1. python3.7中RSA加密遇到的问题

    python3.7中RSA加密遇到的问题 对于网络上有很多python3.7中RSA加密代码,一般都是生成公钥或者私钥,测试接口的时候公司一般会规定要使用的公钥,则代码就会报错拿登录接口测试举例: 1 ...

  2. Python加密—RSA加密

    为什么80%的码农都做不了架构师?>>> 公钥加密,私钥解密. import rsa import base64 from Crypto.PublicKey import RSA # ...

  3. iOS使用Security.framework进行RSA 加密解密签名和验证签名

    iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...

  4. RSA加密传输代码示例

    RSA加密传输代码示例 涉及敏感数据的传输,双方最好约定使用加密解密.那RSA非对称加密就大有作为了. 服务端可以保留自己的私钥,发给客户端对应的公钥.这样就可以互相加解密了.php中rsa加解密实现 ...

  5. ios android rsa加密解密,IOS RSA加密解密

    最近项目中对接口进行了rsa 加密. 写下过程以便复习 公钥私钥一般是有后台给的,这里为了方便 自己生成一对秘钥 生成公钥 私钥. 终端中: 生成原始 RSA私钥文件 private_key.pem ...

  6. robotframework接口测试(二)—post request

    第5行:发起post请求.因为我写了好多的参数,所以这样写的. 也可以这样写 其他行:可见[robotframework接口测试(二)-get request json] 转载于:https://ww ...

  7. python后端开发框架加密_Flask框架实现的前端RSA加密与后端Python解密功能详解

    本文实例讲述了Flask框架实现的前端RSA加密与后端Python解密功能.分享给大家供大家参考,具体如下: 前言 在使用 Flask 开发用户登录API的时候,我之前都是明文传输 username ...

  8. 一篇搞定RSA加密与SHA签名|与Java完全同步

    看到这篇文章的同学可幸福了,当时在做RSA加密与签名的时候网上的资料简直不要太老,做完后实在是忍受不下去了,这篇文章我会详细讲解iOS如何实现RSA加密与签名,并且与Java完全同步,这是我的第二篇博 ...

  9. linux 加密可逆,RSA加密是可逆的吗

    java rsa加密可逆吗可逆.有秘钥就成. linux上RSA加密每次都变化吗 加密解密的技术: 对称加密 加密方和解密方使用是同一个密钥,加密解密的速度都很快,先将数据明文 分成数据块儿,一般来讲 ...

  10. python3 rsa加密_【Python】Python3 实现 JS 中 RSA 加密的 NoPadding 模式

    前因后果之哗啦啦废话连篇: 这几天本人在 Python 做某网站登陆的时候,发现其登陆时用户名和密码被加密了 F12 仔细看了一下,发现是调用了一个 js 的 rsa 加密库,页面 dom 中有 rs ...

最新文章

  1. 3 OC 属性和方法
  2. Message LongText(消息的详细长文本)
  3. Inside dependency property
  4. React之类式组件
  5. for each循环_Power Query — 循环初步
  6. 一个简单的PHP Web论坛
  7. 原生JS如何实现包含各种类型数据的深克隆
  8. SQL Server 查询性能优化——覆盖索引(一)
  9. 2.VMware View 4.6安装与部署-域环境
  10. Java多线程_生产者消费者模式1
  11. Splunk数据处理
  12. 网易云信 java demo_网易云信Web IM搭建(Demo)
  13. 微型计算机的拼音,微型计算机拼音
  14. 西湖论剑2021杂项(misc)--YUSA的小秘密
  15. 游戏攻略资料收集,制作技巧经验分享-游戏编辑2
  16. VMware15Pro 安装CentOS7
  17. Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]
  18. 使用nose进行python自动化测试
  19. 数字图像-理想低通滤波器
  20. java毕业设计青少年心理健康公益扶助网站源码+lw文档+mybatis+系统+mysql数据库+调试

热门文章

  1. 李炎恢老师的php源码以及附带一个php手册
  2. IDEA 2020.3 更新了,机器学习都整上了
  3. SpringMVC 注解 @Scope、@PostConstruct、@PreDestroy、@ComponentScan
  4. idea运行报Command line is too long
  5. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第1节 网络通信概述_4_IP地址...
  6. laravel 分页使用
  7. 【共读Primer】8.[2.1] 基本内置类型(2) Page32
  8. JavaScript Number 对象
  9. [SDOI2010]代码拍卖会
  10. SQL window身份登陆 SQL server不能登陆