您的位置:首页 > 编程语言 > Qt开发

Qt之加密算法[转]

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

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/

出处: http://blog.sina.com.cn/s/blog_a6fb6cc90101ge8c.html

QByteArray GetMd5( const uchar *pData, int iLength )
{
QCryptographicHash md( QCryptographicHash::Md5 );  //密码散列: 将数据(如中英文字母、特殊字符)通过复杂的算法转换为另一种固定长度的值
md.addData( (const char *)pData, iLength );
return md.result();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  QCryptographicHash MD5