1

我在 Delphi XE2 中编写自己的组件,但我主要使用 C++ Builder。这就是为什么我需要一些关于 Delphi DCrypt 库的帮助。

我的新组件需要有一个方法(函数)来计算字符串的 sha256 哈希值。我知道 DCrypt 库并使用了一段时间,但这次我需要隔离 SHA256 哈希算法并将其添加到我的新组件中。

DCrypt 已将 SHA256 存储在 DCPsha256.pas 中,但由于我对 Delphi 不太熟练,我不知道该怎么做。我不需要安装 TDCP_sha256,我只需要能够在我的新组件中计算 SHA256。

想法?谢谢。

4

2 回答 2

4
  1. 一:不做。最好将 DCrypt 库与您的组件一起分发,并允许用户将其更新到更新的版本。如果 sha256 会出现问题,或者与较新的 Delphi 版本不兼容 - 你会怎么做?如果你使用 DCrypt,那么你只需下载它的新版本。如果您将其隔离 - 那么您必须自己修复它。您在 Delphi 和加密数学方面是否有足够的技能,以便在将来始终对 sha256 代码和新的 Delphi 版本进行所有修复?

  2. 但是,如果您坚持-然后并排启动到Delphi。在一个打开的 DCrypt 源中,在另一个打开的新空单元中。将 sha256 生成程序从 DCrypt 复制到空单元并尝试编译。Delphi 会告诉你未知的标识符。查看 Dcrypt Delphi 并找到它们的声明。如果它们也来自 DCpypt - 然后将它们再次复制到新单元中。如果它们来自 RTL/VCL - 将单元添加到新单元的使用中。并尝试再次编译。重复此操作,直到所有标识符都由USES解析或从DCrypt复制到您的文件中。在它编译之后 - 获取一些文件并通过 DCrypt 和你的新库计算哈希 - 如果它们不同,那意味着你已经破坏了一些东西并且必须找到并修复它(你有足够的加密数学经验,不是吗)。

我为 Spring4D sha 代码进行了 Win64 asm 优化,所有代码都被单元测试覆盖,所以无论我的优化是否破坏了东西,我总是新的。如果没有这些全面的测试政策,我将无法做到。

我强烈建议你坚持使用 DCrypt 或 Lockbox3 或 Spring4D 或任何其他强大的生活库,不要孤立自己。与社区保持联系,您可以为自己使用他们的劳动力。隔离 - 每次出现新错误或不兼容时,您都必须重新执行此操作。

您无法从库中提取代码 - 为什么您认为您可以将该代码升级到 XE4/5/6... 并证明它没有损坏?

于 2012-09-28T13:49:42.350 回答
4

手动创建对象。使用现有单位,不要修改 DCPCrypt。

如何创建对象:

var
  x:TDCP_sha256;

begin
  x := TDCP_sha256.Create(nil);
  try 
     // do stuff, create hash, whatever.
  finally
    x.Free;
  end;
end;

You do not need to install any packages in order to provide access to the classes that you want to use, unless you wanted to drop them onto a form or data module. If you write code like the above code, you don't need to modify anything.

于 2012-09-28T18:16:03.450 回答