MD5加密及在Android中的使用
2020-08-17 22:25
2251 查看
1. MD5简介
MD5消息摘要算法(MD5 Message-Digest Algorithm),是一种常用的信息摘要算法,用于将一个文件或者一大段文本转化为16字节的字符串,生成的字符串具有以下特点:
- 不可逆
因为不论文件/文本大小,均会转换为固定长度字符串,转换过程中丢失了大量信息,因此几乎不可能根据MD5字符串反推出原始文本。 - 高度离散
只要对原文本/文件作出修改(添加、删除、修改),哪怕是一个字符,都会引起生成MD5字符串的巨大变化 - 弱碰撞性
因为生成字符串的高度离散性,导致构造一对文本内容不同,但MD5值相同的数据十分困难。 - List item
MD5常用使用场景有:
- 存储密码
数据库中存储的一般都是用户密码的MD5值,防止因服务器数据库被盗库后用户密码外泄。 - 作为文件指纹
利用MD5的高度离散性,将MD5值作为文件指纹判断两个文件是否相同,如从网站下载软件时,常常会标出该文件的MD5值,用于检测下载文件完整性
2. 在Android中使用MD5
JDK中已集成MD5支持,使用示例代码如下:
- 常用的32位MD5加密
/** * 32位MD5加密 * @param content -- 待加密内容 * @return */ public String md5Decode32(String content) { byte[] hash; try { hash = MessageDigest.getInstance("MD5").digest(content.getBytes("UTF-8")); } catch (NoSuchAlgorithmException e) { throw new RuntimeException("NoSuchAlgorithmException",e); } catch (UnsupportedEncodingException e) { throw new RuntimeException("UnsupportedEncodingException", e); } //对生成的16字节数组进行补零操作 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(); }
- 16位MD5加密
/** * 16位MD5加密 * 实际是截取的32位加密结果的中间部分(8-24位) * @param content * @return */ public String md5Decode16(String content) { return md5Decode(content).substring(8, 24); }
16位MD5加密实际是截取的32位加密结果的中间部分(8-24位)
以"123456"为例,调用结果如下:
在md5在线解密破解中验证:
相关文章推荐
- android 使用md5加密
- 在ASP中使用MD5加密
- ASP里使用MD5加密的函数及示例
- 想抢先体验Android操作系统的魅力吗?那就使用Android LiveCD吧!
- 使用MD5加密
- 使用Apache digest做md5加密的范例
- 想抢先体验Android操作系统的魅力吗?那就使用Android LiveCD吧!
- Android(OPhone) 学习笔记 - 搜索API的使用
- 使用MD5加密
- Study on Android【四】--显示控件使用
- 怎样使用eclipse来开发android源码
- android开发环境建立以及开发工具的使用--怎样使用eclipse来开发android源码
- 想抢先体验Android操作系统的魅力吗?那就使用Android LiveCD吧!
- Android入门逆引手册 - 12 等级条(RatingBar)的使用
- Android(OPhone) 学习笔记 - Home API 的使用
- Android(OPhone) 学习笔记 - 菜单使用
- md5加密和使用方法
- .net 2.0 使用MD5加密字符
- ASP.NET使用MD5加密用户验证
- ASP.NET使用MD5加密用户验证