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”
为了确定输出是否正确,我们可以在网上进行在线验证。
更多参考
- Windows下编译OpenSSL
- OpenSSL
- How to Include OpenSSL in a Qt project
- Building OpenSSL for Visual Studio
- 如何在Windows下编译OpenSSL?
http://blog.csdn.net/liang19890820/article/details/51611400
Qt直接使用OpenSSL里的函数的更多相关文章
- QT paintevent 事件, update()槽函数
一界面重载函数 使用方法: 1在头文件里定义函数 protected: void paintEvent(QPaintEvent *event); 2 在CPP内直接重载 void ---------- ...
- javascript中利用柯里化函数实现bind方法
柯理化函数思想:一个js预先处理的思想:利用函数执行可以形成一个不销毁的作用域的原理,把需要预先处理的内容都储存在这个不销毁的作用域中,并且返回一个小函数,以后我们执行的都是小函数,在小函数中把之前预 ...
- CTEX里的函数、符号及特殊字符
CTEX里的函数.符号及特殊字符 声调 语法 效果 语法 效果 语法 效果 \bar{a} \acute{a} \check{a} \grave{a} \tilde{a} \hat ...
- c#调用js,以及js调用C#里的函数, c#自己生成js代码,实现对web的控制
using mshtml;using System;using System.Collections.Generic;using System.Linq;using System.Security.P ...
- 柯里化函数之Javascript
柯里化函数之Javascript 定义 依据定义来说,柯里化就是将一个接收"多个"參数的函数拆分成一个或者很多个接收"单一"參数的函数.定义看起来是比較抽象的. ...
- 浅谈JavaScript中的柯里化函数
首先,不可避免的要引经据典啦,什么是柯里化函数呢(from baidu): 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返 ...
- Swift # 柯里化函数
前言 此次文章,讲述的是Swift的一个新特性(柯里化函数),可能很多iOS开发人员是第一次听这个词汇,包括我自己也是,自己也用了几天时间才总结出来,希望能帮助到各位咯,个人感觉偏向有开发经验的码友, ...
- C语言中如何调用另一个源文件里的函数
在开发大型项目时,我们常常需要将一份源码分成多个源文件来进行编写,这样可以方便后期的维护.下面就介绍如何从一个源文件里调用另一个源文件的函数. 在源文件A1.c中调用A2.c 中的函数有两种方法: 1 ...
- 在js文件里调用另一个js文件里的函数
这个是我今天解决的一个小问题,我在创建界面的时候,根据不同的界面需求对应创建了不同的js文件来搭建界面,搭建完毕之后再将各个生成页面的函数汇总到主界面上,通过visibility属性切换显示,这时候出 ...
随机推荐
- hdu 六度分离
http://acm.hdu.edu.cn/showproblem.php?pid=1869 #include <cstdio> #include <cstring> #inc ...
- 程序减肥,strip,eu-strip 及其符号表
程序减肥,strip,eu-strip 及其符号表 我们要给我们生成的可执行文件和DSO瘦身,因为这样可以节省更多的磁盘空间,所以我们移除了debug信息,移除了符号表信息,同时我们还希望万一出事了, ...
- 【转】linux tree命令以树形结构显示文件目录结构 ---- 不错
原文网址:http://jingyan.baidu.com/article/acf728fd19c7eff8e510a3eb.html 今天小编来给分享Linux 系统下一个非常有用的命令的使用:tr ...
- 【POJ3006】Dirichlet's Theorem on Arithmetic Progressions(素数筛法)
简单的暴力筛法就可. #include <iostream> #include <cstring> #include <cmath> #include <cc ...
- 关于打开Eclipse时出现eclipse failed to create the java virtual machine与locking is not possible in the directory问题的解决
今天在机子上使用Eclipse时候打开发现这两个问题,通过查阅资料膜拜大神博客得知解决方法,特此整理下来,方便后来遇到此问题的小伙伴们. 一开始打开Eclipse时候出现问题现象1,问题1解决以后就出 ...
- PHP foreach()跳出本次或当前循环与终止循环方法
PHPforeach()跳出本次或当前循环与终止循环方法 PHP中用foreach()循环中,想要在循环的时候,当满足某个条件时,想 $arr = array('a','b','c','d','e') ...
- python高级编程之选择好名称:命名指南
# # -*- coding: utf-8 -*- # # python:2.x # __author__ = 'Administrator' #命名指南 #一组常用的命名规则可以被应用到变量,方法函 ...
- mycat实例(1)
2016二月 22 置原 MyCat - 使用篇(1) 分类:数据库分库分表(Mycat等) (1126) (1) 数据库路由中间件MyCat - 使用篇(1) 基本概念 直接介绍概念太枯燥了,还是拿 ...
- Android应用程序安装过程源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6766010 Android系统在启动的过程中, ...
- Linux安装中文man手冊
1.下载中文包: http://pkgs.fedoraproject.org/repo/pkgs/man-pages-zh-CN/manpages-zh-1.5.1.tar.gz/13275fd039 ...