- 博客(128)
- 资源 (9)
- 收藏
- 关注
原创 c++ openssl 使用 DES(数据加密标准)进行加密和解密的基本操作
使用 DES(数据加密标准)进行加密和解密的基本操作,重点展示了 ECB 和 CBC 模式,并且通过篡改密文的方式来进行攻击。下面是对每个部分的详细解析。
2025-06-05 17:52:55
941
原创 ECB(电子密码本,Electronic Codebook) 和 CBC(密码分组链接,Cipher Block Chaining)区分于用途
DES(数据加密标准)是一种对称加密算法,支持不同的加密模式,最常见的两种模式是 ECB(电子密码本,Electronic Codebook) 和 CBC(密码分组链接,Cipher Block Chaining)。它们之间的主要区别在于如何处理数据块及其安全性。
2025-06-05 17:43:54
434
原创 c++ Base58编码解码
Base58 使用 58 个字符进行编码,字符集为:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz。注意:0(零)、O(大写字母O)、I(大写字母I)和 l(小写字母L)等字符被排除,以避免视觉上的混淆。:Base58 编码和 Base64 类似,但由于字符集更小,编码后的长度比 Base64 稍短。由于字符集避免了视觉上容易混淆的字符,因此在用户界面中显示时更为友好。主要用于加密货币(如比特币)中,作为钱包地址等信息的编码方式。
2025-06-05 10:39:13
430
原创 c++ Base16编码解密:从原理到实战
Base16 使用 16 个字符进行编码,字符集为:0123456789ABCDEF(大写或小写都可以,但通常是大写)。每 1 个字节的数据被编码成 2 个字符,因此 Base16 编码后的长度是原数据的 2 倍。主要用于在需要以十六进制表示数据时使用,常见于调试、哈希值表示、文件校验和等场景。在计算机科学中广泛用于二进制数据的表示。
2025-06-05 10:32:00
223
原创 Qt 处理 XML 数据
是面向文档的,可以方便地读取、修改和创建 XML 文档。它适用于处理小型文件,并允许你修改整个文档。和是基于流的,适用于逐步读取和写入 XML 数据,适合处理大型文件。QDomDocument 使用起来更加简单直观,而 QXmlStreamReader 和 QXmlStreamWriter 则提供了更高效的内存管理,尤其是在处理大型 XML 文件时。
2025-04-24 14:50:11
587
原创 Qt使用 SQLite 数据库的基本方法
用于连接数据库,addDatabase() 设置数据库驱动。QSqlQuery用于执行 SQL 查询和命令,可以绑定参数和获取查询结果。SQLite 是一个文件级数据库,可以直接操作本地文件,无需额外的数据库服务器。使用事务可以确保多个 SQL 操作的原子性。
2025-04-24 14:40:37
661
原创 Qt 使用 MySQL 数据库的基本方法
用于连接数据库,addDatabase() 设置数据库驱动。QSqlQuery用于执行 SQL 查询和命令,可以绑定参数和获取查询结果。通过事务可以确保多个 SQL 操作的原子性。在进行数据库操作时,确保处理好错误和异常情况。
2025-04-24 14:20:04
728
原创 Qt 中线程使用
适用于需要执行耗时操作并与界面进行交互的场景。适用于大量短任务的场景,避免了频繁创建和销毁线程的开销。使用信号和槽进行线程间的通信,确保线程安全。
2025-04-24 14:05:11
518
原创 QTcpSocket 和 QUdpSocket 来实现基于 TCP 和 UDP 的网络通信
在 Qt 中,您可以通过 QTcpSocket 和 QUdpSocket 来实现基于 TCP 和 UDP 的网络通信。以下是如何使用 Qt 实现这两种通信方式的简要示例。
2025-04-24 13:56:33
368
原创 QFile、QDataStream、QTextStream 和 QBuffer 的简要解释
QFile:用于文件操作,支持文本和二进制文件。QDataStream:用于二进制数据的序列化,支持与 QFile、QBuffer 等设备一起工作。QTextStream:用于文本数据的输入输出,支持文本编码处理。QBuffer:用于内存数据缓冲,模拟文件操作,但无需使用磁盘文件。
2025-04-22 14:13:35
723
原创 c++ static 和 extern 关键字
static 用于限制变量或函数的作用域,使其仅在当前文件或函数内可见。- extern 用于声明在其他文件中定义的变量或函数。- 不能将 static 和 extern 同时应用于同一变量或函数,因为它们的作用域是互相对立的。
2025-04-18 09:39:47
437
原创 qt 事件及事件过滤
Q_OBJECTpublic:protected:// 处理鼠标按下事件// 处理键盘按下事件// 绘制事件在上面的代码中,我们重载了 mousePressEvent() 来响应鼠标点击事件,以及重载了 keyPressEvent() 来响应键盘按键事件。paintEvent() 用来绘制文本。Qt 的事件机制为应用程序提供了强大的用户交互能力。你可以通过重载特定的事件处理函数来响应各种事件,如鼠标、键盘、绘制、窗口调整等。
2025-04-15 14:22:02
853
原创 Qt 自定义控件
你可以继承 QWidget 或者其他现有的 Qt 控件类来创建自定义控件。Q_OBJECTpublic:// 设置控件的初始大小protected:// 绘制事件:自定义按钮的外观// 设置按钮的背景色// 设置文本颜色// 鼠标点击事件:模拟按钮点击// 发射点击信号signals:// 自定义的点击信号Qt 支持使用样式表(QSS)自定义控件的样式,可以在自定义控件中结合 QSS 来设置控件的外观。
2025-04-15 14:06:10
1190
原创 QBitmap、QPixmap、QImage 和 QPicture 使用方法和特点以及转换
QBitmap、QPixmap、QImage 和 QPicture 都是 Qt 中用来处理图像和绘制的类。它们各自有不同的用途和特点,下面是每个类的详细解释:
2025-04-10 14:44:20
983
原创 qt自定义信号槽需要注意的事项
如果你使用自定义类型作为信号和槽的参数,确保该自定义类型已经使用 Q_DECLARE_METATYPE 宏声明,以便 Qt 的元对象系统可以正确处理它。// 自定义类型然后你可以在信号和槽中使用这个自定义类型。
2025-04-07 14:30:02
999
原创 Qt 资源文件(.qrc 文件)
Qt 资源文件(.qrc)是一个强大的工具,可以将资源文件嵌入到应用程序中,简化部署并避免外部文件路径问题。通过将常用的资源(如图片、样式表、配置文件等)包含在可执行文件中,可以提高程序的可移植性和可靠性。使用 .qrc 文件时,只需要将资源文件的路径添加到 .qrc 文件中,然后通过 😕 路径在代码中访问这些资源。这样,程序就能在没有外部文件的情况下运行,确保资源不会丢失。
2025-04-07 13:35:04
1225
原创 通过 PAM 模块集成外部服务来实现用户身份认证
PAM(Pluggable Authentication Module)是一种认证框架,允许开发者根据不同的需求编写自定义的认证逻辑。在 Linux 系统中,PAM 被广泛应用于 SSH、登录、sudo 等认证场景。通过编写自定义 PAM 模块,你可以在认证过程中调用外部服务,通常是通过 TCP 或 UDP 套接字进行通信,以便从外部系统验证用户的凭证(如用户名和密码)。为了与外部服务器通信,我们需要定义一个请求结构体和响应结构体,来封装发送和接收的数据。
2025-04-02 11:22:10
870
原创 在 Linux 中,可以使用 inotify 机制来监控目录中的文件创建事件
在 Linux 中,可以使用 inotify 机制来监控目录中的文件创建事件
2025-04-02 10:45:04
465
原创 在 C++ 中,深拷贝赋值操作符(operator=)用于实现对象的赋值操作。
在 C++ 中,深拷贝赋值操作符(operator=)用于实现对象的赋值操作。
2024-12-06 17:54:17
423
原创 c++ 判断一个 IP 地址(可能是 IPv6 或 IPv4)是否属于特定范围
判断一个 IP 地址(可能是 IPv6 或 IPv4)是否属于特定范围
2024-12-06 17:34:14
675
原创 在 Ubuntu 22.04 上部署Apache 服务, 访问一张照片
你可以在 Apache 的默认根目录 /var/www/html 中创建一个简单的 HTML 文件,来测试访问是否正常。保存文件后,访问 http://your_server_ip/index.html,查看是否能成功加载照片。将 your_server_ip 替换为你的服务器 IP 地址,photo.jpg 替换为你的照片文件名。将你的照片上传到刚刚创建的目录中。请确保将 /path/to/your/photo.jpg 替换为你实际照片的路径。现在,你可以通过浏览器访问照片。
2024-10-31 17:59:13
401
原创 (九) 高级IO
高级 IO 部分有个很重要的概念是:非阻塞 I/O在14章之前,我们讨论的所有函数都是阻塞的函数,例如 read(2) 函数读取设备时,设备中如果没有充足的数据,那么 read(2) 函数就会阻塞等待,直到有数据可读再返回。当 IO 操作时出现了错误的时候,我们之前在讨论信号的博文中提到过会出现假错的情况。那么从学了非阻塞 I/O 为止我们一共遇到了两种假错的情况:EINTR:被信号打断,阻塞时会遇到。EAGAIN:非阻塞形式操作失败。
2024-10-25 17:04:48
948
原创 (八)线程
内容:1 线程的概念2 线程的创建、线程的终止、线程的取消选项、栈的清理3 线程同步4 线程属性、线程同步的属性6 重入、线程与信号、线程与fork。
2024-10-25 15:34:34
858
原创 (七)信号
信号不是中断,中断只能由硬件产生,信号是模拟硬件中断的原理在软件层面上进行的实现。可以使用 kill(1) 命令向其它进程查看或发送信号。>$ kill -l>$其中 1 - 31 是标准信号,34 - 64 是实时信号。我们下面讨论的内容如果没有特殊说明则都是针对标准信号。信号有五种不同的默认行为:终止、终止+core、忽略、停止进程、继续。
2024-10-21 13:27:18
839
原创 tar 打包使用方法
tar 是一个用于打包和压缩文件的常用命令行工具,特别在 Linux 和 UNIX 系统中。以下是 tar 的基本用法和常见选项的详细介绍。
2024-10-17 16:42:27
427
原创 五、进程环境
Linux 系统一共有 8 种进程终止方式,其中 5 种为正常终止方式:1)从 main() 函数返回;2)调用 exit(3) 函数;3)调用 _exit(2) 或 _Exit(2) 函数;4)最后一个线程从其启动例程返回;5)从最后一个线程调用 pthread_exit(3) 函数。剩下的 3 种为异常终止方式:6)调用 abort(3) 函数;7)接收到一个信号;8)最后一个线程对取消请求作出响应。
2024-10-17 15:37:50
878
原创 四、 系统数据文件和信息
在/etc/passwd 文件中保存了系统中每个用户的用户名、UID 和 GID 等信息。但是这个文件在不同的系统中保存的格式是不一样的,如果一个程序直接用文件流去读取里面的内容,那么这个程序的可移植性就被降低了。老版本的BSD 使用 BDB (BSDDB) 数据库保存用户信息;HPUnix 使用文件系统 hash 方式保存用户信息;
2024-10-17 15:36:15
708
原创 三、文件系统
stat(2) 函数族是专门用来获取文件的亚数据信息的。系统中 stat(1) 命令就是利用这个函数实现的。。一般情况下文件系统的一个 block 的大小为 4KB,而每个 st_blocks 是 512B,所以一个有效文件占用磁盘空间最小的大小为 8 个 st_blocks。它们会根据文件的路径(path)或是已打开的文件的文件描述符(fd)得到该文件的亚数据,并将他们回填到 struct stat 类型的结构体中供调用者使用。
2024-10-17 15:33:48
758
linux c 语言串口调试
2020-05-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人