消息摘要

消息摘要介绍

MessageDigest:消息摘要,摘要信息(唯一的),软件用判断正版盗版软件

三个算法:md5、sha1、sha256

特点:

  • * 不可逆(通过密文不能推出明文,只能撞库)
  • * 加密后密文长度固定,1kb字符串和1G字符串加密结果长度一样

消息摘要md5的使用

    public static String Md5Str(String str) {
        try {
            MessageDigest digest = MessageDigest.getInstance(MD5);
            byte[] bytes = digest.digest(str.getBytes());
            String s  = Hex.bytes2Hex(bytes);
//            String s = Hex.toHex(bytes);
            return s;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

 

获取文件md5

    public static String MD5File(String path) {
        try {
            FileInputStream fis = new FileInputStream(path);
            MessageDigest digest = MessageDigest.getInstance(MD5);
            byte[] buf = new byte[1024];
            int len = 0;
            while ((len = fis.read(buf)) != -1) {
                digest.update(buf, 0, len);
            }
            byte[] bytes = digest.digest();
            String s = Hex.bytes2Hex(bytes);
//            String s = Hex.toHex(bytes);
            return s;
        } catch (Exception e) {
            Log.e(TAG, "SHA1File: " + e.getLocalizedMessage());
            e.printStackTrace();
        }
        return null;
    }

 

消息摘要sha1sha256的使用

md5:16(加密后密文长度16个字节),32(密文转成16进制32个字节)

sha1:20(加密后密文长度20个字节),40(密文转成16进制40个字节)

sha256:32(加密后密文长度32个字节),64(密文转成16进制64个字节)

消息摘要应用

开发中使用哪个算法:常用md5

应用场景:用户登录/注册,用户密码必须加密传输

只要是用户密码必须使用md5(不可逆的),服务器存储的是密文

    public static void login1() {
        String username = Constant.username;
        String password = "123456";
        try {
            String url = Constant.base_url + "login?username=" + username + "&password=" + MD5.Md5Str(password + "+aa/rewc");
            HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
            InputStream ins = conn.getInputStream();
            String s = IoUtils.convertStreamToString(ins);
            Log.e(TAG, "login: " + s);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

撞库破解md5:不可能穷尽所有密文,加密多次,加盐

上一篇:加密工具类


下一篇:MD5加密算法