本文主要介绍Android安全加密的消息摘要Message Digest。这里整理了详细的资料,说明了如何使用消息摘要和注意事项。有需要的可以参考一下。
Android安全加密专题文章索引
Android安全加密:对称加密
Android安全加密:不对称加密
Android安全加密:消息摘要
Android安全加密:数字签名和数字证书
Android安全加密:Https编程
学习以上所有内容,如对称加密、非对称加密、消息摘要、数字签名等。作为了解数字证书工作原理的初步知识。数字证书是密码学中的终极武器,是人类几千年历史总结出来的智慧结晶。只有了解了数字证书的工作原理,才能理解Https协议的安全通信机制。最后,您可以在SSL开发过程中得心应手。
此外,对称加密和消息摘要可以单独使用。
系列知识点:
数字证书使用了上面学到的所有知识。
对称加密和非对称加密相结合实现密钥交换,然后双方使用密钥进行对称加密通信。
消息和非对称加密实现数字签名,根证书颁发机构对目标证书进行签名,检查时根证书用公钥进行检查。如果验证成功,则证书可信。
Keytool工具可以创建一个证书,然后发送给根证书颁发机构进行认证,然后直接使用自签名证书,还可以输出证书的RFC格式信息。
数字签名技术实现了身份认证和数据完整性保证。
加密技术保证了数据的机密性,消息摘要算法保证了数据的完整性,高效的对称加密保证了数据处理的可靠性,数字签名技术保证了操作的不可否认性。
通过以上内容的学习,我们应该能够掌握以下知识点:
基础知识:位、字节、字符、字符编码、十进制转换、io
知道如何使用对称加密解决实际开发中的问题。
知道对称加密、非对称加密、消息摘要、数字签名和数字证书出现是为了解决什么问题。
了解SSL通信流程
实践中如何请求Https接口?
1. 常见算法
MD5、SHA、CRC等。
2. 使用场景
用户密码通过md5加密并保存在数据库中。
软件下载站使用消息摘要来计算文件的指纹以防止篡改。
数字签名(后面的知识点)
百度云、360网盘等云盘的精彩传输功能使用sha1值。
而Eclipse和Android Studio开发工具根据sha1值判断v4和v7包是否冲突。
据说银行密码采用MD5加密(因为MD5是不可逆的)。
比如软件下载站数据指纹:http://dev.mysql.com/downloads/installer/
3. 使用步骤
//常用算法:MD5,SHA,CRC
message digest digest=message digest . getinstance(' MD5 ');
byte[]result=digest . digest(content . getbytes());
//消息摘要的结果通常会转换成十六进制字符串进行显示。
String hex=Hex.encode(结果);
//MD5结果为16字节(128位),转换成十六进制表示后长度为32个字符。
//SHA结果为20字节(160位),转换成十六进制表示后长度为40个字符。
System.out.println(十六进制);
汇总后的结果是固定长度的。不管你的数据有多大,哪怕只是一个字节或者一个G文件,汇总后的结果都是定长的。
经常听到有人问这个问题,MD5抽象后的结果是多少位?有人说是16,有人说是128,有人说是32。它有多长?这时我们要明白,16位是指字节数字,128位是指位数字,32位是指转换成十六进制显示的字符数字的结果。
4. 数字摘要原理
//获取实例
message digest digest=message digest . getinstance(' MD5 ');
digest . update(key . getbytes());
byte[]bytes=digest . digest(key . getbytes());
StringBuilder sb=new StringBuilder();
for(int I=0;I字节.长度;i ) {
字符串十六进制=整数。tohexstring(bytes[I]0x ff);
if (hex.length()==1){
某人(somebody的简写)追加(“0”);
}
某人追加(十六进制);
}
字符串十六进制字符串=sb。tostring();
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。