MD5是不可逆的加密算法,也就是无法解密,主要用于客户端的用户密码加密。无论原始字符串是什么,MD5加密串都是32位的十六进制字符串。MD5较容易破解,所以我们一般使用加盐方式多层进行加密 *** 作。
MD5加密算法工具类如下。
public class MD5Util { public static String encrypt(String raw) { String md5Str = raw; try { MessageDigest md = MessageDigest.getInstance("MD5"); // 创建一个MD5算法对象 md.update(raw.getBytes()); // 给算法对象加载待加密的原始数据 byte[] encryContext = md.digest(); // 调用digest方法完成哈希计算 int i; StringBuffer buf = new StringBuffer(""); for (int offset = 0; offset < encryContext.length; offset++) { i = encryContext[offset]; if (i < 0) { i += 256; } if (i < 16) { buf.append("0"); } buf.append(Integer.toHexString(i)); // 把字节数组逐位转换为十六进制数 } md5Str = buf.toString(); // 拼装加密字符串 } catch (NoSuchAlgorithmException e) { e.printstacktrace(); } return md5Str.toupperCase(); // 输出大写的加密串 }}
多层加密算法是这样的。假设我们加密字符串是String a;我们有三个盐,分别是String x,String y,String z。我们先让a字符串拼接上x,进行一次MD5加密;在加密后的字符串上加上y,再进行一次MD5加密;最后在第二次加密后的字符串上拼接上z,再进行一次MD5加密。这样就算被破译了一次,对方不知道我们的x,y,z分别是什么,并且三个值同时作用,可能的情况也会呈几何倍数增加,所以安全度会大大提高。同样的,我们可以使用动态附加传的方式,让x,y,z由后台提供,则可以更好的加大安全度。该方法也可以用于之后讲到的一些可解密的加密算法。之后不再赘述。大家可以参考这里的内容进行应用。
总结以上是内存溢出为你收集整理的Android中MD5加密全部内容,希望文章能够帮你解决Android中MD5加密所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)