Qt之加密算法

在写这篇文章之前,我曾反复思量关于加密的叫法是否准确,更为严格来说,应该是密码散列-将数据(如中英文字母、特殊字符)通过复杂的算法转换为另一种固定长度的值。

QCryptographicHash类
在Qt中,QCryptographicHash类提供了生成密码散列的方法。该类可以用于生成二进制或文本数据的加密散列值。目前支持MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512。
这个类在QtCore4.3中被引入。

公共类型
enum Algorithm { Md4, Md5, Sha1, Sha224, ..., Sha3_512 }

公共方法
QCryptographicHash(Algorithm method)
~QCryptographicHash()
void addData(const char * data, int length)
bool addData(QIODevice * device)
void addData(const QByteArray & data)
void reset()
QByteArray result() const

静态公有成员
QByteArray hash(const QByteArray & data, Algorithm method)

成员类型文档
enum QCryptographicHash::Algorithm 常量 取值 描述
QCryptographicHash::Md4 0 生成一个MD4散列
QCryptographicHash::Md5 1 生成一个MD5散列
QCryptographicHash::Sha1 2 生成一个SHA-1散列
QCryptographicHash::Sha224 3 生成一个SHA-224散列(SHA-2)。在Qt5.0介绍
QCryptographicHash::Sha256 4 生成一个SHA-256散列(SHA-2)。在Qt5.0介绍
QCryptographicHash::Sha384 5 生成一个SHA-384散列(SHA-2)。在Qt5.0介绍
QCryptographicHash::Sha512 6 生成一个SHA-512散列(SHA-2)。在Qt5.0介绍
QCryptographicHash::Sha3_224 7 生成一个SHA3-224散列。在Qt5.1介绍
QCryptographicHash::Sha3_256 8 生成一个SHA3-256散列。在Qt5.1介绍
QCryptographicHash::Sha3_384 9 生成一个SHA3-384散列。在Qt5.1介绍
QCryptographicHash::Sha3_512 10 生成一个SHA3-512散列。在Qt5.1介绍


成员函数文档
QCryptographicHash::QCryptographicHash(Algorithm method)
构造一个可以把数据创建为加密哈希值的对象。
QCryptographicHash::~QCryptographicHash()
销毁对象。
void QCryptographicHash::addData(const char * data, int length)
将第一长度字符数据的加密哈希。
bool QCryptographicHash::addData(QIODevice * device)
从开放的输入输出设备读取数据,直到结束并哈希它。如果成功读取,则返回true。
QtCore5.0中引入此功能。
void QCryptographicHash::addData(const QByteArray & data)
这个函数的重载addData()。
QByteArray QCryptographicHash::hash(const QByteArray & data, Algorithm method) [static]
使用此方法返回哈希数据。
void QCryptographicHash::reset()
重置对象。
QByteArray QCryptographicHash::result() const
返回最后的哈希值。

举例(对文本为“password”的字符串加密):
(1)通过静态hase()方法计算
QByteArray byte_array;
byte_array.append("password");
QByteArray hash_byte_array = QCryptographicHash::hash(byte_array, QCryptographicHash::Md5);
QString md5 = hash_byte_array.toHex();

(2)通过result()方法计算
QByteArray byte_array;
byte_array.append("password");
QCryptographicHash hash(QCryptographicHash::Md5);
hash.addData(byte_array); //添加数据到加密哈希值
QByteArray result_byte_array = hash.result(); //返回最终的哈希值
QString md5 = result_byte_array.toHex();

md5结果:5f4dcc3b5aa765d61d8327deb882cf99,可以去找相应的工具进行验证!
推荐一个网址:http://www.md5.com.cn/。
效果如下:

如上所示,无论使用穷举法还是其他手段来破解,都足以说明没有绝对的安全。因为理论上通过逐个查找匹配,是可以破解任何一种密文的,问题只在于如何缩短时间而已。

MD5与SHA-1比较
二者均由MD4导出,所以SHA-1和MD5很相似。他们的强度和其它特性也很相似,但还有以下几点不同:
(1)对强性攻击的安全性:最显著和最重要的区别是SHA-1摘要比MD5要长32位。使用强行技术,产生任何一个 报文使其摘要等于给定报文摘要的难度对MD5为2^128数量级操作,而对SHA-1则是2^160数量级操作。这样,SHA-1对强攻击有更大的优势。
(2)对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,相比之下,SHA-1则不然。
(3)速度:相同硬件上,SHA-1运行速度比MD5慢。

