1. 首页 > 人力资源 > 在线面试

软件面试题加密接口如何测试

加密接口测试的方法与要点

面试

加密接口测试的基本方法

加密接口测试旨在验证接口加密算法的正确性和安全性。常见的加密算法包括AES、DES、RSA、MD5、SHA1等,不同算法有着不同的特性和处理方式。

  • 针对摘要算法(MD5、SHA1等):由于摘要算法不需要密钥,客户端和服务端采用相同的摘要算法针对同一段明文就能获取一致的密文。测试时,在造接口数据前调用MD5、SHA1进行编码,然后由服务端对比编码后的字符串是否一致。
  • 对称加密算法(AES、DES等):这是共享密钥加密算法,加密解密使用同一个密钥。测试人员造接口数据前需从开发获取对称公钥,基于该对称公钥可以加密请求数据,解密响应报文。
  • 非对称加密算法(RSA):有公开密钥和私有密钥两个密钥,加密和解密使用不同密钥。测试前要从开发获取公钥私钥去加密解密接口数据。 另外,还可以进行接口加密字典测试,通过加密算法使用的密钥、向量等信息(一般由开发人员提供)组成的加密字典对接口进行测试。使用各种输入值进行测试时,要检查输入值是否符合要求、输出值是否正确、加密算法的安全性是否达标。也可利用模拟器对加密算法进行测试,模拟器能够模拟多种加密算法(如RSA、AES、MD5等),同样使用多种输入值测试并验证输出结果是否符合预期,期间也要检查输入值、输出值和加密算法安全性。

软件面试中加密接口测试的重点

  • 确定加密接口需求:要明确哪些接口有加密需求,在业务测试中,登录接口涉及加密情况较多。在测试时,前端操作功能的时候,需要检查前端传给接口的参数是否经过前端加密。如果是前端加密,可以询问前端人员加密规则,直接在接口测试时传入加密后的参数,检查能否正确得到返回结果;如果不是前端加密,可能是后端加密,此时正常传入业务参数,调用接口后检查接口请求后数据库存放的是否是经过接口加密的数据,将提前加密好的数据和数据库进行对比。
  • 关注加密方式与工具支持:了解接口使用的加密方式(如md5、rsa等),检查接口测试工具是否支持这种加密方式。如果支持,直接使用对应功能(例如Jmeter支持md5);若加密方式是公司内部特有的,则需要特殊处理。
  • 数据流转正确性:解密操作在测试中通常不是重点关注内容,更多是关注传入的参数在整个数据流转中是否正确。要构造各种正常和异常情况的传入参数进行测试,确保数据在加密接口中的流转符合预期。

加密接口测试的工具和技术

  • Jmeter:以Jmeter为例,如果接口在服务器实现逻辑处理前对接口数据进行SHA加密,服务器获取加密接口数据后先解密和验证数据合法性有效性再进行逻辑处理。测试时,要和开发沟通接口加密的算法以及需要的信息(如SHA加密时要获取加密的秘钥以及加密和编码的关键字符串)。在发起接口请求前,对接口明文数据进行预处理,在Jmeter的接口实现中,可通过添加Beanshell脚本,基于获取到的信息,采用和服务端相同的加密方法和加密流程对接口明文进行加密和编码,再基于加密后的密文发起加密请求。
  • Postman:Postman工具中的pre - request模块(采用js语法)可用于加密操作。例如在测试登录接口时,针对登录接口需要用到的username、password进行加密(加密方式分别为rsa、aes),可在该模块中编写代码实现加密,再将加密后的数据传输给后端。
  • Python+Requests:使用python+requests也可以进行加密接口测试,其中的签名md5加密可以使用python中的hashlib模块来实现。例如在测试百度通用翻译接口时,可以利用该组合来实现接口的调用和加密相关的操作,包括生成加密签名等操作。

实际案例中的加密接口测试流程

  • 用例分析前的准备:通过追查公司故障原因、与相关人员(CTO、产品经理、研发、运维、测试等)调查得到质量痛点,分析业务架构、流程调用以及监控系统了解业务使用数据,从而得到质量需求。然后与产品经理、项目经理、研发总监等对接,得知待测业务范围、业务场景用例、业务接口分析,确定公司的测试计划。接口封装思想分为配置、接口封装、业务流程3个大维度,配置用于获取初始配置和依赖;接口封装遵循apiobject设计模式对接口调用抽象封装;业务流程负责数据初始化、业务用例设计等。
  • 加密接口测试的具体操作:如果面对加密的响应结果,首先要确定加密算法。如果是已知的通用加密算法,可以自行解决;如果不了解对应的加密算法,可以让研发提供加解密的lib;如果既不是通用加密算法、研发也无法提供加解密的lib,可以让加密方提供远程解析服务。以对一个响应加密的接口测试为例,先对其发起get请求得到加密后的响应信息,若使用base64加密,可调用base64直接对返回的请求做解密得到解密后的响应,将其转为json格式后就可以进行断言操作。如果要使测试代码更优雅、通用,可对请求信息进行封装,如通过字典结构体保存请求信息(包括发送的协议、解码方式、请求method等),根据结构体中的相关字段(如schema判断协议类型,encoding判断加密条件等)来选择不同的请求协议和解密方式。

加密接口测试常见错误及解决方法

  • 加密算法理解错误:如果对加密算法的原理、工作方式理解不到位,可能会导致测试用例设计不合理。例如在非对称加密中,混淆公钥和私钥的使用场景。解决方法是深入学习各种加密算法的原理、流程以及适用场景,与开发人员进行充分沟通,确保对加密算法有准确的理解。
  • 密钥管理问题:在对称加密中,若密钥获取错误或者在测试过程中密钥丢失、泄露,会影响测试结果。要确保从开发获取正确的密钥,并妥善保管。如果发现密钥泄露,及时通知相关人员更换密钥,并重新进行测试。
  • 工具使用不当:不同的测试工具对加密接口测试有不同的操作方式,如果对工具使用不熟练,如Jmeter中Beanshell脚本编写错误,或者Postman中pre - request脚本编写错误等,会导致加密操作失败或者测试结果不准确。需要深入学习工具的使用方法,参考官方文档、教程等资料,进行多次练习,提高工具使用的熟练程度。

声明:本文网友投稿,观点仅代表作者本人,不代表鲸选型赞同其观点或证实其描述。

联系我们

在线咨询:点击这里给我发消息

微信号:

工作日:9:30-18:30,节假日休息