QT对字符串简单加、解密
使用按位异或^进行加、解密:
加、解密都是使用该函数:
void EncryptionStr(QByteArray &data)
{static QByteArray key = "MY_KEY";for (int i = 0; i < data.size(); i++){data[i] = data[i] ^ key[i % key.size()];}
}
发现该加密函数无法对中文进行加密,原因是含有中文每个字符在不同编码格式所占字节数不同。所以将该字符串转为宽字节(每个字符占两个字节),处理后在转换utf8(我的项目使用utf8字符编码).
QString EncryptionStr(QString str)
{std::wstring wString = str.toStdWString();static QByteArray key = "MY_KEY";for (int i = 0; i < wString.size(); i++){wString[i] = wString[i] ^ key[i % key.size()];}return QString::fromStdWString(wString).toUtf8();
}
备注:此处加密key中的字符在加密相同的字符时会产生异常,比如用key="MY_KEY" 来加密MY_KEY加密过后的密文是为空的,因为在异或操作的时候,相同的值结果为0,所以加密过后密文是“\0”为字符串的结束符,导致加密异常。
解决方法:就是将key中字符串的值设置为明文中没有的字符,比如¥~等特殊字符。
QT对字符串简单加、解密相关推荐
- 【综合】简单加解密——寻找序列号
[综合]简单加解密--寻找序列号 下面文字对你可能有用(复制+粘贴): #include <stdlib.h> #include <string.h> #include &qu ...
- Python实现文件简单加解密
目录 一.基础知识 二.加解密算法 1.导入运行库 2.定义生成密钥函数 3.定义加解密单元 4.加密文件 5.解密文件 三.测试 一.基础知识 python中的异或操作符为 ^ ,也记作XOR,按位 ...
- rsa加解密 --- jsencrypt.min.js --- 支持长字符串分段加解密
前端 + rsa加解密 + jsencrypt.min.js–(新增超长字符分段加解密) 分享2种,分段 和 不分段 加解密 --话不多说,直接上代码!~ 最终效果: 首先引入2个js <scr ...
- android 文本 加密解密,Android文件简单加解密
前言 在Android应用开发中,有时需要把一些内容以文件的方式保存到sdcard上,这时我们需要考虑数据的安全性,这就涉及到文件的加解密,这里简单介绍一种文件的加解密实现方法. 实现方案 我们在读写 ...
- java 字符串 加密_如何用JAVA实现字符串简单加密解密?
展开全部 java加密字符串可以使用des加密算法62616964757a686964616fe4b893e5b19e31333363376462,实例如下: package test; import ...
- Excel VBA 编程技巧系列(一)替换字符串、加解密字符串和等待外部程序完成
目录 1. 执行多个字符串替换 2. 退出当前程序并让 VBA 代码等待该外部应用程序完成 3. 加.解密码字符串 1. 执行多个字符串替换 如何轻松执行多个字符串替换? 当用唯一的字符串去替换一个或 ...
- java 字符串加密_如何用JAVA实现字符串简单加密解密?
展开全部 java加密字符串可以使用des加密算法,实例如62616964757a686964616fe59b9ee7ad9431333337616636下: package test; import ...
- 使用openssl开源AES算法,实现aes、aes-cbc和aes-ecb对字符串的加解密
注意事项 对于用户输入的密码进行了md5运算,从而保证数据格式的统一性 内部调用的随机函数,参考我的其他博文 参考链接 头文件crypto_util.h #pragma once#include &l ...
- 华为机试HJ29: 字符串加解密
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 1.对输入的字符串进行加解密,并输出. 2.加密方法为: 当内容是英文字母时则用该英 ...
- AES方式加解密的简单介绍
上面一篇文章介绍了使用DES方式进行加解密( DES方式加解密的简单介绍),我们说了DES由于使用8个字节(64bit)密钥进行加解密,所以安全性不够(当然这里的不够都是相对的),所以现在使用了密钥更 ...
最新文章
- C语言之计算大数阶乘,如计算100!和1000!等~~~
- 【Linux】一步一步学Linux——newgrp命令(91)
- 【计算机组成原理】存储器简述
- usaco Cow Tours
- 从java到C++入门
- vue垂直布局_vue实现长图垂直居上 vue实现短图垂直居中
- mvc5 新手入门--ASP.NET MVC5中View-Controller间数据的传递
- eclipse 设置和快捷键
- 用python表白代码_使用Python制作表白小程序
- Severstal: Steel Defect Detection竞赛
- 2018年,Facebook没倒闭是个奇迹
- 『Python』matplotlib的imshow用法
- 化妆行业网站建设方案
- jOOQ是如何设计事务API(详细指南)
- 在国内发展,有IPMP证书有用吗?
- ONVIF 视频对接,ODM无法显示NVT
- 格灵深瞳赵勇:计算机视觉在安防、交通、机器人、无人车等领域的应用
- 计算机相关知识培训新闻稿,不忘初心 磨砺自我 ——计算机学院团委培训顺利进行...
- Vue 世界地图 七大洲mark标记效果
- 新生儿不建议吃鱼肝油,这些你知道吗
热门文章
- HTML5 拖放(Drag 和 Drop)(stage1-39)
- 3D建模之ZBrush雕刻教程,神奇上尉角色建模教程,看完你“学废”了吗?
- linux企业版as,Redhat 企业版 LINUX AS5.0 下载地址
- 【经验】CCF CSP认证问题
- 现代制造技术——金属切削原理
- Detours库使用与原理分析
- mysql 5.6 cmake 参数_编译cmake MySQL 5.6.10报错
- 你所学的专业是怎么回事——摄影测量与遥感
- java利用poi为excel添加图片水印
- html百度地图导航起点默认定位位置,百度地图如何设置起点