当前位置: 首页 > 知识库问答 >
问题:

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

韩志专
2023-03-14
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);

PD:如何解决从Windows Azure Blob存储服务返回的InvalidMd5错误?为.NET解决它:

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

但不知道traslate怎么去Delphi..

共有1个答案

龚鸿羽
2023-03-14

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

使用字节数组全部设置为零的PutBlock的EIPHTTPProtocolExceptionPeer异常

编辑:

Hasher:=TIdHashMessageDigest5.Create;
MD5:=Data.Cloud.CloudAPI.EncodeBytes64(Hasher.HashBytes(Content));
Hasher.Free;
 类似资料:
  • 我将工件A发布到GitHub上的一个自我维护的maven仓库中。该项目有几个可传递的依赖项B、C、D,它们位于不同的存储库中。依赖项B、C、D是在A的gradle生成的pom.xml (uploadArchives)中指定的,而不是到存储库的路径。因此,当A在另一个项目中被指定为依赖项时,传递性依赖项B、C、D不会被下载。 可以告诉gradle在pom中包含B、C、D的maven存储库的url吗。

  • 问题内容: 如何生成5个唯一的随机数? 现在我有类似的东西 结果可能如下所示: 这些数字必须唯一且经过排序,因此看起来像: 任何的想法? 问题答案: 如果范围很小,并且有一个整数表,则可以使用一种幼稚的方法:

  • 问题内容: 除了堆转储(java_pid14941.hprof),Java 6还会生成线程转储吗? 这就是我的一个应用程序发生的事情。 java.lang.OutOfMemoryError:超出了GC开销限制将堆倾倒到java_pid14941.hprof … 我确实在工作目录中找到了ava_pid14941.hprof,但没有找到任何包含线程转储的文件。当我收到此OutOfMemory错误时,我

  • 我是新的弹簧靴,做了我的第一个实体。如何测试存储库?我使用的是本地MySQL数据库。那么第一步就是嘲弄数据库? 而我的存储库只是扩展了Jparepository。 我得到的错误是java.lang.IllegalStateException:未能加载ApplicationContext。还有一点:无法用嵌入式数据库替换DataSource进行测试。如果您想要一个嵌入式数据库,请在类路径上放置一个受

  • 我四处看看,最接近的答案是:如何生成随机的字母数字字符串? 我想根据本CrackStation教程遵循此工作流: 存储密码 > 使用CSPRNG生成长随机盐。 在密码前添加salt,并使用标准加密哈希函数(如SHA256)对其进行哈希运算。 在用户的数据库记录中保存salt和哈希。 验证密码的步骤 > 从数据库中检索用户的盐和哈希。 将salt前置到给定密码,并使用相同的哈希函数对其进行哈希运算。

  • 生成SQLCipher的密钥。 将机密存储在android Keystore中。 从密钥存储区检索机密。 我几乎找到了我需要的所有东西,但是我很难让下面的代码片段一起工作。 我发现了这些很好的例子,但它们是创建公钥/私钥的,与其他许多例子一样,所以有点混乱,但我有以下几个例子。 那么问题是,我如何创建对称密钥并存储在keystore中?由于错误告诉我使用KeyGenParameterSpec,但与