C语言实现SHA |
您所在的位置:网站首页 › c语言md5系统函数 › C语言实现SHA |
参考:《密码学引论》第二版 武汉大学出版社 SHA-1简介SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。(源自百度百科) 具体实现数据填充 填充数据的母的是使数据长度与448模512同余(这里是指位数)。若数据本身已经满足上述长度要求,让需要进行填充(例如,若数据长度为448位,则仍需要填充512位使其长度变为960,原因最后一组填充需要在数据后附加一个1(8位)以及填充前数据的长度(64位),因此最后一组长度最长为440(输入为字符串格式下)),因此填充位数在1~512之间。 填充方法为在数据后附加一个1和若干个0,然后附上表示填充前数据长度的64位数据(最高有效位在前)。 以"this is a test"为例: 填充前: 初始化缓冲区 Hash函数中间结果和最终结果都保存于160位的缓冲区中,缓冲区由5个32位寄存器组成,将这些寄存器初始化为下列32为的整数值。 unsigned int h[5]={0x67452301,0xefcdab89,0x98badcfe,0x10325476,0xc3d2e1f0};需要注意的是,在SHA-1中,字的最高有效字节存于低地址字节位置。 执行算法主循环 如图所示: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |