MD5加密

作者: Tyhj | 来源:发表于2019-03-08 15:57 被阅读102次

为了数据安全经常会使用到加密技术,学习了一下Android中会用到的加密方法和场景

MD5

主要是对于密码的加密,APP中输入账号密码,本地保存或传输到服务器都可能被获取到;直接操作密码肯定是不安全的,一般是进行MD5加密后再保存或者传输;MD5加密是不可逆的,加密后无法解密,直接将加密后的数据作为密码;这样就算得到用户密码的MD5值,也无法获取用户的密码,就算是管理员也无法得知用户密码

MD5其他的用法,防止被篡改,可以对一些数据先计算MD5,传输后再计算MD5进行对比,如果数据被修改了,MD5肯定就变了

/**
     * 获取MD5字符串
     */
    public static String getMD5(String content) {
        try {
            MessageDigest digest = MessageDigest.getInstance("MD5");
            digest.update(content.getBytes());
            return getHashString(digest);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }
    
/**
     * 将字节数组转换成十六进制字符串
     *
     * @param digest
     * @return
     */
    private static String getHashString(MessageDigest digest) {
        StringBuilder builder = new StringBuilder();
        for (byte b : digest.digest()) {
            builder.append(Integer.toHexString((b >> 4) & 0xf));
            builder.append(Integer.toHexString(b & 0xf));
        }
        return builder.toString();
    }

MD5加盐

获取到MD5加密数据后,虽然无法解密获取密码,但是因为用户的密码是比较短的,如果把可能的密码先MD5处理,保存到数据库,然后再一个个跟你的MD5结果匹配,如果相同那么就获取到了密码;

所以有一种比较好的方法,在用户密码的基础上再加上一些复杂的字符串再计算 MD5,那反推出原始密码就变得非常困难了。加上的这段长字符,我们称为盐(Salt),通过这种方式加密的结果,我们称为 加盐 Hash;

加盐也有不同的方法,简单的可以使用固定的字符串,安全性更高的,生成随机字符串,随机生成的SALT和密码一样也需要相应的保存和获取

/**
     * 设置一个SALT增加复杂度
     */
    private final static String SALT = "qrqhhufadfhsdqwer";
/**
     * 获取加盐的MD5字符串
     */
    public static String getMD5WithSalt(String content) {
        return getMD5(getMD5(content) + SALT);
    }

相关文章

  • iOS常见信息加密方式总结

    目录 MD5加密HMAC加密base64加密对称加密RSA加密 - 非对称加密 一.MD5加密 MD5加密是最常用...

  • iOS 数据加密

    iOS 常用加密方式算法包括MD5加密、AES加密、BASE64加密 MD5加密 MD5:全称是Message D...

  • iOS加密

    iOS代码常见的加密方式包括MD5加密、AES加密、BASE64加密,RSA加密。 MD5加密 MD5是不可逆的只...

  • Java加密

    MD5加密: RSA加密: CBC加密:

  • linux进行md5加密

    linux进行md5加密 openssl做MD5加密 md5加密 交互式输入 管道标准输入处理 对文件处理 md5...

  • 数据加密

    单向散列:哈希加密。 PHP MD5函数 加密长度是64/32位的。MD5("这里是加密串")MD5($POST...

  • iOS开发之系统MD5加密

    常见的加密有Base64加密和MD5加密。Base64加密是可逆的,MD5加密目前来说一般是不可逆的。MD5生成的...

  • Java 常用加密算法(一)---单向加密算法(MD5/SHA)

    Java 常用加密算法(一)---单向加密算法(MD5/SHA) MD5加密MD5以512位分组来处理输入的信息,...

  • md5加密

    md5加密 生成的加密串

  • Java 登录模块设计

    登录流程 前端登录传输用户名和md5加密后的密码 后端对密码在进行md5加密,或者使用md5加密的密码 + id ...

网友评论

    本文标题:MD5加密

    本文链接:https://www.haomeiwen.com/subject/bfgrpqtx.html