美文网首页
Android----- MD5加密(登录注册得到与IOS相同的

Android----- MD5加密(登录注册得到与IOS相同的

作者: 切切歆语 | 来源:发表于2019-12-03 23:53 被阅读0次

最近开发项目中遇到一个这样的问题,注册和登录时需要对信息MD5加密生成一个Token传给后台,

后台会对信息进行比较加密是否相同,才表示你登录或者注册成功,所以,IOS和Android两个平台的token值就要相同了。

我第一次做的时候注册或者登录时输入英文注册就没问题,但是输入中文时,和IOS的签名就不一样了,就不能注册和登录了。

MD5简介:

Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。

MD5算法具有以下特点:
压缩性:任意长度的数据,算出的MD5值长度都是固定的。
容易计算:从原数据计算出MD5值很容易。
抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD

Token值中也包含了时间戳,得到时间戳的几种方式:

  long i=System.currentTimeMillis();
      long i2=Calendar.getInstance().getTimeInMillis();
      long i3=new Date().getTime();

第一次开发时用的MD5加密,英文时和IOS相同,但是汉字就不相同了。

public static final String MD5(String inStr) {
        MessageDigest md5 = null;
        try {
            md5 = MessageDigest.getInstance("MD5");
        } catch (Exception e) {
            System.out.println(e.toString());
            e.printStackTrace();
            return "";
        }
        char[] charArray = inStr.toCharArray();
        byte[] byteArray = new byte[charArray.length];

        for (int i = 0; i < charArray.length; i++)
            byteArray[i] = (byte) charArray[i];

        byte[] md5Bytes = md5.digest(byteArray);

        StringBuffer hexValue = new StringBuffer();

        for (int i = 0; i < md5Bytes.length; i++) {
            int val = ((int) md5Bytes[i]) & 0xff;
            if (val < 16)
                hexValue.append("0");
            hexValue.append(Integer.toHexString(val));
        }

        return hexValue.toString();
    }

后面为了解决这个,查阅资料,弄了这个MD5加密方式,才能输入汉字也能与IOS的加密方式相同了。

public static String stringToMD5(String string) {
        byte[] hash;
        try {
            hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return null;
        }
        StringBuilder hex = new StringBuilder(hash.length * 2);
        for (byte b : hash) {
            if ((b & 0xFF) < 0x10)
                hex.append("0");
            hex.append(Integer.toHexString(b & 0xFF));
        }
        return hex.toString().toLowerCase();
    }

看着差不多,其实还是有所区别的,起初以为是编码格式的问题;

便把输入的值转成UTF-8的格式,用第一种方式来请求接口,但是还是不行;

所以才把MD5加密的方法改成第二种;才解决前面我说的问题。

相关文章

  • Android----- MD5加密(登录注册得到与IOS相同的

    最近开发项目中遇到一个这样的问题,注册和登录时需要对信息MD5加密生成一个Token传给后台, 后台会对信息进行比...

  • iOS如何使用MD5加密

    在登录注册时,经常采用MD5加密技术对密码,也用于对敏感数据进行加密。本文简单介绍了iOS中MD5加密的使用方式。...

  • 加密算法

    MD5:登录注册,SHA1 对称加密 1.DES:Data Encryption Standard,数据加密标准 ...

  • Django用户模块密码加密

    一、使用django默认的加密方法,即哈希算法 1、注册时加密 2、登录验证 二、自定义加密算法 1、md5算法 ...

  • Java 登录模块设计

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

  • iOS加密

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

  • iOS 数据加密

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

  • MD5加密

    百度百科 MD5加密 MD5使用场景 1.登录注册 2.签名signMD5加密是不可逆的 首先需要导入头文件#im...

  • MD5加密注册登录

    当用户在注册的时候,注册进去存到数据库的密码是明码显示的,这样是不安全的,所以我们在注册的时候可以使用MD5的加密...

  • ios网络请求时,如何保证网络安全

    1.https: 2.token 3.post请求 4.加密 base64, MD5 登录注册使用 加盐+再次MD...

网友评论

      本文标题:Android----- MD5加密(登录注册得到与IOS相同的

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