【QT】QT实现对文件的Base64加解密

【QT】QT实现对文件的Base64加解密

参考链接:
https://www.icode9.com/content-4-170650.html

GitHub下载地址https://github.com/caochuanlin/encryptfile

对本地文件进行加解密

  • 入参和出参是本地文件,可以使用这两个接口
  • 提供参数,是否删除输入文件
bool EncryptFileFromLocal( const QString& strOriginalFilePath,const QString& strEncryptedFilePath,bool bDeleteOriginalFile /*= true*/ )
  {
  	QFile original_file(strOriginalFilePath);
  	QFile encrypted_file(strEncryptedFilePath);
  
  	if (!original_file.open(QIODevice::ReadOnly))
  	{
  		return false;
  	}
  
  	if (!encrypted_file.open(QIODevice::WriteOnly))
  	{
  		return false;
  	}
  
  	QByteArray encrypted_data = original_file.readAll().toBase64();
  
  	QTextStream writer(&encrypted_file); 
  	writer<<encrypted_data;
  
  	original_file.close();
  	encrypted_file.close();
  
  	if (bDeleteOriginalFile)
  	{
  		QFile::remove(strOriginalFilePath);
  	}
  
  	return true;
  }
  
  bool DecryptFileToLocal( const QString& strEncryptedFilePath,const QString& strDestFilePath,bool bDeleteEncryptedFile /*= true*/ )
  {
  	QFile dest_file(strDestFilePath);
  	if (!dest_file.open(QIODevice::WriteOnly))
  	{
  		return false;
  	}
  
  	QFile encrypted_file(strEncryptedFilePath);
  	if (!encrypted_file.open(QIODevice::ReadOnly))
  	{
  		return false;
  	}
  
  	QByteArray byte_array = QByteArray::fromBase64(encrypted_file.readAll());
  
  	QTextStream writer(&dest_file); 
  	writer<<byte_array;
  
  	dest_file.close();
  	encrypted_file.close();
  
  	if (bDeleteEncryptedFile)
  	{
  		QFile::remove(strEncryptedFilePath);
  	}
  
  	return true;
  }

对ByteArray进行加解密

  • 入参和出参是QByteArray,可以使用这两个接口
  • 对于加解密的结果,可以用于生成QImage等
bool EncryptFileFromData( const QByteArray& byte_data,const QString& strEncryptedFilePath )
  {
  	QFile encrypted_file(strEncryptedFilePath);
  	if (!encrypted_file.open(QIODevice::WriteOnly))
  	{
  		return false;
  	}
  
  	QByteArray encrypted_data = byte_data.toBase64();
  
  	QTextStream writer(&encrypted_file); 
  	writer<<encrypted_data;
  
  	encrypted_file.close();
  
  	return true;
  }
  
  bool DecryptFileToData( const QString& strEncryptedFilePath,QByteArray& byte_data )
  {
  	QFile file(strEncryptedFilePath);
  	if (!file.open(QIODevice::ReadOnly))
  	{
  		return false;
  	}
  
  	byte_data = QByteArray::fromBase64(file.readAll());
  
  	file.close();
  
  	return true;
  }
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值