1. md5一般是用来做摘要认证,验证文件是否被修改过,所以传输的数据包括两部分,一个是要传输的内容,一个是内容的md5值,当然发起方和接收方必须有一个共同的秘钥
2. 发送方将要传输的内容和秘钥拼接起来做md5得到md5值,即:md5值=md5(内容+秘钥)
3. 将md5值和内容一起传给接收方
4. 接收方因为有秘钥,现在也有了内容,可以通过md5(内容+秘钥)这个相同的方法来计算md5值,再将这个值与收到的md5值进行比较,如果相等,则说明内容没有被修改,否则则是被篡改过
具体的md5算法如下:
public class Md5Test { public static String bytesToMD5(byte[] input) { String md5str = null; try { //创建一个提供信息摘要算法的对象,初始化为md5算法对象 MessageDigest md = MessageDigest.getInstance("MD5"); //计算后获得字节数组 byte[] buff = md.digest(input); //把数组每一字节换成16进制连成md5字符串 md5str = bytesToHex(buff); } catch (Exception e) { e.printStackTrace(); } return md5str; } public static String bytesToHex(byte[] bytes) { StringBuffer md5str = new StringBuffer(); //把数组每一字节换成16进制连成md5字符串 int digital; for (int i = 0; i < bytes.length; i++) { digital = bytes[i]; if(digital < 0) { digital += 256; } if(digital < 16){ md5str.append("0"); } md5str.append(Integer.toHexString(digital)); } return md5str.toString().toUpperCase(); } }