浅谈使用postman的CryptoJS.MD5加密带有中文(已进行unicode编码)以及url的字符串与md5在线加密工具加密不一致的原因,附加解决方法。

废话不多说,直接上代码以及加密结果:

1.在postman中,使用CrytoJS.MD5加密带有中文字符串:

此处列举了转码前后转码(unicode)后的加密结果。
在这里插入图片描述
2.使用MD5在线加密工具对字符串进行加密:
加密转码后的字符串(32位小写)
在这里插入图片描述
直接加密未转码的字符串(32位小写):
在这里插入图片描述
从上面几种的加密结果可以看出,postman的CrytoJS.MD5对已转码的中文字符串进行加密时,不会直接加密转码后的字符串,会将转码后的字符串重新转码成中文加密

3.加密使用了转义字符的url:
postman的加密结果
在这里插入图片描述
MD5在线加密的结果(32位小写):
在这里插入图片描述
加密使用了转义字符的url(32位小写加密)

在这里插入图片描述
从上面几种的加密结果可以看出,postman的CrytoJS.MD5对已转义的URL字符串进行加密时,不会直接加密转码后的字符串,会将转码后的字符串重新转码成原本的url加密

解决方案:
1.解决postman对unicode编码后的内容进行加密处理时,会重新转码成中文加密的方法是,在转码后的字符串前,加转义字符,如:
在这里插入图片描述
2.解决postman对转义后的url内容进行加密处理时,仍会对原url进行加密处理的方法:在已经转义的url前,在加一个转义符号,如:
在这里插入图片描述

小结:
由于我们后端是php语言,在生成接口签名时,需要对中文和url进行转义处理,并且是对转义后的结果进行加密,所以我之前一直无法使用postman生成正确的验签,通过上述例子的比较,我得出一个结论:postman对字符串加密时,不会直接处理转义、转码后的内容,而是会对原内容进行处理,为了规避postman这样的处理机制,我们只需要对转义后的内容在转义一次,然后在进行加密处理,即可得到与MD5在线加密工具加密后一样的内容。

                                                         ------------------------------------------------------------------------------------------------学海无涯
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Postman是一种流行的API测试工具,它提供了多种方式进行API测试。其中,使用MD5加密签名是一种常见的API安全验证方法。下面介绍两种使用MD5加密签名的方法方法一:使用Pre-request Script 在Postman中,可以使用Pre-request Script来添加MD5加密签名。 1. 首先需要在Pre-request Script中定义一个函数来计算MD5签名,如下所示: ``` function md5(string) { var crypto = require('crypto'); return crypto.createHash('md5').update(string).digest('hex'); } ``` 2. 接下来,在请求的Header中添加一个名为“X-Signature”的Header。 3. 在Pre-request Script中,使用以下代码计算MD5签名并将结果赋值给“X-Signature”Header: ``` var secret = 'your-secret-key'; var body = request.data; var timestamp = Date.now(); var stringToSign = secret + JSON.stringify(body) + timestamp; postman.setEnvironmentVariable('X-Signature', md5(stringToSign)); ``` 4. 将“secret”替换为你自己的密钥,然后发送请求即可。 方法二:使用Postman Collection Runner 另一种方法使用Postman Collection Runner。这种方法可以自动化测试多个API,并在测试过程中使用MD5签名。 1. 首先,在请求的Header中添加一个名为“X-Signature”的Header。 2. 然后,在请求的Body中添加一个名为“timestamp”的字段,并将其设置为当前时间戳。 3. 接下来,在Postman Collection Runner中,选择“Pre-request Script”选项卡,然后添加以下代码: ``` function md5(string) { var crypto = require('crypto'); return crypto.createHash('md5').update(string).digest('hex'); } var secret = 'your-secret-key'; var body = request.data; var timestamp = Date.now(); var stringToSign = secret + JSON.stringify(body) + timestamp; postman.setEnvironmentVariable('X-Signature', md5(stringToSign)); ``` 4. 将“secret”替换为你自己的密钥,然后运行Collection Runner即可。 无论使用哪种方法,都应该能够成功使用MD5加密签名进行API测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值