Qt之加密算法[转]

来源:互联网 发布:mac终端怎么退出vim 编辑:程序博客网 时间:2024/06/18 05:39
在写这篇文章之前,我曾反复思量关于加密的叫法是否准确,更为严格来说,应该是密码散列-将数据(如中英文字母、特殊字符)通过复杂的算法转换为另一种固定长度的值。

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 生成一个MD4散列 QCryptographicHash::Md5  生成一个MD5散列  QCryptographicHash::Sha1  生成一个SHA-1散列   QCryptographicHash::Sha224 生成一个SHA-224散列(SHA-2)。在Qt5.0介绍 QCryptographicHash::Sha256 生成一个SHA-256散列(SHA-2)。在Qt5.0介绍 QCryptographicHash::Sha384 生成一个SHA-384散列(SHA-2)。在Qt5.0介绍  QCryptographicHash::Sha512  生成一个SHA-512散列(SHA-2)。在Qt5.0介绍 QCryptographicHash::Sha3_224 生成一个SHA3-224散列。在Qt5.1介绍  QCryptographicHash::Sha3_256 生成一个SHA3-256散列。在Qt5.1介绍  QCryptographicHash::Sha3_384 生成一个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();}



0 0
原创粉丝点击