zoukankan      html  css  js  c++  java
  • HMAC

    //密钥散列消息认证码
    QString HMAC(QByteArray baseString, QByteArray key, QCryptographicHash::Algorithm type = QCryptographicHash::Algorithm::Sha256);

    QString HMAC(QByteArray baseString, QByteArray key, QCryptographicHash::Algorithm type)
    {
    	//HMAC-SHA-1 block size
    	int blockSize = 64;
    	//if key is longer than block size (64), reduce key length with SHA-1 compression
    	if (key.length() > blockSize)
    	{
    		key = QCryptographicHash::hash(key, type);
    	}
    	//initialize inner padding with char "6"
    	QByteArray innerPadding(blockSize, char(0x36));
    	//initialize outer padding with char "/"
    	QByteArray outerPadding(blockSize, char(0x5c));
    	//ascii characters 0x36 ("6") and 0x5c ("/") are selected because they have large
    	//Hamming distance (http://en.wikipedia.org/wiki/Hamming_distance)
    	for (int i = 0; i < key.length(); i++) 
    	{
    		//XOR operation between every byte in key and innerpadding, of key length
    		innerPadding[i] = innerPadding[i] ^ key.at(i);
    		//XOR operation between every byte in key and outerpadding, of key length
    		outerPadding[i] = outerPadding[i] ^ key.at(i);
    	}
    	QByteArray total = outerPadding;
    	QByteArray part = innerPadding;
    	part.append(baseString);
    	total.append(QCryptographicHash::hash(part, type));
    	QByteArray hashed = QCryptographicHash::hash(total, type);
    	return QByteArray::fromHex(hashed.toHex()).toHex();
    }
    
  • 相关阅读:
    hive之external table创建
    hive之managed table创建
    Ubuntu下hadoop1.0.4安装过程
    hadoop相关Exception
    ASP.NET 数据访问类 SQLSERVER
    ASP.NET中Cookie编程的基础知识
    SourceForge上的好东西(.Net)
    ASP.NET生成高质量缩略图通用函数(c#代码)
    Sql Server实用操作小技巧集合
    分页SQL Server存储过程
  • 原文地址:https://www.cnblogs.com/cheungxiongwei/p/12442374.html
Copyright © 2011-2022 走看看