C++ 使用Poco库实现HMACSHA256加密

flyfish

头文件

#include <Poco/DigestStream.h>
#include <Poco/StreamCopier.h>
#include <Poco/NumberParser.h>
#include <Poco/HMACEngine.h>

实现

class SHA256Engine : public Poco::SHA2Engine {public:enum{BLOCK_SIZE = 64,DIGEST_SIZE = 32};SHA256Engine() :Poco::SHA2Engine(Poco::SHA2Engine::ALGORITHM::SHA_256) {}virtual ~SHA256Engine() {}
};

加密结果输出16进制的字符串

std::string to_hmac_hex(std::string source,std::string secret)
{Poco::HMACEngine<SHA256Engine> hmac(secret);Poco::DigestOutputStream dos(hmac);std::istringstream istr(source);Poco::StreamCopier::copyStream(istr, dos);dos.close();return  Poco::DigestEngine::digestToHex(hmac.digest());}

加密结果输出32个字节

std::vector<unsigned char> to_hmac_bytes(std::string source,std::string secret)
{Poco::HMACEngine<SHA256Engine> hmac(secret);Poco::DigestOutputStream dos(hmac);std::istringstream istr(source);Poco::StreamCopier::copyStream(istr, dos);dos.close();return hmac.digest();}

16进制字符串以每两位为一个字节的方式转换成字符串

void hex_to_string(const std::string& hex, std::string& bytes)
{unsigned int v;if(!bytes.empty())bytes.clear();for(std::string::size_type i = 0; i <  hex.length(); i+=2){if(Poco::NumberParser::tryParseHex(hex.substr(i, 2), v))bytes.push_back(v);}
}

C++ 使用Poco库实现HMACSHA256加密相关推荐

  1. C++ 使用Poco库进行MD5,SHA加密

    C++ 使用Poco库进行MD5,SHA加密 flyfish 头文件 #include <iostream> #include <Poco/MD5Engine.h> #incl ...

  2. C++ POCO库(访问数据库,版本问题,本人配置失败)

    官网下载源码:https://pocoproject.org/ 一.POCO库简介 学习一个框架前,要先明白它的是什么,为什么,怎么用.下面这些文字,是从中文poco官网上转过来的,正如poco c+ ...

  3. python加密库_python基于pyDes库实现des加密的方法

    本文实例讲述了python基于pyDes库实现des加密的方法.分享给大家供大家参考,具体如下: 下载及简介地址:https://twhiteman.netfirms.com/des.html 如需要 ...

  4. 基于 C++ POCO 库封装的异步多线程的 CHttpClient 类

    用惯了 Jetty 的 基于事件的 HttpClient 类,在C++平台上也没找到这样调用方式的类库,只好自己写一个了. 目前版本 1.0,朋友们看了给点建议.(注:Kylindai原创,转载请注明 ...

  5. POCO库中文编程参考指南(11)如何使用Reactor框架?

    1 Reactor 框架概述 POCO 中的 Reactor 框架是基于 Reactor 设计模式进行设计的.其中由 Handler 将某 Socket 产生的事件,发送到指定的对象的方法上,作为回调 ...

  6. Poco库使用:操作Json格式数据

    文章目录 1.解析json字符串数据 2.生成Json格式的数据 3.操作Json数组 4.使用字符串流转换Json格式数据 5.使用键值检索Json结构中的数据 6.使用原始字符串避免字符转义 7. ...

  7. Poco库使用:任务管理器TaskManager

    文章目录 1.定义独立任务 2.使用TaskManager启动多个任务 3.TaskManager使用自定义线程池 4.添加任务观察者 5.使用自定义的任务观察者和任务通知 Poco库的任务管理器Ta ...

  8. C++ 使用Poco库实现日志操作

    C++ 使用Poco库实现日志操作 flyfish 文章目录 C++ 使用Poco库实现日志操作 日志输出到文件 日志输出到控制台 日志同时输出到文件和控制台 示例:将异常输出到日志 日志输出到文件 ...

  9. C++ 使用Poco库操作SQLite数据库

    C++ 使用Poco库操作SQLite数据库 flyfish 文章目录 C++ 使用Poco库操作SQLite数据库 数据库插入记录 数据库插入记录方式2 数据库插入记录方式3 更方便的数据库插入记录 ...

最新文章

  1. 广西区计算机一级考试操作题,全国高校计算机等级考试(广西考区)一级笔试试题卷.doc...
  2. 从Golang调度器的作者视角探究其设计之道!
  3. Sbo通用数据选择功能的实现
  4. mysql数据迁移到sqlserver_一个通用数据库操作组件DBUtil(c#)、支持SqlServer、Oracle、Mysql、postgres、SQLITE...
  5. sp_decrypt
  6. python exchangelib 删除邮件_Python exchangelib在子文件夹中读取邮件 - python
  7. linux下c语言队列,C语言队列的实现
  8. Python 分类算法(1)——逻辑回归logistic regression之代码实现(2)
  9. eclipse 不自动弹出提示(alt+/快捷键失效) 快捷键
  10. Mysql组复制(MGR)——监控
  11. 60行代码爬取知乎神回复
  12. TCL2010年校园招聘笔试,一面———我的第一次应聘
  13. pd.read_excel出现ValueError: Unknown engine: openpyxl解决方案
  14. 手机加速度传感器在Android横竖屏切换中的应用
  15. 在虚拟机上搭建云平台环境(5)yum配置
  16. 电容电流状态观测器的三相LCL型PWM变流器控制
  17. 免费获取歌词API 可下载歌词
  18. 大数据NiFi(十四):数据来源和变量及表达式
  19. win8计算机无法安装打印机驱动,win8怎么安装打印机驱动
  20. 木材材积表快速计算器_原木材积表(运算表)

热门文章

  1. vue中模糊搜索keyup在中文输入法下输入英文无效的解决方法
  2. Baumer工业相机堡盟相机如何使用HDR高动态范围功能( HDR功能的优点和行业典型应用)(C++)(C#)
  3. ArcEngine9.3编辑工具条的实现
  4. git使用心得及第一次使用git上传代码到公司服务器
  5. linux文件归档管理
  6. Android --- SQLite helper 的 onCreate 和 onUpgrade 不调用
  7. Ubuntu下命令行方式对PDF文件进行缩放、合并、拆分
  8. 苹果系统地图定位服务器,iOS 系统地图实现及定位
  9. python饼图显示百分比怎么设置_python使用Matplotlib绘制饼图
  10. 如何取一个好域名?分享几个小技巧