linux c md5加密使用 openssl

方法一:

#include<stdio.h>

#include<openssl/md5.h>

#include<string.h>

int main( int argc, char **argv )

{

MD5_CTX ctx;

unsigned char *data="123";

unsigned char md[16];

char buf[33]={'\0'};

char tmp[3]={'\0'};

int i;

MD5_Init(&ctx);

MD5_Update(&ctx,data,strlen(data));

MD5_Final(md,&ctx);

for( i=0; i<16; i++ ){

sprintf(tmp,"%02X",md[i]);

strcat(buf,tmp);

}

printf("%s\n",buf);

return 0;

}

输出:

202CB962AC59075B964B07152D234B70

方法二:

#include<stdio.h>

#include<openssl/md5.h>

#include<string.h>

int main( int argc, char **argv )

{

unsigned char *data = "123";

unsigned char md[16];

int i;

char tmp[3]={'\0'},buf[33]={'\0'};

MD5(data,strlen(data),md);

for (i = 0; i < 16; i++){

sprintf(tmp,"%2.2x",md[i]);

strcat(buf,tmp);

}

printf("%s\n",buf);

return 0;

}

输出:

202cb962ac59075b964b07152d234b70

总结:

两种实现方式,一样的结果。相比较,第二种方法更直观简单些。

遇到的问题:

1.sprintf时的格式,%02X和%2.2格式是一样的,强制输出两位,比如十进制的8,十六进制也是8,这个格式是控制输出两位,08。如果加密结果要小写字母显示,就是"%2.2x",大写就是"2.2X"。

2.一定要使用unsigned char,虽然是char,其实就是个int,当然,它只有一个字节,和char的区别是,unsigned char 0~255 ,char -127~127。使用char会出问题。这个md5加密函数,返回16个十进制数,范围在0~255间,把它format为十六进制就是32为md5编码了。

3.gcc编译的时候,后面加上参数 -lcrypto 如果系统没有安装libcrypto,是不能用这个方法的。

如果不想使用openssl库函数,前面我的文章里有md5加密的源码,可以直接使用。

更多精彩内容:http://www.bianceng.cn/Programming/cplus/

时间: 2024-12-29 14:19:42

linux c md5加密使用 openssl的相关文章

浅析PKI加密解密 OpenSSL

本篇文章是对PKI加密解密 OpenSSL进行了介绍,需要的朋友参考下   点击下载OpenSSL window与linux要区分的 解压文件 双击: Win32OpenSSL-0_9_8l_95895.(exe 安装完毕后 OpenSSLbinopenssl.exe 输入命令,生成私钥 genrsa -out private-rsa.pem 输入命令,生成公钥 rsa -in private-rsa.pem -pubout -out public-rsa.cer

在Linux系统中加密文件的方法

  1. oppnssl md5 加密字符串的方法 a.手动输入命令及过程如下: 代码如下: #openssl //在终端中输入openssl后回车. OpenSSL> md5 //输入md5后回车 123456 //接着输入123456,不要输入回车.然后按3次ctrl+d. 123456e10adc3949ba59abbe56e057f20f883e //123456后面的就是密文了 解释:为何在输入123456后不回车呢? 是因为openssl默认会把回车符当做要加密的字符串中的一个字符,

Codenomicon在全世界最大的开源加密服务 OpenSSL 中找到了一个严重漏洞

本月初,一家叫做Codenomicon的安全公司在全世界最大的开源加密服务 OpenSSL 中找到了一个严重漏洞,黑客利用此漏洞可盗走网站用于加密在线交易和 web 连接的密钥,受影响的服务器数量可能多达几十万,在圈子里造成了严重恐慌.幸好,Codenomicon在公布漏洞消息的同时也发布了补丁.不过比起亡羊补牢,更好的做法是防患于未然. 近日,包括Google.微软.Facebook在内的十二家科技巨头就发起了一个叫做 the Core Infrastructure Initiative的项目

破解md5加密的方法

我们知道md5加密是不可逆转的,但是要破解md5的加密也很简单. 网上也有很多在线的破解.既然是不可逆转的,那么网上的那些破解是怎么来的呢? 原因很简单,就是使用穷举法来进行破解. 如:我们计算出键盘上所有字符的组合的md5,将加密前后的字符串分别存入数据库中: 然后拿你的md5加密后的字符串进行查询得出加密前的字符串.这就是在线破解的奥秘. 但是这种破解方法也有局限性.如:我对单一一个字符串进行多次的md5加密,那么我们破解就要反复的进行穷举. 如果你不知道字符串被md5加密了多少次,那么就要

java的md5加密类(zt)

加密 java的md5加密类 MD5算法是将数据进行不可逆加密的算法有较好的安全性,在国内如寿信的安全支付平台就采用此算法. 源代码如下/************************************************MD5 算法的Java BeanLast Modified:10,Mar,2001*************************************************/ import java.lang.reflect.*; /************

MD5加密的javascript实现

javascript|加密 <script>/* MD5 Message-Digest Algorithm - JavaScriptMODIFICATION HISTORY:1.0 16-Feb-2001 - Phil Fresle (<A href="mailto:sales@frez.co.uk">sales@frez.co.uk</A>) - Initial Version (VB/ASP code)1.0 21-Feb-2001 - Enri

用PHP写的MD5加密函数

函数|加密 用PHP写的MD5加密函数 //php_md5("字符串")define("BITS_TO_A_BYTE",8);define("BYTES_TO_A_WORD",4);define("BITS_TO_A_WORD",32);$m_lOnBits=array(30);$m_l2Power=array(30); function LShift($lValue,$iShiftBits){        if ($iSh

ASP中使用MD5加密字符

加密 下载过动网论坛.或者其他注册程序的用户知道,在用户注册时,系统给注册的密码进行了MD5的加密. 介绍使用方法: 在需要使用MD5加密时,调用MD5.asp文件:<!--#include file="md5.asp"--> 进行字符加密:MD5(加密字符) MD5.asp文件代码:<%Private Const BITS_TO_A_BYTE = 8Private Const BYTES_TO_A_WORD = 4Private Const BITS_TO_A_WO

MD5加密的&amp;#106avascript实现

加密 <script>/* MD5 Message-Digest Algorithm - JavaScriptMODIFICATION HISTORY:1.0 16-Feb-2001 - Phil Fresle (<A href="mailto:sales@frez.co.uk">sales@frez.co.uk</A>) - Initial Version (VB/ASP code)1.0 21-Feb-2001 - Enrico Mosanghi