Qt直接使用OpenSSL里的函数

简述

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

时间: 2024-08-06 20:08:29

Qt直接使用OpenSSL里的函数的相关文章

javascript中利用柯里化函数实现bind方法

柯理化函数思想:一个js预先处理的思想:利用函数执行可以形成一个不销毁的作用域的原理,把需要预先处理的内容都储存在这个不销毁的作用域中,并且返回一个小函数,以后我们执行的都是小函数,在小函数中把之前预先存储的值进行相关的操作处理即可: 柯里化函数主要起到预处理的作用: bind方法的作用:把传递进来的callback回调方法中的this预先处理为上下文context; /** * bind方法实现原理1 * @param callback [Function] 回调函数 * @param con

浅谈JavaScript中的柯里化函数

首先,不可避免的要引经据典啦,什么是柯里化函数呢(from baidu): 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术.这个技术由 Christopher Strachey 以逻辑学家 Haskell Curry 命名的,尽管它是 Moses Schnfinkel 和 Gottlob Frege 发明的. 用于创建已经设置好了一个或多个参数的函数 与函数绑定相似,他们之间的区

Swift # 柯里化函数

前言 此次文章,讲述的是Swift的一个新特性(柯里化函数),可能很多iOS开发人员是第一次听这个词汇,包括我自己也是,自己也用了几天时间才总结出来,希望能帮助到各位咯,个人感觉偏向有开发经验的码友,如果零基础的看懂,希望能给个赞,??! 如果喜欢我的文章,可以关注我,随着后续不断学习Swift中,陆续还会有更新ing.... 什么是柯里化函数? 柯里化(Currying),又称部分求值(Partial Evaluation),是一种函数式编程思想,就是把接受多个参数的函数转换成接收一个单一参数

&lt;Openssl下hash函数&gt;

hash函数:是不可逆的函数,它的输入可以是任意长度的字节流.它的输出是固定大小的,hash函数的作用就是给你的文件产生一个摘要,它是独一无二的. 例如:y=f(x) x代表输入  y代表输出   输入x求y容易  单输入y求x就难了 我们常见的hash函数MD5和SHA1 当然和有其他的比较少见. DM5 :通常为128个bits 16个字节 sha1:通常为160bits     一个字节8个bits 20个字节 [[email protected] ~]# md5sum /etc/pass

JavaScript的柯里化函数

柯里化,或者说部分应用,是一种函数式编程的技术,对于熟悉以传统方式编写 JavaScript 代码的人来说可能会很费解.但如果使用得当,它可以使你的 JavaScript 函数更具可读性. 更具可读性和灵活性 函数式 JavaScript 被吹捧的优点之一就是拥有短小紧凑的代码风格,可以用最少行数.更少重复的代码得到正确的结果.有时这会以牺牲可读性为代价:如果你还不熟悉函数式编程的方法,这种方法写的代码会很难阅读和理解. 如果之前你遇到过柯里化这个术语,但是不知道它是什么意思,把它当做奇怪的.难

Qt调用dll中的功能函数

DLL 优点 ------------------------------------- 1.扩展了应用程序的特性: 2.可以用许多种编程语言来编写: 3.简化了软件项目的管理: 4.有助于节省内存: 5.有助于资源共享: 6.有助于应用程序的本地化: 7.有助于解决平台差异: 8.可以用于一些特殊的目的.windows使得某些特性只能为DLL所用. 转载:http://www.cnblogs.com/hicjiajia/archive/2010/08/27/1810239.html Qt调用d

关于函数里和函数外的变量/类/常量的

关于函数里和函数外的变量/类/常量的     1 变量是不能跨越到函数里面的,即函数外面的变量不能直接在函数里面使用,函数里面的变量更不能被函数外面使用 2 类可以跨越到函数里面,但是不能实例化之后赋给一个变量再在函数里用,这样相当于变量,而变量是不能跨越到函数里的 3 常量 有些复杂,(其实也好理解) 常量的作用范围是本次页面   具体如下 ①: 函数外定义,函数里可以使用 define("AAA","Good"); function a(){ echo AAA;

[转]html页面调用js文件里的函数报错onclick is not defined处理方法

原文地址:http://blog.csdn.net/ywl570717586/article/details/53130863 今天处理html标签里的onclick功能的时候总是报错:Uncaught ReferenceError: dosave is not defined(-) 找了半天都没发现错在哪,最后发现原来是我写法不对,正确写法如下: html: [html] view plain copy <input type="button" value="立即登录

CTEX里的函数、符号及特殊字符

CTEX里的函数.符号及特殊字符 声调 语法 效果 语法 效果 语法 效果 \bar{a}   \acute{a}   \check{a}   \grave{a}   \tilde{a}   \hat{a}   \breve{a}   \dot{a}   \ddot{a}   函数 语法 效果 语法 效果 语法 效果 \sin a sina \cos b cosb \tan c tanc \arcsin d arcsind \arccos e arccose \arctan f arctanf