Qt RSA OpenSSL C++ Qt加密解密签字通信系统窗体源码

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Qt RSA OpenSSL C++ Qt加密解密签字通信系统窗体源码
程序示例精选
Qt RSA OpenSSL C++ Qt加密解密签字通信系统窗体源码
如需安装运行环境或远程调试,可点击
博主头像进入个人主页查看博主联系方式,由专业技术人员远程协助!

前言

这篇博客针对《Qt RSA OpenSSL C++ Qt加密解密签字通信系统窗体源码》编写代码,代码整洁,规则,易读。 学习与应用推荐首选。

运行结果

文章目录

一、所需工具软件
二、使用步骤
1. 主要代码
2. 运行结果

三、在线协助

一、所需工具软件

1. VS2019, C++
2. QT

二、使用步骤

代码如下(示例):

//加密
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
   
   
    ui.setupUi(this);

    QObject::connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(TestRSAEncode_sendout()));
    QObject::connect(ui.pushButton_2, SIGNAL(clicked()), this, SLOT(receiver()));

}


void MainWindow::TestRSASign()
{
   
   
    GenerateKeyEx();
    string strData = "orderId=01010500201502000004reqTime=20150205012727ext=20151120ext2=1";
    string strSigned;
    if (RSASignAction(strData, strSigned))
    {
   
   
        printf("加签成功\n");
        if (RSAVerifyAction(strData, strSigned))
        {
   
   
            printf("验签成功\n");
        }

    }
}


//发送
string strEncode;
string strDecode;
void MainWindow::TestRSAEncode_sendout()
{
   
   

    TestRSASign();

    //

    QString sendoutWord = QString("%1").arg(ui.textEdit->toPlainText());
    string strEncodeData = sendoutWord.toStdString();
    //string strEncodeData = "你好吗";


    GenerateKey();
    strEncode = EncodeByBioPublicKey(strEncodeData);
    strDecode = DecodeByBioPrivateKey(strEncode);

    printf("Old data:%s\n", strEncodeData.c_str());
    printf("Encode data:%s\n", strEncode.c_str());
    printf("Decode data:%s\n", strDecode.c_str());


    std::string encoded64 = base64_encode((const char*)(strEncode.c_str()), strEncode.length());
    std::cout << "base64encodedtxt:" << encoded64 << std::endl;


    QFile::remove("saveSendOut.txt");
    QFile filetxt(QString::fromStdString("saveSendOut_server.txt"));
    if (filetxt.open(QIODevice::WriteOnly))
    {
   
   
        QTextStream out(&filetxt);
        out.setCodec("UTF-8");
        out.flush();

    }
    filetxt.close();

    std::string dir555 = "saveSendOut_server.txt";
    std::string filePathCopy = "../client-exe/saveSendOut_server.txt";
    std::string filePathCopy2 = "../client-exe/private.pem";

    //std::string filePathCopy = "D:/saveSendOut.txt";
    QFile::remove(QString::fromStdString(filePathCopy));
    QFile::remove(QString::fromStdString(filePathCopy2));
    QFile::copy(QString::fromStdString(dir555), QString::fromStdString(filePathCopy));
    QFile::copy(QString::fromStdString("private.pem"), QString::fromStdString(filePathCopy2));
}


inline string readFile(const string& filename) 
{
   
   
    ifstream in(filename);
    istreambuf_iterator<char> begin(in), end;
    string content(begin, end);
    in.close();
    return content;
}
void MainWindow::receiver()
{
   
   
    //自接收
    string strDecode = DecodeByBioPrivateKey(strEncode);
    std::cout << "strDecode: " << strDecode << std::endl;
    ui.textEdit_2->setPlainText(title2);
    ui.textEdit_4->append(QString::fromStdString("自接收解密: ") + strDecode.c_str());

    //远程接收
    //QFile file(QString::fromStdString("saveSendOut.txt"));
    //if (file.open(QFile::ReadOnly | QFile::Text))
    //{
   
   
    //    QTextStream fs(&file);
    //    QString fileContent(fs.readAll());
    //    std::cout << "fileContent: " << fileContent.toStdString() << std::endl;

    //    string strDecodeRemotion = DecodeByBioPrivateKey(fileContent.toStdString());
    //    ui.textEdit_4->append(QString::fromStdString("远程接收解密: ") + strDecodeRemotion.c_str());
    //}
    //file.close();

    //远程接收

    string content = readFile("saveSendOut.txt");
    std::string decoded64 = base64_decode(content);
    string strDecodeRemotion = DecodeByBioPrivateKey(decoded64);
    ui.textEdit_4->append(QString::fromStdString("远程接收解密: ") + strDecodeRemotion.c_str());

}

运行结果

三、在线协助:

