MD5算法原理浅谈
原理
请求方对请求数据按一定的规则排序,加上appkey码一起通过MD5加密生成签名,然后把请求数据和签名发给服务方,服务方拿到数据后,去掉appid和无用的数据,通过appid找到请求方的appkey,然后按同样的规则处理数据,并加上appkey通过MD5加密也生成签名,然后和请求方生成的签名去对比,如果值一样,签名验证通过。
需要的东西
服务商一般会给你一个appid,appkey;同时这两个参数服务商也会保存,这两个形成了你的唯一标识。
appid通过网络传输,而appkey是不在网络上进行传输的,只在生成签名时使用,所以安全性还是比较高的。
MD5生成签名的流程
1. 除去加密数组中的空值和签名参数
2. 对数组排序
3. 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
4. 加上appkey值,对形成的数据进行MD5加密,生成签名
public static String getMD5(String s) { String result = ""; try { MessageDigest messageDigest = MessageDigest.getInstance("MD5"); result = byteArrayToHexString(messageDigest.digest(s.getBytes()));
} catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return result; }