Android面试题-Java安全专题四

Android程序员面试宝典

安全专题

1.4 消息摘要(Message Digest)

1.4.1 常见算法

MD5、SHA、CRC等

1.4.2 使用场景

  1. 对用户密码进行md5加密后保存到数据库里
  2. 软件下载站使用消息摘要计算文件指纹,防止被篡改
  3. 数字签名(后面知识点)

例如软件下载站数据指纹:

http://dev.mysql.com/downloads/installer/

《Android面试题-Java安全专题四》

1.4.3 使用步骤

//常用算法:MD5、SHA、CRC
MessageDigest digest = MessageDigest.getInstance("MD5");
byte[] result = digest.digest(content.getBytes());
//消息摘要的结果一般都是转换成16进制字符串形式展示
String hex = Hex.encode(result);
//MD5结果为16字节(128个比特位)、转换为16进制表示后长度是32个字符
//SHA结果为20字节(160个比特位)、转换为16进制表示后长度是40个字符
System.out.println(hex);

消息摘要后的结果是固定长度,无论你的数据有多大,哪怕是只有一个字节或者是一个G的文件,摘要后的结果都是固定长度。

经常听到有人问这样的问题,MD5摘要后结果到底是多少位?有的人说是16位,有的说是128位,有的说是32位。到底是多长,这个时候我们就要明白,16位指的是字节位数,128位指的是比特位,32位指的结果转换成16进制展示的字符位数。

  • 欢迎关注微信公众号、长期为您推荐优秀博文、开源项目、视频

  • 微信公众号名称:Android干货程序员

  • 《Android面试题-Java安全专题四》
    原文作者:马伟奇
    原文地址: https://www.jianshu.com/p/42168aa19452
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