碰撞:由于HASH函数产生定长的密文,结果是有限集合。而待处理的明文可以是计算机网络传输的任何信息。也就是说,明文信息是一个无限集合,密文信息却有限,两集合之间无一一对应关系。总有多个不同明文产生相同密文的情况发生,这就是所谓的碰撞。
MD5与SHA-1曾被认为是足够安全的HASH算法,早在1994就有报告称,运算能力最强的机器,平均24天就可能找到一个MD5碰撞。王小云教授的方法已经为短时间内找到MD5与SHA-1碰撞成为可能。虽然如此,也并不意味着两种方法就此失效,再者,也可以通过自己的手段来进一步处理。比如:通过MD5与SHA结合实现。将A进行MD5处理得到B,将A在进行SHA处理得到C,再将B与C结合(比如:相加),也可把结合后的结果再进行MD5加密。这足以将碰撞机滤降至很小很小,所以没有绝对的安全,只有更安全。

转载于:https://www.cnblogs.com/lvdongjie/p/3750726.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: qt DES加密算法是一种常见的对称加密算法,用于保护数据的安全性。如果你想要下载qt DES加密算法库或相关的开发工具,你可以通过以下几种方式进行获取。 首先,你可以在Qt官方网站上搜索并下载Qt DES加密算法的相关库文件。Qt官方网站提供了丰富的开发工具和库文件,你可以根据自己的需要选择适合的版本进行下载。 其次,你可以通过Qt的开源社区、技术论坛或者代码托管平台搜索并下载qt DES加密算法的开源项目。这些开源项目往往由Qt开发者共享和维护,你可以从中获取到最新的源代码、文档和使用示例。 另外,你还可以通过在搜索引擎中输入相关关键词,查找qt DES加密算法的第三方库或者其他开发资源。这些第三方的开发资源可能包含更多的定制化功能或者是特定平台的适配。 无论你采用哪种方式进行下载,你需要确保所获取的库文件或者源代码是合法可靠的。在下载之前,建议你查看和参考其他开发者的评价和意见,以确保其质量和可靠性。并且在使用过程中,要遵守相关的法律法规,保护个人和他人的信息安全。 ### 回答2: Qt提供了一种用于数据加密和解密的DES(数据加密标准)算法。DES算法是一种对称加密算法,可以用于保护数据的机密性。 要下载Qt DES加密算法,可以按照以下步骤进行操作: 1. 打开Qt官方网站,网址为https://www.qt.io/。 2. 在官方网站的首页上,点击"下载"按钮,进入下载页面。 3. 在下载页面中,选择您所使用的操作系统,比如Windows、Mac或Linux。 4. 在操作系统选择后,选择您所需要的Qt版本。Qt DES加密算法可以在各个版本的Qt中使用,所以可以根据您的实际需求选择适合的版本。 5. 在版本选择后,点击下载按钮,开始下载Qt。 6. 根据下载速度和网络环境的不同,等待一段时间,直到下载完成。 7. 下载完成后,打开下载的文件,按照提示进行安装。安装过程中可能会需要您选择安装目录和一些其他选项,可以根据自己的需要进行选择。 8. 安装完成后,打开Qt开发环境。 9. 在Qt开发环境中,可以通过Qt的加密模块来使用DES加密算法。可以在Qt文档中搜索相关的API和示例代码,详细了解和使用DES加密算法。 以上就是关于如何下载Qt DES加密算法的简要步骤。希望能够帮助到您。 ### 回答3: QT DES加密算法是一种对称加密算法,用于保护数据的安全性。在QT开发中,我们可以通过以下步骤下载和使用QT DES加密算法。 首先,我们可以从QT官网的下载页面或者通过QT创始人开发的GitHub仓库中找到DES加密算法的相关资源。可以通过搜索引擎查找“QT DES加密算法下载”,然后找到相关的下载链接。 下载完成后,我们可以将下载的DES加密算法相关文件(通常是源代码或者库文件)导入到QT项目中以便使用。具体导入的方法取决于所下载的文件的格式和QT的版本,一般可以通过将文件复制到项目的特定文件夹中,或者进行项目属性设置等方式。 在成功导入文件后,我们需要在QT项目中引入DES加密算法的头文件,并在代码中调用相应函数来完成加密操作。具体的调用方法和函数名取决于所使用的DES加密算法实现库,一般会有相关的文档或者示例代码可以参考。 在代码中,我们可以使用DES加密算法对需要保护的数据进行加密,然后存储或传输加密后的数据。同样,我们也可以使用DES算法对加密后的数据进行解密,以还原原始数据。这样可以确保敏感数据在存储或传输过程中的安全性。 总之,通过下载和使用QT DES加密算法,我们可以增加数据的安全性,保护敏感数据的机密性。在使用过程中,我们需要注意保管好加密算法的相关文件和密钥,以确保算法的安全性和正确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值