吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3328|回复: 29
收起左侧

[Android 分享] SHA系列算法

  [复制链接]
宸道移动安全 发表于 2020-11-19 17:37
前几天分享了DES加密算法,反响还挺高的那么今天再来说说SHA系列算法,算法有很多种类,会一一更新的



1、SHA算法简单概要


SHA (Security Hash Algorithm) 是美国的 NIST 和 NSA 设计的一种标准的 Hash 算法,SHA 用于数字签名的标准算法的 DSS 中,也是安全性很高的一种 Hash 算法。

2、SHA系列算法介绍


1)SHA-1
SHA-1 算法的输入消息长度小于 264bit,最终输出的结果值是 160 Bits,SHA-1 与 MD4 相比较而言,主要增加了扩展变换,将前一轮的输出也加到了下一轮,这样增加了雪崩效应,而且由于其 160 Bits 的输出,对穷举攻击更具有抵抗性。
大致实现过程:将消息摘要转换成位字符串,对转换后的位字符串进行补位操作,附加长度值并且初始化缓存,然后计算消息摘要。


2)SHA-256 算法

SHA-256 算法输入报文的最大长度不超过 264 Bits,输入按 512 Bits 分组进行处理,产生的输出是一个 256 Bits 的报文摘要。


算法处理步骤:


1、附加填充位
对报文进行填充使报文长度与 448 模 512 同余(长度 = 448 mod 512),  填充的比特数范围是 1 到 512,填充比特串的最高位为 1,其余位为 0。 就是先在报文后面加一个 1,再加很多个 0,直到长度满足 mod 512=448。为什么是 448?因为 448+64=512。第二步会加上一个 64 位的原始报文的长度信息。


2、附加长度值
将用 64 位表示的初始报文(填充前)的位长度附加在步骤 1 的结果后(低位字节优先)。


3. 初始化缓存
使用一个 256 位的缓存来存放该散列函数的中间及最终结果。它可以表示为 8 个 32 位的寄存器(A, B, C, D, E, F, G, H)


4.处理 512 位报文分组序列
该算法使用了六种基本逻辑函数,由 64 步迭代运算组成。每步都以 256 位缓存值 ABCDEFGH 为输入,然后更新缓存内容。每步使用一个 32 位常数值 Kt 和一个 32 位 Wt。


5. 结果输出
所有的 512 位分组处理完毕后,对于 SHA-256 算法最后一个分组产生的输出便是 256 位的报文摘要。
补充:(这里的具体实现设计到一些数学知识,顾具体细节不做讨论,同学们只需要明白大致过程即可)


3)SHA-2的其他衍生算法

包括SHA-224、SHA-256、SHA-384、SHA-512,这些版本共同构成了SHA大家庭。
SHA-224:SHA-256的“阉割版”,可以生成长度224bit的信息摘要。
SHA-512:可以生成长度512bit的信息摘要。
SHA-384:SHA-512的“阉割版”,可以生成长度384bit的信息摘要。
SHA家族的最新成员SHA-3已经于2015年问世。关于SHA-3的细节,有兴趣的小伙伴们可以查询资料进一步学习。


3、在Eclipse中分析SHA代码并且演示效果


1)主类MainActivity
通过调用自定义的SHA算法把要加密的数据传进去,然后使用自定
义的byteArr2HexStr方法进行遍历拼接;

图片7.png

2)SHA类
使用getInstance方法获取不同的算法,每隔算法的大致实现都是一样的,唯一不同的就是使用getInstance获取到的算法不一样;


图片8.png

代码都一样,唯一的区别是使用getInstnce获取到的算法不一样;


小结:


1、介绍SHA系列相关的算法以及实现原理。
2、分析SHA算法代码以及演示运行效果。

免费评分

参与人数 5吾爱币 +4 热心值 +5 收起 理由
金色传说 + 1 我很赞同!
龙无痕 + 1 + 1 谢谢@Thanks!
l95726984y + 1 + 1 谢谢@Thanks!
LSMMT + 1 + 1 学习一下
Goldbama + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

无痕软件 发表于 2020-11-21 10:53
tsecond 发表于 2020-11-21 00:23
MD5 和 SHA-256 就可以唯一定位某个文件 或者资源。  不会有碰撞。

MD5好像已被证实可碰撞。
tsecond 发表于 2020-11-21 10:57
无痕软件 发表于 2020-11-21 10:53
MD5好像已被证实可碰撞。

MD5已经多次被我国山东大学王小云教授碰撞成功。
无敌小车 发表于 2020-11-20 15:58
然并卵zh 发表于 2020-11-20 16:26
使用了软件设计模式当中的“策略模式”{新学的,出来献个丑,哈哈哈哈}
mettle 发表于 2020-11-20 16:33
来学习一下,不错的东东,谢谢分享!
Mdr 发表于 2020-11-20 17:54
进入学习领域多谢大佬
芽衣 发表于 2020-11-20 18:22
又在搬csdn的文章
syz17213 发表于 2020-11-20 20:01
进来学习一下
嘀嘀嘀 发表于 2020-11-20 20:22
感谢分享
larkpwn 发表于 2020-11-20 20:49
算法学习ing~感谢分享
DrillAnn 发表于 2020-11-20 21:12
来学习一下,不错的东东,谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表