对明文编码生成信息摘要,以防止被篡改。比如MD5使用的是Hash算法,无论多长的输入,MD5都会输出长度为128bits的一个串。
摘要算法 不要秘钥,客户端和服务端采用相同的摘要算法即可针对同一段明文获取一致的密文。
对称加密
对称加密算法 是共享密钥加密算法,在加密解密过程中,使用的密钥只有一个。发送和接收双方事先都知道加密的密钥,均使用这个密钥对数据进行加密和解密。
数据加密:在对称加密算法中,数据发送方将明文 (原始数据) 和 加密密钥一起经过加密处理,生成复杂的密文进行发送。
数据解密:数据接收方收到密文后,使用加密的密钥及相同算法的逆算法对加密的密文进行解密,将使其恢复成可读明文。
非对称加密
非对称加密算法,有两个密钥,一个称为公开密钥 (publickey),另一个称为 私有密钥 (private key),加密和解密使用的是两个不同的密钥,所以这种算法称为非对称加密算法。
如果使用公钥对数据进行加密,只有用对应的私钥才能进行解密。
如果使用私钥对数据进行加密,只有用对应的公钥才能进行解密。
常见加密算法的处理方式
根据上述常见的加密算法,测试人员在测试不同的加密接口可采用下述的方法处理加密接口:
摘要算法(MD5.SHA1 ):造接口数据前调用MD5,SHA1进行编码,服务端对比编码后的字符串是否一致。
对称加密算法(AES,DES ):造接口数据前从开发获取对称公钥,基于对称公钥可以加密请求数据,解密响应报文。
非对称加密算法(RSA):造接口数据前从开发获取公钥私钥去加密解密接口数据
用户认证
一般的接口测试工具都会提供一个User Auth/Authorization的选项,以Postman为栗子,你可以看到以下的选项:
- 基本认证(Basic Auth)
- 摘要认证(Digest Auth)
OAuth 1.0a
OAuth 2.0(最常见,现在的网站接口多数提供此用户认证方式)
在对应的工具上,你可以选取对应的用户认证选项。
接口中有数据要进行加密,如何处理?
(1)写个函数或者方法,把要加密的参数使用这个函数过滤一遍,等于就是说把数据丢进去,加密了之后,再通过这个加密好的数据传输过去就可以。
(2)至于用什么加密算法,这个要根据产品和自己的业务场景和需求不管是AES或者公钥私钥也好看自己的选择。
(3)也可能是编码的问题,就直接用base64码把需要传输加密的东西通过base64返回base64码,然后再放进去,然后再进行传输。
(4)这是编码不是加密,真的要加密的话,首先把要用的参数加好密之后再被传输出去,传输的过程中把传输的数据进行一次加密和封装之后再发送过去。
(5)用jmeter做接口测试用post-processor加beanshell进行加密解密,再从日志中查找参数,然后具体的加密算法要看需求。
(6)每个测试工具提供的加密算法是不一样的,工具不一样加密算法也是不一样的。