Qt 实现 HMAC_SHA1 哈希算法
Qt哈希算法 hmacSha1
//Qt哈希算法 hmacSha1
#include <QCryptographicHash>/*!* \brief Qt hmacSha1 哈希算法* \param key 加密需要的key* \param baseString 需要加密的字符串* \return QByteArray 加密后的数据内存中的ASCII码*/
QByteArray hmacSha1(QByteArray key, QByteArray baseString){int blockSize = 64; // HMAC-SHA-1 block size, defined in SHA-1 standardif (key.length() > blockSize) { // if key is longer than block size (64), reduce key length with SHA-1 compressionkey = QCryptographicHash::hash(key, QCryptographicHash::Sha1);}QByteArray innerPadding(blockSize, char(0x36)); // initialize inner padding with char "6"QByteArray outerPadding(blockSize, char(0x5c)); // initialize outer padding with char "/"// 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++) {innerPadding[i] = innerPadding[i] ^ key.at(i); // XOR operation between every byte in key and innerpadding, of key lengthouterPadding[i] = outerPadding[i] ^ key.at(i); // XOR operation between every byte in key and outerpadding, of key length}// result = hash ( outerPadding CONCAT hash ( innerPadding CONCAT baseString ) ).toBase64QByteArray total = outerPadding;QByteArray part = innerPadding;part.append(baseString);total.append(QCryptographicHash::hash(part, QCryptographicHash::Sha1));QByteArray hashed = QCryptographicHash::hash(total, QCryptographicHash::Sha1);/// 注意——>把字符串hashed转换为Hex,内存中的ASCII码arrayFromHexStringQByteArray arrayFromHexString = QByteArray::fromHex(hashed.toHex());qDebug()<<"hmacSha1内存中的ASCII码 arrayFromHexString \n"<<arrayFromHexString.toHex();return arrayFromHexString;
}
Qt 实现 HMAC_SHA1 哈希算法相关推荐
- ELFhash - 优秀的字符串哈希算法
原 ELFhash - 优秀的字符串哈希算法 分类:算法杂论算法精讲数据结构 (1424) (2) 1.字符串哈希: 我们先从字符串哈希说起 在很多的情况下,我们有可能会获得大量的字符串,每个字符串 ...
- 哈希分布与一致性哈希算法简介
前言 在我们的日常web应用开发当中memcached可以算作是当今的标准开发配置了.相信memcache的基本原理大家也都了解过了,memcache虽然是分布式的应用服务,但分布的原则是由clien ...
- 一致性哈希算法以及其PHP实现
在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin).哈希算法(HASH).最少连接算法(Least Connection).响应速度算法(Respons ...
- 一致性hash算法虚拟节点_一致性哈希算法——虚拟节点
一致性哈希算法--虚拟节点 一致性哈希算法是分布式系统中常用的算法.比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是 ...
- 感知哈希算法——找出相似的图片
参考Neal Krawetz博士的这篇文章, 实现这种功能的关键技术叫做"感知哈希算法"(Perceptual Hash Algorithm), 意思是为图片生成一个指纹(字符串格 ...
- 用拉链法实现哈希算法的运算
package lirui.find;import java.util.LinkedList;/*** Created by lirui on 14-8-13.* 用拉链法实现哈希算法的运算*/ pu ...
- 五分钟带你了解哈希算法
导读: 当新人在学区块链技术的时候,都会听到哈希和哈希算法,这似乎是无处不在的安全性保证.例如比特币或者以太坊这种运行去中心化网络和共识的机器,都会有上万个节点通过P2P连接,并且需要"无需 ...
- 一次失败的面试,复习一次一致性哈希算法
来自公众号:孤独烟 本文故事绝对真实,如有雷同,绝对不是巧合! 于是呢,烟哥提前十分钟在公司里头找了一个厕所的坑位,然后进去随手一锁门-.(以下省略10000字)- 唉- 我竟然又带薪上厕所了,而且上 ...
- 一致性哈希算法的理解
关于一致性哈希算法,网上有很多博文都有讲解.推荐2个. http://blog.codinglabs.org/articles/consistent-hashing.html http://blog. ...
最新文章
- 2022-2028年中国氨基酸表面活性剂行业研究及发展前瞻报告
- 在CentOS 6.9 x86_64的nginx 1.12.2上开启ngx_http_geo_module模块实录
- OpenCV java 图片处理,蒙太奇图片(13)
- androidstudio 日历视图怎么显示农历_记事日历-记事与时间管理工具
- VC++读取AVi视频文件
- 004_Maven构建生命周期
- adadelta算法_神经网络中常用的优化算法
- 简单的自动更新程序实现
- 开发环境eclipse for Mac 下的常用快捷键汇总(基本参照Win系,将Ctrl换为Command)
- 沈逸老师PHP魔鬼特训笔记(3)
- 使用Mono Runtime Bundle制作安装包让C#桌面应用程序脱离net framework
- 【网络架构理论系列】简述分布式的定义、分类、技术发展历史进程
- 计算机换算单位 gb,gb和mb的换算-KB,MB,GB之间的换算关系
- 如何使用jquery插件
- 人力资源管理专业知识与实务(初级)【10】
- 李开复写给中国大学生的七封信【7/7】
- 苹果生产日期对照表2020_苹果又开发布会,确定于11月11日举办特别活动 | AirPods Pro 免费换新计划...
- [javaws]jnlp介绍及使用
- 微信小程序后台持续定位功能使用
- “特斯拉杀手们”真正的敌人来了