码迷,mamicode.com
首页 > 其他好文 > 详细

Qt直接使用OpenSSL里的函数

时间:2016-07-25 01:49:58      阅读:467      评论:0      收藏:0      [点我收藏+]

标签:

简述

OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

 

 

下载安装

进入Win32 OpenSSL下载页面,选择适合自己的版本进行下载。

下载完成之后进行安装,我选择的目录为D:\Program Files\OpenSSL-Win32。进入安装目录,可以看到主要包含以下文件夹:

lib:包含了所有的库文件(例如:libeay32.lib、ssleay32.lib)。 
include:包含了所有的头文件(例如:aes.h、md5.h)。 
bin:包含了测试程序、存储证书和密钥的文件(*.pem)。

如果想自行编译,可参考:Windows下编译OpenSSL

使用

在pro中包含库文件与路径。

LIBS += -L"D:/Program Files/OpenSSL-Win32/lib" -llibeay32
LIBS += -L"D:/Program Files/OpenSSL-Win32/lib" -lssleay32

INCLUDEPATH += $$quote(D:/Program Files/OpenSSL-Win32/include)

然后就可以使用了,下面用sha256为例来对字符串进行加密。

#include <openssl/ssl.h>

std::string sha256(const std::string str)
{
    char buf[2];
    unsigned char hash[SHA256_DIGEST_LENGTH];
    SHA256_CTX sha256;
    SHA256_Init(&sha256);
    SHA256_Update(&sha256, str.c_str(), str.size());
    SHA256_Final(hash, &sha256);
    std::string newString = "";
    for(int i = 0; i < SHA256_DIGEST_LENGTH; i++)
    {
        sprintf(buf,"%02x",hash[i]);
        newString = newString + buf;
    }
    return newString;
}

以”Hello World”为例,来进行验证。

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    std::string str = "Hello World";
    qDebug() << QString::fromStdString(sha256(str));

    return a.exec();
}

输出结果:”a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e”

为了确定输出是否正确,我们可以在网上进行在线验证。

更多参考

 

http://blog.csdn.net/liang19890820/article/details/51611400

Qt直接使用OpenSSL里的函数

标签:

原文地址:http://www.cnblogs.com/findumars/p/5702084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!