【QT】——Base64加解密

news2024/9/24 7:23:49

介绍

  • 用 记事本 打开 exe、jpg、pdf 这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符。
  • 如果要让记事本这样的文本处理软件 处理二进制数据如使用 json 保存二进制信息,需要先把数据先做一个 Base64 编码,统统变成可见字符,再保存。
  • Base64 是一种用 64 个字符表示任意二进制数据的方法,常用于在 URL、Cookie、网页中
    传输少量二进制数据
  • Base64 要求把每三个 8Bit 的字节转换为四个 6Bit 的字节(3*8 = 4*6 = 24),然后把 6Bit
    再添两位高位 0,组成四个 8Bit 的字节,也就是说,转换后的字符串理论上将要比原来的长
    1/3。

示例:

(原文)转换前:         11111101, 11111110, 11111111 (二进制)

转换为四个6Bit : 111111, 011111, 111011, 111111(二进制)

填充0:                 00111111,00011111, 00111011, 00111111(二进制)

Base64的对照表

 

Base64的作用

可以 生成对应的Base64文本,对其进行简单的加密,因为转换后的 文本并不是原文本,如果需要查看原文本,需要对Base64的数据进行解密。

QT接口

编码

QByteArray QByteArray::toBase64() const
QByteArray QByteArray::toBase64(QByteArray::Base64Options options) const

示例:

QByteArray text("Hello world");
text.toBase64(); 
/* 输出: SGVsbG8gd29ybGQ= */

解码

接口:

[static] QByteArray QByteArray::fromBase64(const QByteArray &base64)
[static] QByteArray QByteArray::fromBase64(const QByteArray &base64, 
                                           QByteArray::Base64Options options)
  • 示例
QByteArray::fromBase64("SGVsbG8gd29ybGQ="); 
/* 输出: Hello world */

Base64Options枚举值一览表

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/758518.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务 云原生:搭建 K8S 集群

为节约时间和成本,仅供学习使用,直接在两台虚拟机上模拟 K8S 集群搭建 踩坑之旅 系统环境:CentOS-7-x86_64-Minimal-2009 镜像,为方便起见,直接在 root 账户下操作,现实情况最好不要这样做。 基础准备 关…

数据在内存中的存储1(C语言进阶)

数据在内存中的存储 1.数据类型介绍1.1类型的基本归类:整形家族浮点数家族构造类型指针类型空类型 2.整形在内存中的存储2.1 原码、反码、补码2.2 大小端介绍为什么有大端和小端: 我们今天来学习数据在内存中的存储 1.数据类型介绍 前面我们已经学习了基…

TCP三次握手四次挥手

文章目录 TCP 三次握手和四次挥手1、三次握手过程image-202307100943094972、为什么要三次握手3、第 2 次握手传回了 ACK,为什么还要传回 SYN?4、断开连接-TCP 四次挥手5、为什么要四次挥手6、丢包问题7、为什么不能把服务器发送的 ACK 和 FIN 合并起来&…

qt开发技巧之嵌入式linux qt按钮点击触发两次

1.问题 移植qt5.12.9到嵌入式linux系统,tslib作为触摸输入,开发平台是imx6ull,点击pushbutton按钮会出现触发两次点击的情况。 2.解决 vi /etc/profile,在 /etc/profile里添加环境变量,禁止QT自带输入检测&#xff0…

vue-watch监听器

1. 概述 watch是 vue 中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作。 Vue官网很明确的建议我们这样使用watch侦听属性:当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。 2. 用…

【通览一百个大模型】XLNet(Google)

XLNet 欢迎订阅阅读【大模型&NLP&算法】。 作者:王嘉宁本文章内容为转载或整理;仓库链接:https://github.com/wjn1996/LLMs-NLP-Algo 【通览一百个大模型】XLNet(Google) 作者:王嘉宁&#xff0…

lua脚本语言学习笔记

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 因为我们使用redis的时候一般要写lua脚本,这篇文章就介绍一下lua脚本语言的基础用…

Python 算法基础篇:时间复杂度和空间复杂度简介

