山东大学软件工程应用与实践——使用CUDA/GPU技术加速密码运算(第六周)

2021SC@SDUSC

本周将三大算法中最后一个未介绍的算法SHA的原理进行分析。本章就对最初的SHA-1算法原理进行简要分析。

一、SHA-1背景

SHA-1算法也称安全散列算法1,可以将一个最大2^(64)-1的数据生成一个160位的数据摘要。尽管SHA-1算法已经被认为不再安全,但仍有部分应用使用SHA-1算法验证文件。 

二、类型定义

在介绍算法原理之前,有必要定义一些数据类型,有助于我们脱离具体编程语言分析这个算法。这里使用C++的定义方式。

typedef __UINT8_TYPE__ BYTE;
typedef __UINT32_TYPE__ WORD;
typedef __UINT64_TYPE__ DWORD;

上面定义了三个数据类型,分别是:

BYTE,字节,由8位二进制数组成,表示范围(0x0 - 0xFF)。

WORD,字,由32位二进制数组成,表示范围(0x0 - 0xFFFFFFFF)。

DWORD,双字,两个字组成,表示范围(0x0 - 0xFFFFFFFFFFFFFFFF)

三、算法分析

输入:不定长度的字节序列(最大为2^(64)-1位)。

输出:160位数据。

这里主要关注一下输出。SHA-1算法最终产生160位数据,这实际上由5个变量存储,每个变量存储32位信息,也就是说,这160为数据存储在5个WORD中(5* 32=160),这五个变量被定义为:A,B,C,D,E。他们都有初始值,分别为:

WORD A = 0x67452301;
WORD B = 0xEFCDAB89;
WORD C = 0x98BADCFE;
WORD D = 0x10325476;
WORD E = 0xC3D2E1F0;

SHA-1算法的过程就是利用输入的字节序列,不断更新这五个变量ÿ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值