Qt之OpenSSL

摘要:
简要介绍了OpenSSL是一个功能强大的安全套接字层密码库,它包括主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并为测试或其他目的提供了丰富的应用程序。简介下载和安装使用更多参考下载和安装进入Win32OpenSSL下载页面,选择适合您下载的版本。下载后,安装它。我选择的目录是D:ProgramFilesOpenSSL-Win32。如果你想自己编译,请参阅:在Windows下编译OpenSSL以包含pro中的库文件和路径。LIBS+=-L“D:/ProgramFiles/OpenSSL-Win32/lib”-libeay32LIBS+=-L“D:/ProgramFiles/OpenSSL-Win32/lib”-lsleay32INCLUDEPATH+=$$quote然后您可以使用它。以sha256为例,加密字符串#include std::stringha256{charbuf[2];unsignedcharhash[SHA256_DIGEST_LENGTH];SHA256_CTXsha256;SHA2256_Init;SHA256更新;SHA2五十六最终;std:字符串=“”;用于{sprintf;newString=newString+buf;}returnnewString;}以“HelloWorld”为例进行验证。
简述

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

下载安装

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

下载完成之后进行安装,我选择的目录为D:Program FilesOpenSSL-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”

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

更多参考

免责声明:文章转载自《Qt之OpenSSL》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【mysql】 数据库字符集和排序规则基于STM32的USB枚举过程学习笔记(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

(4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)

openssl  rsa      是RSA对称密钥的处理工具 openssl  pkey   是通用非对称密钥处理工具,它们用法基本一致,所以只举例说明openssl rsa。 它们的用法很简单,基本上就是输入和输出私钥或公钥的作用,或从私钥中提取出公钥,将文件中私钥或公钥的某部分内容输出到stdout openssl   rsa      [-in f...

dup和dup2用法小结

今天和同学探讨了一下关于重定向输出到文件的问题,其中需要用到dup和dup2函数,因此来小小的总结一下。 首先来man一下: dup直接返回一个新的描述符和原来的描述符一样代表同一个资源,描述符的值就从当前未使用的最小的描述符来取。而dup2则是可以指定描述符的值,这样通过把文件的描述符指定为STDOUT_FILENO,这样就相当于重定向输出为文件了。...

SHA256算法介绍

扒一扒密码学的前世今生 二战结束以后,密码学在相当长的一段时间内都像军火一样被各国政府严密看管。美国国家安全局(NSA)雇佣了一大批密码学家在五角大楼内研究最前沿的密码学,严令禁止技术出口及民用。 1972年,IBM研制出了对称密码体制加密算法。 1975年美国国家标准局将对称密码体制加密算法颁布为国家标准,称为数据加密标准DES。DES的公布,也促使了大...

Linux路径名和文件名最大长度限制

UNIX标准对路径名和文件名最大长度限制做出了说明,但其上限值在实际应用长过小,Linux在具体实现时提升了该上限,该限制在Linux的 /usr/include/linux/limits.h 中做出了说明,具体如下: 1 #ifndef _LINUX_LIMITS_H 2 #define _LINUX_LIMITS_H 3 4 #define...

第一篇:CUDA 6.0 安装及配置( WIN7 64位 / 英伟达G卡 / VS2010 )

前言        本文讲解如何在VS 2010开发平台中搭建CUDA开发环境。        当前配置:               系统:WIN7 64位               开发平台:VS 2010               显卡:英伟达G卡               CUDA版本:6.0        若配置不同,请谨慎参考本文。 第一...

使用adb 将文件推送至手机系统分区

今天尝试将mitmdump证书放置到系统证书下的时候不能正常移动证书文件 尝试使用adb命令同样提示权限问题。 查阅一番后: push 之前使用命令:adb remount 计算证书名 openssl x509 -subject_hash_old -in xxx.pem 算出数值 需要安装OpenSSL才能 执行 openssl命令 四个步骤: 一:adb...