2019独角兽企业重金招聘Python工程师标准>>>

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

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

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

MD5简介:

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

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

MD5算法具有以下特点:

  1. 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
  2. 容易计算:从原数据计算出MD5值很容易。
  3. 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
  4. 强抗碰撞:已知原数据和其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加密的方法改成第二种;才解决前面我说的问题。

转载于:https://my.oschina.net/zhangqie/blog/1538940

Android----- MD5加密(登录注册得到与IOS相同的加密值,并且解决两个平台汉字加密不相同问题)...相关推荐

  1. Android项目实战登录注册

    由于项目中大部分界面都有一个后退键和一个标题栏,为避免代码冗杂以及便于利用,我们可以将后推荐和标题栏单独抽取出来定义一个标题栏布局,在 res/layout 目录下新建一个 Layout resour ...

  2. android mysql实现登录注册_android简单登陆和注册功能实现+SQLite数据库学习

    android简单登陆和注册功能实现+SQLite数据库学习 发布时间:2018-07-04 17:23, 浏览次数:1027 , 标签: android SQLite 这里我只是建立了一个用简单的存 ...

  3. Android开发:登录/注册界面的编写

    目录 新建一个空项目(或Activity) 在xml中绘制登录界面 关掉ActionBar 运行(最终效果图) 后记 在实际开发中,几乎所有的APP都会涉及到用户注册/登录页面的制作,因此本文以And ...

  4. WIN10系统电脑注册表无法删除所有指定的值如何解决的方法

    WIN10系统计算机注册表一直删除失败所有指定的值怎么样操作成功的步骤 1.在开始菜单点击右击,找到并点击[命令提示符(管理员)],若自动跳出操作系统的人账户控制找到并点击[是]就没有问题了: 2.在 ...

  5. Android实现qq登录注册和好友列表界面

    学习Android已经有一个多月了,老师留了实现qq登陆注册和好友列表的作业,要求: 设计登录界面,注册界面和好友列表界面. 在登录界面输入用户名"admin",密码"a ...

  6. Android开发,登录注册界面中如何添加视频背景,亲测可用

    此篇文章属个人查阅资料整理所著,希望能对您有所帮助,欢迎各位留言指正,抱拳了 一. 首先在res文件夹下添加raw文件夹并将要添加的背景视频放进去: 二.在MyViewpager.java(此为要显示 ...

  7. Android模仿京东登录注册,Android:布局实例之模仿京东登录界面

    1 <?xml version="1.0" encoding="utf-8"?> 2 3 android:layout_width="ma ...

  8. android注册的模板下载地址,Android --LoginActivity模板登录

    Android Studio使用自带LoginActivity模板,制作登录界面 登录界面功能: 1.记住表单账户密码,并自动登录 //获得sp实例对象 sp = this.getSharedPref ...

  9. php注册登录描述,基于PHP实现用户登录注册功能的详细教程

    教程前先给大家看看小编的实现成果吧! 图1: 图2: 图3: 教程: 实现这个功能我们需要五个php文件: login.php (登录界面,如图2) 登录 登录页面 用户名: required=&qu ...

  10. 表单实现登录注册功能

    为了开发出一个家教信息服务网站,家教注册登录,家教信息发布这些都需要通过表单还实现. 系列文章汇总: 一.整体设计:家教信息服务平台的开发 二.前端设计:表单实现登录注册功能 三.后台设计:MySQL ...

最新文章

  1. 比特币现金(BCH)和比特币(BTC)之争到底在争些什么?
  2. HighNewTech:20190824上海人工智能大会(2019SHAI)暨第二届图像视频处理与人工智能国际会议参会感悟记录
  3. InfluxData【环境搭建 01】时序数据库 InfluxDB 最新版本安装启动验证(在线安装+离线安装及各版本下载地址)
  4. 51nod1244 欧拉函数之和 杜教筛
  5. CentOS 6.5 安装Python 3.5
  6. C语言(CED)01背包——动态规划第二题
  7. cad求和插件_黑科技 | 无BIM建模下平面CAD自动生成门窗表
  8. 极度烧脑+惊人发现:4个颠覆你世界观的量子理论实验
  9. web.py开发web 第一章 Hello World
  10. unity5 静态和动态cubmap
  11. 计算机启动显示不正确的分区表,分区表无效怎么办_一开机就显示分区表无效怎么解决...
  12. WordPress企业主题:企业一号
  13. 修改tomcat的临时文件夹_解决:tomcat重新部署会删除临时文件以及临时文件夹
  14. java生成自增单号(字符+日期+数字)
  15. div css经典布局实例,div+css布局实例:常用图文混排(一)--腾讯图文 - 蜗爱CSS
  16. C++之enum与switch
  17. 计算机ping 的快捷键,Ping命令使用小技巧
  18. IDEA免费教育申请(不需要教育邮箱,只要你是学生!!!)
  19. 程序实现蒙特卡洛算法计算PI值和积分
  20. meanshift算法

热门文章

  1. 使用Secure Boot后,导致VMware无法启动虚拟机
  2. bzoj4093: [Usaco2013 Dec]Vacation Planning
  3. unity3d中串口的使用
  4. 一个简单的WeakList的实现
  5. WIN8禁用休眠功能
  6. Pydev 的覆盖率测试python coverage以及其他使用
  7. 粒子滤波(PF:Particle Filter与卡尔曼滤波(Kalman Filter)相比较 (转载)
  8. Java Android客户端开发
  9. 日期判断是今天/明天/后天
  10. Strezov Sampling Trombone Ensemble Mac(长号合奏音色库)