Python 算法基础篇:时间复杂度和空间复杂度简介 引言 1. 时间复杂度 a ) 常见的时间复杂度 b ) 时间复杂度示例 2. 空间复杂度 a ) 常见的空间复杂度 b ) 空间复杂度示例 结论 引言 在学习和分析算法时,时间复杂度和空间复杂度是两个关键概念。它们帮助…

【Python】类型注解 ④ ( 函数类型注解 | 函数形参类型注解语法 | 函数返回值类型注解 )

文章目录 一、函数形参类型注解1、函数中由于类型缺省导致的提示问题2、函数形参类型注解语法3、代码示例 - 函数形参类型注解 二、函数返回值类型注解1、函数返回值类型注解语法2、代码示例 - 函数返回值类型注解 一、函数形参类型注解 1、函数中由于类型缺省导致的提示问题 由…

LSTM对比Bi-LSTM的电力负荷时间序列预测(Matlab)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

小程序api的promise化

小程序根目录cmd运行安装命令 npm install --save miniprogram-api-promise1.0.4 安装完成之后先到根目录中删除miniprogram_npm文件夹(不删除构建npm时可能会出现问题) 删除之后再在工具中点击构建npm 构建成功之后会看到根目录中重新出现了miniprogram_npm文件夹 在app.j…

P1747 好奇怪的游戏

好奇怪的游戏 题目背景 《爱与愁的故事第三弹shopping》娱乐章。 调调口味来道水题。 题目描述 爱与愁大神坐在公交车上无聊,于是玩起了手机。一款奇怪的游戏进入了爱与愁大神的眼帘:***(游戏名被打上了马赛克)。这个游戏类似…

修复漏洞(三)升级Docker里面的镜像(MySQL、Nginx等)

前言 因原版本检测出来存在漏洞,故需升级底层镜像 步骤 先看看自己现在的是什么版本,教你们一个骚操作,查看Docker里面的Mysql或者其他容器版本都不用百度出来的这么麻烦首先docker images,查看镜像ID然后docker inspect 镜像I…

2、Java入门教程【IDEA】

1、下载 IDEA社区版:下载地址 IDEA管理JAVA程序的结构: project 项目、工程module 模块package 包class 类 2、创建工程 创建【project】 点击【create】后,项目结构如下: 创建【package】 我们继续在【src】目录下创建【pack…

Python中的break和continue语句应用举例

Python中的break和continue语句应用举例 在进行Python编程时候,有时需要,对循环中断或跳过某部分语句,此时常会用到break语句或continue语句。本文将通过实际例子阐述这两个语句的用法。 1.break语句 break语句是实现在某个地方中断循环&a…

js逆向补环境-b站志远二期最后8节课笔记

目录 一、基础知识1、什么是纯净V82、什么是BOM和DOM3、node环境/浏览器环境/V8引擎区别4、如何本地调试js补环境5、补环境相对于逆向算法的好处6、vm和vm2介绍 二、8个视频内容笔记概括1、补环境基本知识/头条案例手动插桩补2、Proxy代理/toString函数保护介绍3、补环境框架设…

安卓UI:Switch和ToggleButton

目录 一、Switch和ToggleButton介绍 Switch常用属性: ToggleButton属性: 二、Switch和ToggleButton常用方法 Switch常用方法: ToggleButton常用方法: 三、Switch和ToggleButton的使用 MainActivity: activity_main&#xff1…

【代码随想录 | Leetcode | 第四天】数组 | 螺旋矩阵 | 59

前言 欢迎来到小K的Leetcode|代码随想录|专题化专栏,今天将为大家带来螺旋矩阵的分享✨ 目录 前言59. 螺旋矩阵 II总结 59. 螺旋矩阵 II 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 …

【C语言进阶(八)】动态内存管理

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C语言学习分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多C语言知识   🔝🔝 动态内存规划 1. 前言2. 为什么要学…

ElasticSearch索引(index)当中的增删改查操作

文章目录 一、创建索引(Create Index):二、更新索引的设置(Update Index Settings):三、获取当前索引的设置(Get Index Settings):四、删除索引(Delete Index…