博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenSSL密码算法库: MD5示例小程序
阅读量:7116 次
发布时间:2019-06-28

本文共 2040 字,大约阅读时间需要 6 分钟。

OpenSSL  OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL 的密码算法库包含多种加密算法的实现,可单独应用。

OpenSSL 下载:

安装:

./config --prefix=/data/chenzhenjing/local

make (若编译不过,make clean后重试)

make install 

一个利用OpenSSL MD5算法的简单示例程序:功能:根据文本文件的地一个非空字符串进行hash

/* * ===================================================================================== * *       Filename:  SplitProduct.c * *    Description:   * *        Version:  1.0 *        Created:  04/03/2013 04:49:06 PM CST *       Revision:  none *       Compiler:   *                  gcc -std=c99 -I/data/chenzhenjing/local/include/openssl/ -c SplitProduct_md5.c *                  gcc -std=c99 -o  test_md5 SplitProduct_md5.o  /data/chenzhenjing/local/lib/libcrypto.a * *         Author:  Zhenjing Chen (zhenjing), zhenjing.chen@gmail.com *        Company:   * * ===================================================================================== */#define _GNU_SOURCE#include 
#include
#include
#include
#include
#include "openssl/md5.h"MD5_CTX md5_ctx;static int MD5mod(const char* str, int length, int mod){ char sign[16] = {
0}; MD5_Init(&md5_ctx); MD5_Update(&md5_ctx, str, length); MD5_Final(sign, &md5_ctx); int sum = 0; for (int i=0; i < 16; i ++) { sum += (sign[i]&0xff); } int offset = sum % mod; return offset;}int main(int argc, char** argv){ if( argc < 4){ fprintf(stderr, "%s num infile outfile\n", argv[0]); exit(-1); } int num = atoi(argv[1]) ; if( num <= 0){ fprintf(stderr, "ERROR: num error: %s\n", argv[1]); exit(-1); } FILE* in = fopen(argv[2], "r"); if( in == NULL){ perror("fopen"); fprintf(stderr, "ERROR: infile error: %s\n", argv[2]); exit(-1); } FILE** OUT = (FILE**)malloc(sizeof(FILE*) * num); for(int i=0; i

其他参考资料:

使用 OpenSSL API 进行安全编程:

本文转自 zhenjing 博客园博客,原文链接: http://www.cnblogs.com/zhenjing/p/openssl.html ,如需转载请自行联系原作者
你可能感兴趣的文章
区分大端和小端
查看>>
PEP 3102 -- Keyword-Only Arguments
查看>>
lch 儿童围棋课堂 初级篇1 ( (李昌镐 著))
查看>>
算法新解 (刘新宇 著)
查看>>
共享的文件
查看>>
交换变量的值
查看>>
转载-怎样更好地理解并记忆泰勒展开式?
查看>>
C++ 项目改动后eclipse 项目编译 改动无效
查看>>
github学习心得
查看>>
Qt Charts 下的BarChart数据系列标签显示Bug
查看>>
Soap的错误小结
查看>>
GlassFish下手动部署JSF程序
查看>>
IIS报错:Exception from HRESULT: 0x8007000B解决方法
查看>>
隐身扫描服务信息
查看>>
PHP获取新插入的主键id
查看>>
Mac/Linux 常用命令
查看>>
贝叶斯决策
查看>>
Ubutu16.04+Cuda9.2/9.0+Cudnn7.12/7.05+TensorFlow-gpu-1.8/1.6
查看>>
手机应用开发宝典:如何养成一款畅销APP
查看>>
响应式开发: 宽高等比例缩放
查看>>