Android数据加密之SHA安全散列算法
来源:互联网 发布:千牛淘宝卖家助手 编辑:程序博客网 时间:2024/05/18 00:01
前言:
对于SHA安全散列算法,以前没怎么使用过,仅仅是停留在听说过的阶段,今天在看图片缓存框架Glide源码时发现其缓存的Key采用的不是MD5加密算法,而是SHA-256加密算法,这才勾起了我的好奇心,所以趁着晚上没啥事,来学习一下。
SHA加密算法
SHA(Secure Hash Algorithm,安全散列算法),数字签名等密码学应用中重要的工具,被广泛地应用于电子商务等信息安全领域。和MD5加密算法一样,也是一种不可逆的加密算法,不过也可以通过穷举法破解,但是SHA的破译难度与成本要高于MD5,相对于MD5更加安全,现在已成为公认的最安全的散列算法之一,并被广泛使用。主要包括SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512这几种单向散列算法。SHA-1,SHA-224和SHA-256适用于长度不超过2^64二进制位的消息。SHA-384和SHA-512适用于长度不超过2^128二进制位的消息。官方解说如下:
由消息摘要反推原输入消息,从计算理论上来说是很困难的。
想要找到两组不同的消息对应到相同的消息摘要,从计算理论上来说也是很困难的。任何对输入消息的变动,都有很高的机率导致其产生的消息摘要迥异。
SHA加密原理
SHA加密优点
由于SHA也是有MD4演变过来的,所以其优点与MD5大致一样
压缩性:任意长度的数据,算出的SHA值长度都是固定的。
容易计算:从原数据计算出SHA值很容易。
抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的SHA值都有很大区别。
强抗碰撞:已知原数据和其SHA值,想找到一个具有相同SHA值的数据(即伪造数据)是非常困难的。
SHA应用场景
一致性验证
数字签名
安全访问认证
SHA加密的简单实现
这里代码演示以SHA-256为例。
public static String sha(String string) { if (TextUtils.isEmpty(string)) { return ""; } MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("sha-256"); byte[] bytes = md5.digest((string ).getBytes()); String result = ""; for (byte b : bytes) { String temp = Integer.toHexString(b & 0xff); if (temp.length() == 1) { temp = "0" + temp; } result += temp; } return result; } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return ""; }
SHA安全性探讨
SHA-1在许多安全协议中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的散列函数)的后继者。2005年,密码学家就证明SHA-1的破解速度比预期提高了2000倍,虽然破解仍然是极其困难和昂贵的,但随着计算机变得越来越快和越来越廉价,SHA-1算法的安全性也逐年降低,已被密码学家严重质疑,希望由安全强度更高的SHA-2替代它。
SHA-224、SHA-256、SHA-384,和SHA-512并称为SHA-2。
新的散列函数并没有接受像SHA-1一样的公众密码社区做详细的检验,所以它们的密码安全性还不被大家广泛的信任。
虽然至今尚未出现对SHA-2有效的攻击,它的算法跟SHA-1基本上仍然相似;因此有些人开始发展其他替代的散列算法。
跨国公司事迹:
Google官方博客宣布,将在Chrome浏览器中逐渐降低SHA-1证书的安全指示。但有意思的是Google.com目前使用的也是SHA-1签名的证书,但证书将在3个月内过期,Google将从2015年起使用SHA-2签名的证书。SHA-1算法目前尚未发现严重的弱点,但伪造证书所需费用正越来越低。
- Android数据加密之SHA安全散列算法
- SHA安全散列算法
- SHA:安全散列算法
- SHA:安全散列算法 .
- java实现安全散列算法SHA
- SHA-2 安全散列算法2 算法详解
- Java基础之加解密(三) SHA安全散列算法
- 加密散列算法——SHA-1
- SHA散列算法心得
- 代替MD5加密的SHA安全散列加密算法代码整理
- MD5消息摘要算法和SHA-1安全散列算法
- Android数据安全之MD5加密
- Android数据安全之DES加密
- Android数据安全之AES加密
- Android数据安全之异或加密
- 四、Android安全机制之数据加密
- SHA安全算法
- 关于java散列算法(MD5 SHA-1 SHA-128 SHA-256..)的一点总结
- [编程题] 洗牌
- ajax
- Android 7.1.1 之实现 3D Touch
- 学习笔记26-图的表示方法
- \(^_^)/ 表达式解析器(MVEL)
- Android数据加密之SHA安全散列算法
- 同时装了Python3和Python2,怎么用pip?
- (一)数据挖掘概念与技术——韩家炜
- 复习Java(三)简单的逻辑运算
- 【Java】用etcd做服务注册和发现
- oracle安装前系统配置查询(linux)
- CAD转PDF用迅捷CAD转换器一招搞定
- React 实现一个漂亮的 Table
- 排序算法---归并排序