OpenSSL - 文件和字符MD5加密实现
OpenSSL安装:
1.github下载最新的OpenSSL:https://github.com/openssl/openssl
2.在linux解压压缩包
3.安装OpenSSL
- ./config --prefix=/usr/local --openssldir=/usr/local/ssl
- make && make install
- ./config shared --prefix=/usr/local --openssldir=/usr/local/ssl
- make clean
- make && make install
4.用ln将需要的so文件链接到/usr/lib或者/lib这两个默认的目录下面
- ln -s /where/you/install/lib/*.so /usr/lib
- sudo ldconfig
openssl MD5接口:
- int MD5_Init(MD5_CTX *c);
- //初始化MD5上下文结构
- int MD5_Update(MD5_CTX *c, const void *data, size_t len);
- //刷新MD5,将文件连续数据分片放入进行MD5刷新。
- int MD5_Final(unsigned char *md, MD5_CTX *c);
- //产生最终的MD5数据
- unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md);
- //直接产生字符串的MD5
代码实现:
- #include <iostream>
- #include <fstream>
- #include <iomanip>
- #include <string>
- #include <openssl/md5.h>
- using namespace std;
- #define MAXDATABUFF 1024
- #define MD5LENTH 16
- int main(int arc,char *arv[])
- {
- string strFilePath = arv[];
- ifstream ifile(strFilePath.c_str(),ios::in|ios::binary); //打开文件
- unsigned char MD5result[MD5LENTH];
- do
- {
- if (ifile.fail()) //打开失败不做文件MD5
- {
- cout<<"open file failure!so only display string MD5!"<<endl;
- break;
- }
- MD5_CTX md5_ctx;
- MD5_Init(&md5_ctx);
- char DataBuff[MAXDATABUFF];
- while(!ifile.eof())
- {
- ifile.read(DataBuff,MAXDATABUFF); //读文件
- int length = ifile.gcount();
- if(length)
- {
- MD5_Update(&md5_ctx,DataBuff,length); //将当前文件块加入并更新MD5
- }
- }
- MD5_Final(MD5result,&md5_ctx); //获取MD5
- cout<<"file MD5:"<<endl;
- for(int i = ; i < MD5LENTH; i++) //将MD5以16进制输出
- cout<< hex <<(int)MD5result[i];
- cout<<endl;
- }while(false);
- MD5((const unsigned char*)strFilePath.c_str(),strFilePath.size(),MD5result); //获取字符串MD5
- cout<<"string MD5:"<<endl;
- for(int i = ; i < MD5LENTH; i++)
- cout << hex << (int)MD5result[i];
- cout<<endl;
- return ;
- }
SConstruct:
- Program('md5','md5.cpp',LIBS = ['ssl','crypto'])
测试结果与命令行比较:
OpenSSL - 文件和字符MD5加密实现的更多相关文章
- Python: 对CSV文件读写 和 Md5加密
1. python 有专门的csv包,直接导入即可. import csv: 2. 直接使用普通文件的open方法 csv_reader=open("e:/python/csv_data/l ...
- Android初级教程:对文件和字符串进行MD5加密工具类
转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/52200008 点击打开链接 之前写过一篇博文,是针对字符串进行md5加密的.今 ...
- 【ORACLE】MD5加密
今天乌干达充值卡入库时,发现有资源已经存在的异常, 异常原因经过核实是由于卡资源密码在库中已经存在, 为进一步查找存在的原因, 因此需要对导入文件密码的MD5 加密, 通过MD5加密后的字符串 ...
- gulp 对js\css进行md5 加密
有的服务器为了网站加载速度,会做服务器缓存,这样就会出现代码出现引用地址没变,新代码不生效,而我们又希望新代码可以及时生效,这样我们就需要避免缓存,当然也有很多方法,本文只介绍使用gulp-rev(对 ...
- linux md5 加密字符串和文件方法
linux md5 加密字符串和文件方法 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意 ...
- MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能
MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...
- Java实现MD5加密_字符串加密_文件加密
Java实现MD5加密,具体代码如下: package com.bstek.tools; import java.io.FileInputStream; import java.io.IOExcept ...
- Django中web开发用md5加密图片名并存储静态文件夹
一般在开发中,有的网站存在大量图片,首先图片的名称是不能重复的, 但是除了数据库可用的id以外我们可以用time模块中time.time()获取的时间来进行md5加密操作, 因为time模块所产生的时 ...
- MD5加密文件
package cn.net.comsys.ut.util; import java.io.File;import java.io.FileInputStream;import java.io.IOE ...
随机推荐
- 关于Unity四元数相乘先后顺序的问题
在unity中四元数和向量相乘在unity中可以变换旋转.四元数和四元数相乘类似矩阵与矩阵相乘的效果. 矩阵相乘的顺序不可互换,只有特殊条件矩阵才可互换.四元数相乘类似,今天就因为这个问题掉进坑里了, ...
- LA 3523 圆桌骑士
题目链接:http://vjudge.net/contest/141787#problem/A http://poj.org/problem?id=2942 此题很经典 知识点:DFS染色,点-双连通 ...
- word2013 blog test
测试一:style里的内容能保存吗?: int read; byte * buf; int tries; int read; byte * buf ...
- python除法
1. >>> from __future__ import division >>> 2/3 0.6666666666666666 操作数为何种数值类型将影响结果 ...
- 【转】CentOS下载版本介绍
官网:http://www.centos.org/ 下载:http://mirror.neu.edu.cn/centos/6.6/isos/ 系统运维:http://www.osyunwei.com/ ...
- js数组的一些操作
原文地址:flash很好玩 http://www.cnblogs.com/yuzhongwusan/archive/2008/12/15/1355378.html arr = new Array(1 ...
- 11.安装KVM虚拟机
安装KVM虚拟机是一大难题,不按照虚拟机物理机128G内存和强劲的CPU无法充分利用.也不便于后面的jenkins自动部署.安装KVM虚拟机过程我是借鉴了网上下载的马哥linux KVM那块的内容 ...
- 区别ie8和ie9的方法
众所周知 区别ie6~8的方法是: width:10px;//chrome width:10px\9;//ie8+ *width:10px;//ie7 _width:10px;//ie6 区别ie8以 ...
- cube定时器延时不准确原因
昨天晚上测试32cube配置好定时器,以1ms为一次中断,然后在程序中做了一个1s的延时,结果发现实际延时5s左右,百思不得其解,仔细查看cube配置也没问题.最后我打开生成工程文件夹里面的ioc文件 ...
- Python之路 day2 购物车小程序1
#Author:ersa ''' 程序:购物车程序 需求: 启动程序后,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时 ...