Qt Rijndael加密法AES的加密解密使用

序言

只是记录下一个功能的实现

AES主要在于密钥,密钥长度、加密方式和填充方式,当然要注意的是QString和QByteArray的某些转化

库下载地址

Qt-AES

密钥长度、加密方式和填充方式

//密钥长度
enum Aes {
	AES_128,
	AES_192,
	AES_256
};

//加密方式
enum Mode {
	ECB,
	CBC,
	CFB,
	OFB
};

//填充方式
enum Padding {
	ZERO,
	PKCS7,
	ISO
};

作者提供的使用方法之一

QAESEncryption encryption(QAESEncryption::AES_128, QAESEncryption::ECB , QAESEncryption::ISO);
QByteArray input("HELLO AES");
QByteArray key = QString("your-string-key").toLocal8Bit();
//QByteArray key("your-byte-key");

QByteArray encodedText = encryption.encode(input, key);
QByteArray decodedText = encryption.decode(encodedText, key);

QString decodedString = QString(QAESEncryption::RemovePadding(decodedText,QAESEncryption::ISO));
qDebug() << decodedString;

Qt AES加密

QFile file("./thisIsTestFile");
if (!file.open(QIODevice::ReadWrite | QIODevice::Text)){
	qDebug() << "open error" << file.error();
}
QTextStream stream(&file);

QAESEncryption encryption(QAESEncryption::AES_128, QAESEncryption::ECB, QAESEncryption::ISO);
QByteArray input("The wind is less windy");
QByteArray key("你自定义的密钥");	//注意密钥的长度,长了记得更改AES_128

QByteArray encodedText = encryption.encode(input, key);
stream << encodedText.toBase64();
stream.flush();
file.close();

Qt AES解密

QFile file("./thisIsTestFile");
if (!file.open(QIODevice::ReadWrite | QIODevice::Text)){
	qDebug() << "open error" << file.error();
}

QAESEncryption encryption(QAESEncryption::AES_128, QAESEncryption::ECB, QAESEncryption::ISO);
QByteArray key("你自定义的密钥");	//注意密钥的长度,长了记得更改AES_128
QByteArray readInfo = file.readLine();

QByteArray decodedText = encryption.decode(QByteArray::fromBase64(readInfo), key);	//这时解密后的内容后面会带有某些不明字符
QString decodedString = QString(QAESEncryption::RemovePadding(decodedText,QAESEncryption::ISO));	//使用这条会去掉后面多余的字符
qDebug() << "decodedText" << decodedString.toLocal8Bit();
file.close();

注意

1、只使用QByteArray来进行AES加密解密,若要使用QString,QByteArray在加/解密前/后再与QString进行转化,因为AES是逐个字节来加解密,而不是逐个字符;

2、若要与C#的AES加解密相兼容,要注意C#的存放在文件里的是否是toBase64后的string,若是这样的话,需要使用静态函数QByteArray::fromBase64(需解密的字节数组),将其返回的QByteArray拿起解密即可;

3、需要注意文件的编码,当然如果并没有使用中文的即可忽略。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

溪渣渣_梁世华

打赏?我甚至没有任何收费的章节

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值