gpt4 book ai didi

delphi - 如何在delphi中为azure blob存储生成MD5?

转载 作者:行者123 更新时间:2023-12-02 00:58:19 24 4
gpt4 key购买 nike

我尝试为要上传到 azure 的文件设置 MD5 哈希值。我收到此错误:

(400, 'HTTP/1.1 400 The MD5 value specified in the request is a invalid. MD5 value must be 128 bits and base64 encoded.', $7230400)

这就是我为文件执行 md5 的方法:

function MD5(const fileName : string) : string;
var
idmd5 : TIdHashMessageDigest5;
fs : TFileStream;
begin
idmd5 := TIdHashMessageDigest5.Create;
fs := TFileStream.Create(fileName, fmOpenRead OR fmShareDenyWrite) ;
try
result := idmd5.HashStreamAsHex(fs) ;
finally
fs.Free;
idmd5.Free;
end;
end;

......


Headers.Values['Content-MD5'] := MD5(LocalFile);

现在,根据 delphi xe2 上的 azure 规范如何做到这一点?

PD:这个答案How to resolve an InvalidMd5 error returned from the Windows Azure Blob Storage service?解决 .NET 问题:

MD5 md5 = new MD5CryptoServiceProvider();
byte[] blockHash = md5.ComputeHash(buff);
string convertedHash = Convert.ToBase64String(blockHash, 0, 16);

但不知道如何转换为delphi..

最佳答案

您应该注意 XE2 中的 Azure 代码中的错误(此链接还展示了如何创建和格式化 MD5 哈希值):

EIPHTTPProtocolExceptionPeer exception using PutBlock with array of bytes all set to zero

编辑:

相关代码:

Hasher:=TIdHashMessageDigest5.Create;
MD5:=Data.Cloud.CloudAPI.EncodeBytes64(Hasher.HashBytes(Content));
Hasher.Free;

关于delphi - 如何在delphi中为azure blob存储生成MD5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10250689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com