当前位置: 首页 > news >正文

龙岗网站建设网站排名优化个人发布信息免费推广平台

龙岗网站建设网站排名优化,个人发布信息免费推广平台,wordpress cache,b2c商城网站建设实验七 SHA-1 一、实验目的 熟悉SHA-1算法的运行过程,能够使用C语言编写实现SHA-1算法程序,增 加对摘要函数的理解。 二、实验要求 (1)理解SHA-1轮函数的定义和工作过程。 (2)利用VC语言实现SHA- 1算法。 (3)分析SHA- 1算法运行的性能。 三、实验…

实验七 SHA-1

一、实验目的

熟悉SHA-1算法的运行过程,能够使用C++语言编写实现SHA-1算法程序,增

加对摘要函数的理解。

二、实验要求

(1)理解SHA-1轮函数的定义和工作过程。

(2)利用VC++语言实现SHA- 1算法。

(3)分析SHA- 1算法运行的性能。

三、实验原理

SHA-1对任意长度明文的分组预处理完后的明文长度是512位的整数倍,值得注意的是,SHA-1的原始报文长度不能超过2的64次方,然后SHA-1生成160位的报文摘要。SHA-1算法简单且紧凑,容易在计算机上实现。图6-1所示为SHA-1对单个512位分组的处理过程。

1.实验环境

普通计算机Intel i5 3470@3.2GHz, 4GB RAM,Windows 7 Professional Edition, VS平台。

2.算法实现步骤

1)将消息摘要转换成位字符串

因为在SHA- 1算法中,它的输入必须为位,所以首先要将其转化为位字符串。以“abc”字符串来说明问题,因为'a'=97, 'b'=98, 'c'=99,所以将其转换为位串后为01100001 01100010 01100011

2)对转换后的位字符串进行补位操作

SHA-1算法标准规定,必须对消息摘要进行补位操作,即将输入的数据进行填充,使得数据长度对512求余的结果为448,填充比特位的最高位补一个1,其余位补0,如果在补位之前已经满足对512取模余数为448,则要进行补位,在其后补一位1。总之,补位是至少补一位,最多补512位。依然以“abc”为例,其补位过程如下:初始的信息摘要: 01100001 01100010 01100011第一步补位:01100001 01100010 011000111,最后一位补位: 01100001 01100010 01100011 10...0(后面补了423个0)

之后将补位操作后的信,息摘要转换为十六进制:

61626380 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000

3)附加长度值

在信息摘要后面附加64比特的信息,用来表示原始信息摘要的长度,在这步操作之后,信息报文便是512比特的倍数。通常来说用一个64位的数据表示原始消息的长度,如果消息长度不大于2,那么前32比特就为0,在进行附加长度值操作后,其“abc"数据报文即变成如下形式:

61 62638000000000 00000000 00000000

00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000

00000000 00000000 00000000 0000001 8

因为“abc”占3个字节,即24位,所以换算为十六进制后为0x18。

4)初始化缓存

一个160位MD缓冲区用以保存中间和最终散列函数的结果。它可以表示为5个32

位的寄存器(H0,H1,H2,H3,H4)。初始化如下:

HO = 0x67452301

H2 = 0x98BADCFE

H3 = 0x10325476

H4 = 0xC3D2E1F0

如果大家对MD-5不陌生的话,会发现一个重要的现象,其前四个与MD-5一样,

但不同之处是存储为Big-EndienFormat。

四、算法实现

(2)利用VC++语言实现SHA- 1算法。

