iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android 安全加密:消息摘要Message Digest详解
  • 732
分享到

Android 安全加密:消息摘要Message Digest详解

加密messageAndroid 2022-06-06 07:06:15 732人浏览 薄情痞子
摘要

Android安全加密专题文章索引 Android安全加密:对称加密 Android安全加密:非对称加密 Android安全加密:消息摘要Message Diges

Android安全加密专题文章索引

Android安全加密:对称加密
Android安全加密:非对称加密
Android安全加密:消息摘要Message Digest
Android安全加密:数字签名和数字证书
Android安全加密:https编程

以上学习所有内容,对称加密、非对称加密、消息摘要、数字签名等知识都是为了理解数字证书工作原理而作为一个预备知识。数字证书是密码学里的终极武器,是人类几千年历史总结的智慧的结晶,只有在明白了数字证书工作原理后,才能理解Https 协议的安全通讯机制。最终才能在SSL 开发过程中得心应手。

另外,对称加密和消息摘要这两个知识点是可以单独拿来使用的。

知识点串联:

数字证书使用到了以上学习的所有知识

对称加密与非对称加密结合使用实现了秘钥交换,之后通信双方使用该秘钥进行对称加密通信。 消息摘要与非对称加密实现了数字签名,根证书机构对目标证书进行签名,在校验的时候,根证书用公钥对其进行校验。若校验成功,则说明该证书是受信任的。 Keytool 工具可以创建证书,之后交给根证书机构认证后直接使用自签名证书,还可以输出证书的RFC格式信息等。 数字签名技术实现了身份认证与数据完整性保证。 加密技术保证了数据的保密性,消息摘要算法保证了数据的完整性,对称加密的高效保证了数据处理的可靠性,数字签名技术保证了操作的不可否认性。

通过以上内容的学习,我们要能掌握以下知识点:

基础知识:bit 位、字节、字符、字符编码、进制转换、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
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 进制展示的字符位数。

4. 数字摘要原理


//获取实例
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.update(key.getBytes());
byte[] bytes = digest.digest(key.getBytes());
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bytes.length; i++) {
 String hex = Integer.toHexString(bytes[i]&0xff);
 if (hex.length() == 1){
 sb.append("0");
 }
 sb.append(hex);
}
String hexstring = sb.toString();
您可能感兴趣的文章:Android刮刮卡功能具体实现代码Android仿淘宝商品拖动查看详情及标题栏渐变功能Android高仿微信5.2.1主界面及消息提醒Android 微信文件传输助手文件夹Android 安全加密:Https编程详解Android 安全加密:对称加密详解Android Zipalign工具优化Android APK应用Android APK优化工具Zipalign详解Android onNewIntent()触发机制及注意事项


--结束END--

本文标题: Android 安全加密:消息摘要Message Digest详解

本文链接: https://www.lsjlt.com/news/23902.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Android安全防护之加密算法
    目录摘要Android应用常用的加密算法MD5RSAAES摘要 也许有些开发者或者企业觉得。我们公司的app,数据量这些少,会有那个黑客吃饱了没事做来破解啊。又不是支付宝,或者其他那...
    99+
    2024-04-02
  • HTTPS加密的重要性来确保客户信息安全
    在这个“裸奔”的网络世界,所有传输的数据,包括个人信息,邮箱密码、银行账号等机密数据都在无形中“裸奔”,这使得“坏人”窃取也变得轻而易举。我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多企业和站长都会采用HTTPS加密协...
    99+
    2023-06-04
  • Java面试题之MD5加密的安全性详解
    目录1.彩虹表什么是彩虹表2.解决方案3.实现代码总结MD5 是 Message Digest Algorithm 的缩写,译为信息摘要算法,它是 Java 语言中使用很广泛的一种加...
    99+
    2022-11-13
    Java MD5加密 安全 Java MD5加密 Java MD5
  • 详解Mybatis拦截器安全加解密MySQL数据实战
    需求背景 公司为了通过一些金融安全指标(政策问题)和防止数据泄漏,需要对用户敏感数据进行加密,所以在公司项目中所有存储了用户信息的数据库都需要进行数据加密改造。包括Mysql、red...
    99+
    2024-04-02
  • 最安全的加密算法Bcrypt防止数据泄露详解
    目录引言哈希(Hash)与加密(Encrypt)不可逆的MD5为什么是不安全的?如何防御彩虹表的破解?一个更难破解的加密算法BcryptPasswordEncoder 接口引言 这是...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作