如需安装运行环境或远程调试,可点击博主头像,进入个人主页查看博主联系方式,由专业技术人员远程协助!

1)远程安装运行环境,代码调试
2)Visual Studio, Qt, C++, Python编程语言入门指导
3)界面美化
4)软件制作

博主个人主页:https://developer.aliyun.com/profile/expert/rfnzgp3sk3ahc
博主所有文章点这里:https://developer.aliyun.com/profile/expert/rfnzgp3sk3ahc
博主联系方式点这里:https://developer.aliyun.com/profile/expert/rfnzgp3sk3ahc
相关文章
|
5月前
|
NoSQL 网络协议 Linux
Redis的实现一:c、c++的网络通信编程技术,先实现server和client的通信
本文介绍了使用C/C++进行网络通信编程的基础知识,包括创建socket、设置套接字选项、绑定地址、监听连接以及循环接受和处理客户端请求的基本步骤。
89 6
|
8天前
|
编译器 C++ 容器
【c++丨STL】基于红黑树模拟实现set和map(附源码)
本文基于红黑树的实现,模拟了STL中的`set`和`map`容器。通过封装同一棵红黑树并进行适配修改,实现了两种容器的功能。主要步骤包括:1) 修改红黑树节点结构以支持不同数据类型;2) 使用仿函数适配键值比较逻辑;3) 实现双向迭代器支持遍历操作;4) 封装`insert`、`find`等接口,并为`map`实现`operator[]`。最终,通过测试代码验证了功能的正确性。此实现减少了代码冗余,展示了模板与仿函数的强大灵活性。
29 2
|
26天前
|
安全 算法 物联网
SSL/TLS:互联网通信的加密基石与安全实践
**简介:** 在数字化时代,互联网每天传输海量敏感数据,网络攻击频发。SSL/TLS协议作为网络安全的基石,通过加密技术确保数据安全传输。本文解析SSL/TLS的技术架构、密码学原理、应用场景及常见误区,探讨其在未来的发展趋势,强调持续演进以应对新型威胁的重要性。 SSL/TLS不仅保障Web安全,还广泛应用于API、邮件、物联网等领域,并遵循合规标准如PCI DSS和GDPR。
|
1月前
|
消息中间件 Linux C++
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
70 16
|
3月前
|
算法 网络安全 区块链
2023/11/10学习记录-C/C++对称分组加密DES
本文介绍了对称分组加密的常见算法(如DES、3DES、AES和国密SM4)及其应用场景,包括文件和视频加密、比特币私钥加密、消息和配置项加密及SSL通信加密。文章还详细展示了如何使用异或实现一个简易的对称加密算法,并通过示例代码演示了DES算法在ECB和CBC模式下的加密和解密过程,以及如何封装DES实现CBC和ECB的PKCS7Padding分块填充。
87 4
2023/11/10学习记录-C/C++对称分组加密DES
|
3月前
|
编译器 C语言 C++
【c++丨STL】list模拟实现(附源码)
本文介绍了如何模拟实现C++中的`list`容器。`list`底层采用双向带头循环链表结构,相较于`vector`和`string`更为复杂。文章首先回顾了`list`的基本结构和常用接口,然后详细讲解了节点、迭代器及容器的实现过程。 最终,通过这些步骤,我们成功模拟实现了`list`容器的功能。文章最后提供了完整的代码实现,并简要总结了实现过程中的关键点。 如果你对双向链表或`list`的底层实现感兴趣,建议先掌握相关基础知识后再阅读本文,以便更好地理解内容。
70 1
|
4月前
|
C语言 C++ 容器
【c++丨STL】string模拟实现(附源码)
本文详细介绍了如何模拟实现C++ STL中的`string`类,包括其构造函数、拷贝构造、赋值重载、析构函数等基本功能,以及字符串的插入、删除、查找、比较等操作。文章还展示了如何实现输入输出流操作符,使自定义的`string`类能够方便地与`cin`和`cout`配合使用。通过这些实现,读者不仅能加深对`string`类的理解,还能提升对C++编程技巧的掌握。
220 5
|
5月前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
149 0
Linux C/C++之TCP / UDP通信
|
5月前
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
123 2
|
7月前
|
存储 数据可视化 C++
【C++】C++-学生考试题库管理系统(源码)
本系统设计了一个选题管理流程,包括读取题目信息、随机抽取题目、保存及查询选题结果等功能。使用 `readProjects` 从文件读取题目信息,`drawProject` 随机抽取未选中的题目,`saveSelection` 保存选题结果至文件,`querySelection` 查询并显示所有选题结果。主函数提供菜单界面,支持学生信息输入、抽题及结果查询。关注【测试开发自动化】公众号,回复“题库”获取源码。
66 0

热门文章

最新文章

推荐镜像

更多