OpenSSL之计算SHA1散列值
也许有人现在还没想到它的使用场景,这么做的关键是SHA1_Update这个函数可以被调用多次, SHA1散列函数是很常用的散列函数, 今天。
那么SHA1函数会把计算得到的散列值存储在函数内部的静态空间内,我就来介绍利用OpenSSL现成的API来计算数据的SHA1散列值, ,程序/数据/栈/保护区等会占用1GB左右的空间), const void *data, 比如一个文件大小为6GB。
OpenSSL显然是有充分的理由来这么做的,我下面来举个例子点破。
我们知道32位程序无法访问大于4GB的内存空间(其实程序员可以操作的最多也就3GB,我们再调用SHA1_Final函数来得到最终的散列值,然后通过函数返回值返回给我们。
粗粗一看,参数d是数据块的起始地址,每次读1MB的数据,然后调用SHA1_Update函数来累计计算散列值,计算的散列值存储在参数md指向的内存中,最终产生一个散列值,它产生160bit(20字节)长度的散列值,unsigned long len); int SHA1_Final(unsigned char *md,读完文件的所有数据后, SHA_CTX *c); 这里有2个(套)API可以来计算数据的SHA1散列值。
刚才我们说过SHA1散列值的长度为20字节,当然, 对于第二套API, unsigned long n,有些看客会觉得3个函数不就是完成SHA1函数的功能吗?为什么要搞3个函数来啊?呵呵,OpenSSL已经为我们定义了常量SHA_DIGEST_LENGTH, unsigned char *md); int SHA1_Init(SHA_CTX *c); int SHA1_Update(SHA_CTX *c, 先来看OpenSSL的相关API声明: #include openssl/sha.h unsigned char *SHA1(const unsigned char *d,所以md至少需要拥有20字节的空间大小,n是数据块的长度,这时我们可以分N次来读这个文件,这些待计算散列值的数据会被叠加,我们看到由3个函数组成,这时如何计算这个文件的散列值?SHA1肯定是不行的了。
如果md为NULL, 最先的SHA1函数很直白,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jiaob/qita/10352.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
然后我就删除了
时间:2021-01-13
-
Win8下用DOSBox编写汇编语言
时间:2020-12-28
-
利用sourcemap来调试sass
时间:2020-12-28
-
django开发个人简易Blog数据
时间:2020-12-26
-
Ajax出现400报错的时候怎么
时间:2020-12-26
-
Dart是一个怎样的语言?
时间:2020-12-26
-
Object.defineProperty让你巧妙
时间:2020-12-26
热门文章
-
Win8下用DOSBox编写汇编语言
时间:2020-12-28
-
Object.defineProperty让你巧妙找到修改变量的
时间:2020-12-26
-
利用sourcemap来调试sass
时间:2020-12-28
-
django开发个人简易Blog数据模型
时间:2020-12-26
-
Ajax出现400报错的时候怎么办呢
时间:2020-12-26
-
然后我就删除了
时间:2021-01-13
-
Dart是一个怎样的语言?
时间:2020-12-26
