【问题标题】:Delphi AES library (Rijndael) tested with KAT Vectors使用 KAT Vectors 测试的 Delphi AES 库 (Rijndael)
【发布时间】:2010-10-06 12:21:55
【问题描述】:

对于这两个库,

  1. Delphi Encryption Compendium v 5.2
  2. TurboPower Lockbox v 2.07

我使用在 NIST 网站 (http://csrc.nist.gov/groups/STM/cavp/index.html) 获得的“AES 已知答案测试 (KAT) 向量”测试了他们的 Rijndael DCB/CBC 算法

但是,这两个库都没有通过测试。

不确定是不是我的测试有错误,之前有没有人测试过? 我正在寻找能够通过 KAT Vectors 测试的 Delphi Rijndael 库。有人知道这样的图书馆吗?

【问题讨论】:

  • 您的测试很可能不正确 - 我怀疑两个广泛使用的实现会在测试数据上失败但仍与其他实现兼容。
  • FWIW,如果 EldoS 的 Eugene 怀疑您的测试,请再看看您的测试。
  • 您是否正在将测试向量作为 unicode 字符串进行测试,而它们实际上应该是 ansi 字符串? FWIW DEC 组件对我来说工作正常,但我没有专门测试过该算法。
  • 我必须将字节数组输入函数然后它才能工作。喂它 ASCII 字符串虽然没有产生预期的结果..

标签: delphi encryption cryptography aes rijndael


【解决方案1】:

你确定它失败了吗?向量被写成十六进制字符串。您是否将十六进制字符串作为字符串提供,或者您是否首先将它们转换为二进制数据。如果你将它们作为字符串输入,难怪你会得到不同的结果。

注意:我不使用这两个库,而是使用我自己的组件,但它们具有良好的跟踪记录,并且通过这些简单的测试似乎不太可能。

【讨论】:

  • 最初我将 ASCII(从测试向量文件中的十六进制字符串转换而来)字符串输入函数,但它失败了。但是查看代码后,实现了以字节为单位操作数据的功能。所以,我将字节数组输入到函数中,现在它可以工作了。 =)
  • 但是我有一个问题,字节数组也称为二进制数据吗?二进制数据和base2字符串一样吗?
  • 在 DEC 库上测试成功。没有在 LockBox 上重试。
  • :) 好。作为对您问题的回答:如果您想调用它们,字节数组是存储二进制数据或八位字节的好占位符;每个包含 8 位数据(例如一个字节)的值。如果您需要存储 base2 字符串,您可以考虑使用布尔数组,因为布尔实际上只是一个位。您可能对二进制数据的显示方式感到困惑(十六进制(base16)、十进制(base10)或一和零(base2)。希望这能回答您的问题..
【解决方案2】:

我知道另一个库,但不知道是否通过了你的测试:

DCPCrypt http://www.cityinthesky.co.uk/cryptography.html

【讨论】:

    【解决方案3】:

    TurboPower LockBox 3.1.0 已发布。 它包括 DUnit 测试,使用官方 AES 测试向量验证其实现的正确性。

    【讨论】:

      猜你喜欢
      • 2011-02-24
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2011-09-18
      • 2014-10-25
      • 1970-01-01
      相关资源
      最近更新 更多