#include <iostream>
#include <string>
#include <iomanip>
#include <sstream>
#include <Windows.h>
#include <wincrypt.h>// 函数声明
std::string sha1(const std::string& input);int main() {std::string data = "Hello, SHA-1!";std::string hash = sha1(data);std::cout << "SHA-1 Hash: " << hash << std::endl;return 0;
}// SHA-1算法实现
std::string sha1(const std::string& input) {HCRYPTPROV hCryptProv;HCRYPTHASH hHash;BYTE rgbHash[20];DWORD cbHash = 20;if (!CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))return "";if (!CryptCreateHash(hCryptProv, CALG_SHA1, 0, 0, &hHash)) {CryptReleaseContext(hCryptProv, 0);return "";}if (!CryptHashData(hHash, (const BYTE*)input.c_str(), input.length(), 0)) {CryptReleaseContext(hCryptProv, 0);CryptDestroyHash(hHash);return "";}if (!CryptGetHashParam(hHash, HP_HASHVAL, rgbHash, &cbHash, 0)) {CryptReleaseContext(hCryptProv, 0);CryptDestroyHash(hHash);return "";}std::stringstream ss;for (int i = 0; i < cbHash; i++) {ss << std::hex << std::setw(2) << std::setfill('0') << (int)rgbHash[i];}CryptDestroyHash(hHash);CryptReleaseContext(hCryptProv, 0);return ss.str();
}

运行结果:

(3) 分析SHA-1算法的性能:

SHA-1是一种哈希算法,通常用于数据完整性验证和数字签名。然而,随着时间的推移,SHA-1的性能和安全性受到了挑战,因此在实际应用中要谨慎使用。

性能分析包括以下方面:

a. 计算速度:SHA-1的计算速度通常较快,适用于快速生成哈希值。

b. 安全性:SHA-1不再被认为是安全的哈希算法,因为已经出现了碰撞攻击,可以生成两个不同的输入,它们产生相同的SHA-1哈希值。这使得SHA-1不适合用于敏感数据的加密或签名。

c. 应用领域:SHA-1仍然可以用于一些非安全性要求严格的应用,例如在校验数据完整性时。但对于需要高安全性的应用,应该选择更安全的哈希算法,如SHA-256或SHA-3。

五、实验心得

SHA-1是一个基于位运算和逻辑运算的哈希算法,它将输入数据转化为固定长度(160位)的哈希值。SHA-1在性能方面通常表现良好,但已不再被认为是安全的哈希算法。因此,建议在应用中使用更安全的哈希算法,特别是需要保护敏感数据的情况。SHA-256和SHA-3等算法提供了更高的安全性,可以满足更严格的安全要求。在实现SHA-1算法时,需要将输入字符串转换为适当格式,并填充数据,以确保数据长度满足SHA-1算法的要求。包括位填充和附加数据长度。通过实验我了解SHA-1算法中的各个步骤,包括信息的分块、扩展消息、初始化哈希值、迭代运算等。这有助于更好地理解SHA-1的内部工作原理。此次实验使我加深了对哈希算法的理解,提高了编程能力。

http://www.hkea.cn/news/786334/

相关文章:

  • 苏州建网站公司seo网络推广培训班
  • 福清市建设局网站石家庄学院
  • 找考卷做要去哪个网站中国国家培训网官网查询
  • 软件系统开发的大概步骤优化网站标题名词解释
  • 院校网站建设模板建站平台
  • 淘宝网站内搜索引擎优化怎么做广告推广平台网站有哪些
  • 大片播放网站国外免费推广网站有哪些
  • flash网站cms排名sem优化软件
  • 申请完域名怎么做网站百度链接提交
  • 驻马店市可以做网站的公司百度搜索竞价排名
  • 郑州市做网站吉林百度查关键词排名
  • 济宁网站建设seo抖音seo源码搭建
  • 茂名网站建设方案书简述seo和sem的区别
  • 江西网站做的好的企业文化百度指数在哪里看
  • 山东电商网站建设seo网站排名优化公司
  • 赤峰市做网站公司今日的最新消息
  • 上海最大的贸易公司seo网络推广机构
  • jsp 网站开发广告发布平台
  • b2c网站综合对比评价站长统计幸福宝
  • 网站建设意见做推广app赚钱的项目
  • 哈尔滨营销网站制作做外贸推广
  • 深圳网站建设外贸公司排名搜索热词排名
  • 网络科技公司招聘可靠吗seo多久可以学会
  • 企业网站建设的方案ppt网络营销的特点主要包括什么
  • 如何自行建设网站推广关键词优化
  • 建设学院网站百度收录关键词查询
  • 有关外贸的网站有哪些内容武汉抖音seo搜索
  • 娄底网站建设的话术深圳网站关键词排名优化
  • 福田大型商城网站建设seo营销方法
  • 网站开发专业就业指导企业网站设计与实现论文