美文网首页
md5签名验证错误, 不同平台签名不同

md5签名验证错误, 不同平台签名不同

作者: 沫晚霞光 | 来源:发表于2020-01-16 16:45 被阅读0次

    0. 问题描述

    位置: 用户登录接口
    描述: 通过模拟器将登录参数传给服务器, 客户端(模拟器)计算出来的签名与服务器计算出来的签名相同; 而通过手机, 客户端与服务器计算出来的签名不同.
    现象就是: 模拟器登录, 签名验证成功, 手机登录, 签名验证失败

    1. 问题原因

    在登录参数中, 有一个参数的值在计算md5签名前使用了encodeurl方法.
    这个导致了:
    (1)通过模拟器传递参数, 对于字符串中的"+", "/"等之类的特殊符号, 传递给服务器后, 服务器收到后结果为替换后的符号(仍为encodeurl后的结果)
    (2)通过手机传递参数, 那些特殊符号, 传递给服务器后, 服务器收到后结果为特殊符号(encodeurl之后重新解析的结果, 即原来的值)

    2. 解决办法

    对于可能含有特殊符号的参数值, 进行签名时用原来的值, 签名之后, 对于可能含有特殊符号的参数值, 根据平台判断是否使用encodeurl方法(若为android手机, 使用encodeurl方法; 其他不使用)

    3. 感慨

    这个问题也折腾了半天, 算是进步了.
    终于知道项目登录接口代码里, 有的参数值是在签名之后根据平台决定是否使用encodeurl. 就是防止上面指出的这个问题.

    相关文章

      网友评论

          本文标题:md5签名验证错误, 不同平台签名不同

          本文链接:https://www.haomeiwen.com/subject/wenfzctx.html