ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android中MD5加密

2021-03-20 16:01:11  阅读:171  来源: 互联网

标签:加密 String offset 字符串 Android 加密算法 MD5


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由后台提供,则可以更好的加大安全度。该方法也可以用于之后讲到的一些可解密的加密算法。之后不再赘述。大家可以参考这里的内容进行应用。

标签:加密,String,offset,字符串,Android,加密算法,MD5
来源: https://blog.csdn.net/weixin_38322371/article/details/115028800

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有