使用openssl库EVP编程计算sha1值
来源:互联网 发布:身份证复印app软件 编辑:程序博客网 时间:2024/05/15 04:13
参考sha1test.c
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <openssl/evp.h>#include <openssl/sha.h>static char *test[] = {"abc","abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",NULL,};static char *ret[] = {"a9993e364706816aba3e25717850c26c9cd0d89d","84983e441c3bd26ebaae4aa1f95129e5e54670f1",};static char *bigret = "34aa973cd4c4daa4f61eeb2bdbad27316534016f";static char *pt(unsigned char *md){int i;static char buf[80];for (i = 0; i < SHA_DIGEST_LENGTH; i++)sprintf(&(buf[i * 2]), "%02x", md[i]);return (buf);}int main(void){int i, err = 0;char **P, **R;static unsigned char buf[1000];char *p, *r;EVP_MD_CTX c;unsigned char md[SHA_DIGEST_LENGTH];P = test;R = ret;i = 1;while (*P != NULL) {printf("calculating SHA1 on '%s'\n", *P);EVP_Digest(*P, strlen((char *)*P), md, NULL, EVP_sha1(), NULL);p = pt(md);printf("SHA1: %s\n", p);if (strcmp(p, (char *)*R) != 0) {printf("got %s instead of %s\n", p, *R);err++;} elseprintf("test %d ok\n", i);i++;R++;P++;}memset(buf, 'a', 1000);printf("calculating SHA1 on 'a * 1000' * 1000\n");EVP_MD_CTX_init(&c);EVP_DigestInit_ex(&c, EVP_sha1(), NULL);for (i = 0; i < 1000; i++)EVP_DigestUpdate(&c, buf, 1000);EVP_DigestFinal_ex(&c, md, NULL);EVP_MD_CTX_cleanup(&c);p = pt(md);printf("SHA1: %s\n", p);r = bigret;if (strcmp(p, r) != 0) {printf("got %s instead of %s\n", p, r);err++;} elseprintf("test 3 ok\n");EVP_MD_CTX_init(&c);EVP_DigestInit_ex(&c, EVP_sha1(), NULL);EVP_DigestUpdate(&c, "a", 1);EVP_DigestUpdate(&c, "b", 1);EVP_DigestUpdate(&c, "c", 1);EVP_DigestFinal_ex(&c, md, NULL);EVP_MD_CTX_cleanup(&c);p = pt(md);printf("SHA1: %s\n", p);return 0;}
运行结果
$ gcc -Wall -lcrypto sha1.c$ ./a.out calculating SHA1 on 'abc'SHA1: a9993e364706816aba3e25717850c26c9cd0d89dtest 1 okcalculating SHA1 on 'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq'SHA1: 84983e441c3bd26ebaae4aa1f95129e5e54670f1test 2 okcalculating SHA1 on 'a * 1000' * 1000SHA1: 34aa973cd4c4daa4f61eeb2bdbad27316534016ftest 3 okSHA1: a9993e364706816aba3e25717850c26c9cd0d89d
- 使用openssl库EVP编程计算sha1值
- 使用openssl库EVP编程计算md5值
- 使用openssl库EVP编程计算sha256值
- OpenSSL库的RSA使用(上)-EVP方式
- OPENSSL之计算SHA1散列值
- OpenSSL中文手册之EVP库详解
- OpenSSL之EVP(三)——EVP对称算法编程示例
- openssl之EVP
- openssl之EVP函数
- openssl evp aes_128_cbc
- 使用openssl就算文件的MD5和SHA1值
- sha1加密 C语言例子(使用OpenSSL库)
- 调用Openssl中的SHA1库
- Openssl-SHA1
- Openssl-SHA1
- C用OPENSSL计算文件的SHA1值,并以BASE64格式保存
- JAVA用OPENSSL计算文件的SHA1值,并以BASE64格式保存
- What does OpenSSL's EVP mean? OpenSSL中的EVP是什么意思?
- 对SendMessage与PostMessage的理解
- Mysql存储过程(二)——多结果集返回与java获取
- Java 计算倒计时
- 黑白图像(DFS)
- jsp web.xml文件的作用及基本配置
- 使用openssl库EVP编程计算sha1值
- FreeMicaps更新(2013.7.30):FreeMicaps V0.3.0
- 客户信息系统开发小结
- 开门关门
- java动态代理
- hdu 3853 LOOPS
- centos 怎么安装 g++
- Linux学习必备程序
- UNDO表空间