关于HmacSHA1加密,得到的结果和想要的不一致哪里出错了

baimuguijing 2017-08-22 12:50:35
Key为密钥,201701011203022017060112080720170628131328 为起始时间结束时间时间戳连起来
加密是这样加密的吗,得到的结果和demo给的结果不一致 请问是哪里出错了

procedure TForm1.Button1Click(Sender: TObject);
var
B:array of byte;
P:PChar;
bs:TIdBytes;
begin


with TIdHMACSHA1.Create do
try
Key := ToBytes('Q7PIUBkWWT4i9iwSsQbRjE6eQKHFtgKM');
ParamStr := BytesToString(HashValue (ToBytes('201701011203022017060112080720170628131328')));
Memo1.Text:= Base64(ParamStr);
finally
Free;
end;
end;
function TForm1.Base64(Src: string): string;
const
DataSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
var
i, ModLen: integer;
Current: String;
Buf: array[1..3] of Byte;
NewBuf: array[1..4] of Byte;

begin
result := '';
if Src = '' then
exit;
while Length(Src) > 0 do
begin
ModLen := Length(Src) mod 3;
FillChar(Buf, 3, #0);
Current := Copy(Src, 1, 3);
Src := Copy(Src, 4, Length(Src) - 3);
for i := 1 to 3 do
Buf[i] := Ord(Current[i]);
NewBuf[1] := Buf[1] shr 2;
NewBuf[2] := (Buf[1] shl 6 shr 2 or Buf[2] shr 4) and $3F;
NewBuf[3] := (Buf[2] shl 4 shr 2 or Buf[3] shr 6) and $3F;
NewBuf[4] := Buf[3] and $3F;
for i := 1 to 4 do
result := result + DataSet[NewBuf[i] + 1];
end;
if ModLen >= 1 then
result[Length(result)] := '=';
if ModLen = 1 then
result[Length(result) - 1] := '=';
end;



function IdBytesToAnsiString(ParamBytes: TIdBytes): AnsiString;
var
i: Integer;
S: AnsiString;
begin
S := '';
for i := 0 to Length(ParamBytes) - 1 do
begin
S := S + AnsiChar(ParamBytes[i]);
end;
Result := S;
end;
end.
...全文
630 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