有了解 sha256 函数的吗?有个问题想问一下。

2018-07-25 09:09:26 +08:00
 bhy5899s
W[i] = SSigma_1(W[i-2])+W[i-7]+SSigma_0(W[i-15])+W[i-16];

T1 = H + LSigma_1(E) + Conditional(E, F, G) + K[i] + W[i];

T2 = LSigma_0(A) + Majority(A, B, C);
H = G;
G = F;
F = E;
E = D + T1;
D = C;
C = B;
B = A;
A = T1 + T2;
上面列的这些式子中的 + 号是什么意思啊。
1634 次点击
所在节点    问与答
13 条回复
felixlong
2018-07-25 09:48:20 +08:00
把所有的值连起来。A+B => AB
bhy5899s
2018-07-25 10:04:09 +08:00
@felixlong 但是 ABCDEFGH 这 8 个字每一个字都是 32 位的,这样连起来以后就不止 32 位了啊
zn
2018-07-25 10:05:24 +08:00
这个跟语言有关吧,你贴的代码是什么语言? C 还是伪代码?
FanWall
2018-07-25 10:14:45 +08:00
就是加法

第一行生成 64*32bit 的消息列表,下面的代码计算散列
kaifeii
2018-07-25 10:16:39 +08:00
是无符号加法的意思,所有的变量在过程中都可以用整数来代表。
bhy5899s
2018-07-25 10:29:51 +08:00
@FanWall 那 32 位+32 位就变成 33 位了,33 位+33 位又会变成 34 位的。这样每个 32 位字的位数都会越来越长,最后得到哈希值的就不止 256 位了啊,我这点比较困惑,是不是加完还得做点其他运算。
bhy5899s
2018-07-25 10:30:13 +08:00
@kaifeii 那 32 位+32 位就变成 33 位了,33 位+33 位又会变成 34 位的。这样每个 32 位字的位数都会越来越长,最后得到哈希值的就不止 256 位了啊,我这点比较困惑,是不是加完还得做点其他运算。
kaifeii
2018-07-25 10:35:22 +08:00
很简单,舍掉。
kaifeii
2018-07-25 10:35:59 +08:00
@bhy5899s 舍去最高位( 33 位)
kaifeii
2018-07-25 10:39:14 +08:00
@bhy5899s 说错了好像是补码加法,总之加完还是 32 位。正常计算机加法溢出后 33 位不管,这里也是一样。
bhy5899s
2018-07-25 10:51:15 +08:00
@kaifeii 懂了,非常感谢!!!
FanWall
2018-07-25 10:59:40 +08:00
@bhy5899s

#6

long + long = longlong ?

#11

不觉得你懂了…

这里的代码是对每个 512bit 的消息块进行运算,更新初始的 8*32bit 的杂凑值,所有消息块迭代完成后才会得出结果。
429839446
2018-07-25 16:25:28 +08:00
![photo_2018-07-25_16-23-02.jpg]( https://i.loli.net/2018/07/25/5b5833800b201.jpg)
![photo_2018-07-25_16-22-57.jpg]( https://i.loli.net/2018/07/25/5b583380614b5.jpg)
![photo_2018-07-25_16-22-49.jpg]( https://i.loli.net/2018/07/25/5b58338061eb3.jpg)

https://github.com/FanFansfan/qt-SHA512-demo 这个学期的信息安全课作业

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/473894

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX