签名算法

签名算法 ================= 说明:secretKey是前后端约定好的加密字符串 这里假设 secretKey = hello **注意**: ++所有POST请求的接口都需要签名 并且附加三个参数:‘time’ 代表客户端当前时间戳(10位),‘salt’客户端生成的随机字符串,‘sign’客户端计算出来的签名++ ## 加密步骤: 1. 生成salt,salt为客户端生成的随机字符串 2. 将salt值进行二次处理 - salt值左右各去除一个字符,产生新的字符串saltA - 在saltA的第2个字符后插入secrectKey - saltA字符串进行反转处理,产生字符串saltB 3. 请求的非空参数值的参数按照参数名ASCII码从小到大排序(字典序) 使用URL键值对的格式(即key1=value1&key2=value2…&)拼接成字符串stringA stringA拼接键值对key=saltB生成新的字符串stringB *key参数只负责计算签名,请求参数不包含key 4. MD5计算stringB的产生32位字符结果值,结果值转为大写后产生的字符串为sign参数值 示例 --- 假设随机生成的salt = 123456 那么saltA = 2345, 在saltA的第2个字符后插入secrectKey后得到 23hello45 故:key = saltB = 54olleh32 若POST参数值: chapter_id:2 book_id:1 先加上time,和salt 参数得到 chapter_id:2 book_id:1 time:1613752982 salt:123456 生成的字典排序的query字符串: book_id=2&chapte_id=1&salt=123456&time=1613752982 然后在拼接好的字符串最后再拼接 key 得到: book_id=2&chapte_id=1&salt=123456&time=1613752982&key=54olleh32 最后将以上query字符串MD5后转大写得到sign 生成的签名:EE8F82BEB933F4C7601BD048E4DB0BC4 最后请求接口的参数为 chapter_id:2 book_id:1 time:1613752982 salt:123456 sign:EE8F82BEB933F4C7601BD048E4DB0BC4