Android安全加密专题文章索引
- Android安全加密:对称加密
- Android安全加密:非对称加密
- Android安全加密:消息摘要Message Digest
- Android安全加密:数字签名和数字证书
- Android安全加密:Https编程
1. 常见算法
MD5、SHA、CRC 等
2. 使用场景
- 对用户密码进行md5 加密后保存到数据库里
- 软件下载站使用消息摘要计算文件指纹,防止被篡改
- 数字签名(后面知识点)
- 百度云,360网盘等云盘的妙传功能用的就是sha1值
- Eclipse和Android Studio开发工具根据sha1值来判断v4,v7包是否冲突
- 据说银行的密码使用的就是MD5加密(因为MD5具有不可逆性)
- 病毒查杀,把每个病毒文件或apk进行MD5后得到一个特征码,拿着特征码去跟病毒数据库对比,特征码一致说明该文件是病毒
- Git版本控制也使用到了sha1
例如软件下载站数据指纹:http://dev.mysql.com/downloads/installer/
Git计算校验
Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希)。这是一个由 40 个十六进制字符(0-9 和 a-f)组成字符串,基于 Git 中文件的内容或目录结构计算出来。SHA-1 哈希看起来是这样:
24b9da6552252987aa493b52f8696cd6d3b00373
Git 中使用这种哈希值的情况很多,你将经常看到这种哈希值。实际上,Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。
3. 使用步骤
|
|
消息摘要后的结果是固定长度,无论你的数据有多大,哪怕是只有一个字节或者是一个G 的文件,摘要后的结果都是固定长度。
经常听到有人问这样的问题,MD5 摘要后结果到底是多少位?有的人说是16 位,有的说是128 位,有的说是32 位。到底是多长,这个时候我们就要明白,16 位指的是字节位数,128 位指的是比特位,32 位指的结果转换成16 进制展示的字符位数。
4. 数字摘要原理
用每个byte去和11111111(0xff)做与运算并且得到的是int类型的值
byte & 11111111
把int 类型转成 16进制并返回String类型
- 不满八个二进制位就补全
|
|
|
|
6. MD5解密网站
为了提高MD5 加密的安全性,减少密文被反向解密的可能性,应尽量将密码的长度设置的长一些,另外也可以将密码进行多次加密,这样可以保护用户的隐私安全