DELPHI HMAC256
unit HMAC;
interface
uses System.SysUtils, EncdDecd, IdHMAC, IdSSLOpenSSL, IdHash;
type THMACUtils = class public class function HMAC(aKey, aMessage: RawByteString): TBytes; class function HMAC_HexStr(aKey, aMessage: RawByteString): RawByteString; class function HMAC_Base64(aKey, aMessage: RawByteString): RawByteString; end;
implementation
class function THMACUtils.HMAC(aKey, aMessage: RawByteString): TBytes;var _HMAC: T;begin if not IdSSLOpenSSL.LoadOpenSSLLibrary then Exit; _HMAC:= T.Create; try _HMAC.Key := BytesOf(aKey); Result:= _HMAC.HashValue(BytesOf(aMessage)); finally _HMAC.Free; end;end;
class function THMACUtils.HMAC_HexStr(aKey, aMessage: RawByteString): RawByteString;var I: Byte;begin Result:= '0x'; for I in HMAC(aKey, aMessage) do Result:= Result + IntToHex(I, 2);end;
class function THMACUtils.HMAC_Base64(aKey, aMessage: RawByteString): RawByteString;var _HMAC: TBytes;begin _HMAC:= HMAC(aKey, aMessage); Result:= EncodeBase64(_HMAC, Length(_HMAC));end;
end.program HMACSample;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
HMAC,
IdHMACSHA1,
IdHashMessageDigest;
begin
try
Write('HMAC_SHA1("key", "message")'#9#9'= ');
Writeln(THMACUtils.HMAC_HexStr('key', 'message' ));
Writeln;
Write('HMAC_SHA256("key", "message")'#9#9'= ');
Writeln(THMACUtils.HMAC_HexStr('key', 'message' ));
Writeln;
Write('HMAC_SHA1_Base64("key", "message")'#9'= ');
Writeln(THMACUtils.HMAC_Base64('key', 'message' ));
Writeln;
Write('HMAC_SHA256_Base64("key", "message")'#9'= ');
Writeln(THMACUtils.HMAC_Base64('key', 'message' ));
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
DELPHI HMAC256的更多相关文章
- 学习笔记:7z在delphi的应用
最近做个发邮件的功能,需要将日志文件通过邮件发送回来用于分析,但是日志文件可能会超级大,测算下来一天可能会有800M的大小.所以压缩是不可避免了,delphi中的默认压缩算法整了半天不太好使,就看了看 ...
- delphi连接sql存储过程
针对返回结果为参数的 一. 先建立自己的存储过程 ALTER PROCEDURE [dbo].[REName] ) AS BEGIN select ROW_NUMBER() over(order by ...
- delphi 2010与delphi XE破解版的冲突
在系统中同时安装了Dephi 2010LITE版与Delphi XE lite后,总是会有一个有问题 是因为两者都是读取C:\ProgramData\Embarcadero目录下的license文件, ...
- [Delphi] Delphi版本号对照
VER300 Delphi Seattle / C++Builder Seattle 23 230 (Delphi:Win32/Win64/OSX/iOS32/iOS64/An ...
- delphi tidhttp 超时设置无效的解决方法
现在delphi都发布到xe8了,tidhttp还有缺陷,那就是超时设置在没有网络或者连不上服务器的时候是无效的,不管你设置为多少都要10-20秒.connectTimeout和readTimeout ...
- Delphi Code Editor 之 编辑器选项
Delphi Code Editor 之 编辑器选项 可从Code Editor的右键菜单中选择“Properties”菜单项来查看编辑器选项.也可以从主菜单[Tools | Editor Optio ...
- Delphi使用ADO进行数据库编程
Delphi是一个可视化的编程工具,ADO编程也是这样,所以话不多言,直接通过代码.截图和语言来说明. 我的数据库是Oracle,为了测试,先建一个表:create table practice(un ...
- 怎么使用Delphi获取当前的时间,精确到毫秒
先介绍一个可能比较常用的方法,获取当前时间 var datetime: string; begin datetime:= FormatDateTime('yyyy-mm-dd hh:mm:ss', N ...
- Delphi在创建和使用DLL的时候如果使用到string,请引入ShareMem单元
当使用了长字符串类型的参数.变量时,如string,要引用ShareMem. 虽然Delphi中的string功能很强大,但若是您编写的Dll文件要供其它编程语言调用时,最好使用PChar类型.如果您 ...
随机推荐
- hive的体系架构及安装
1,什么是Hive? Hive是能够用类SQL的方式操作HDFS里面数据一个数据仓库的框架,这个类SQL我们称之为HQL(Hive Query Language) 2,什么是数据仓库? 存放数据的地方 ...
- 重新认识REST
大家对REST的认识? 谈到REST大家的第一印象就是通过http协议的GET,POST,DELETE,PUT方法实现对url资源的CRUD(创建.读取.更新和删除)操作.比如http://www.a ...
- 【BZOJ5005】乒乓游戏 [线段树][并查集]
乒乓游戏 Time Limit: 10 Sec Memory Limit: 256 MB Description Input Output Sample Input 5 1 1 5 1 5 11 2 ...
- 服务器应用程序不可用,由于无法创建应用程序域,因此未能执行请求。错误: 0x80070002 系统找不到指定的文件。
使用360更新网站补丁导致.net2.0环境报错问题现象:服务器应用程序不可用查看日志:出现由于无法创建应用程序域,因此未能执行请求.错误: 0x80070002 系统找不到指定的文件. 搜索定位:罪 ...
- bzoj 1009 DP+矩阵加速
我们用DP来解决这个问题 W[I,J]表示准考证的第I位,和不吉利的数匹配到了第J位的方案数,这个状态的表示也可以看成 当前到第I位了,准考证的后J位是不吉利的数的前J位,的方案数 那么我们最后的an ...
- Python学习笔记 - day1 - 概述及安装
Python概述 Python是一种计算机程序设计语言.我们平时已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合网页编程的JavaScript语言等等. Python ...
- python3 线程_threading模块
'''并发:同一个时间段内运行多个程序的能力 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成 程序:食谱数据集:鸡蛋.牛奶.糖等进程控制块:记下食谱做到 ...
- [Leetcode Week4]H-Index
H-Index题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/h-index/description/ Description Given an arr ...
- UVALive - 5798
Jupiter Atacks! /** 题意:B,P,L,N,分别表示进制,mod,数组的个数,操作数 做法:树状数组 欧几里得 每个数加入到数组Tree的数是 B^(L-i) 用树状数组进行维护前缀 ...
- hdu 5750(数论)
Dertouzos Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...