首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将TurboPower Lockbox 2转换为LockBox 3

将TurboPower Lockbox 2转换为LockBox 3
EN

Stack Overflow用户
提问于 2011-09-21 00:44:37
回答 1查看 1.9K关注 0票数 2

我目前正在将一个项目(使用加密)从Delphi 6转换到XE。这个项目使用旧的Delphi加密概要,它在XE中不起作用。所以我想我应该从这个组件交换到LockBox。有两个版本的LockBox -2和3。我在Delphi 6中使用LockBox2没有问题。我想我会在XE中使用LockBox3,但我的问题是,当使用ExFile演示程序(来自LockBox2)时,我无法获得相同的结果。

在这个演示中,我选择了Blowfish算法,将密码设置为'testkey‘,没有引号,程序将对文件进行加密。

在Delphi中,我浏览了表单

代码语言:javascript
复制
Codec1: TCodec;
CryptographicLibrary1: TCryptographicLibrary;

并将Codec1链接到CryptographicLibrary1,然后单击按钮执行以下代码(在LockBox3站点上找到用于解密字符串的类似代码).

代码语言:javascript
复制
  codec1.StreamCipherId := BlockCipher_ProgId;
  codec1.BlockCipherId := Blowfish_ProgId;
  codec1.ChainModeId := ECB_ProgId;
  codec1.Password := 'testkey';
  codec1.encryptFile('d:\tools\mingw\bin\md5.exe', 
   'd:\tools\mingw\bin\md5_xe_2.exe');

但是最终的结果是输出文件的大小与LockBox2 ExFile演示不同。

所以我的问题是..。

在上面的XE代码中,我做了什么错事,使我给出了一个与LockBox2?

  • Should不同的ExFile演示结果--我只是在XE中使用LockBox2 ?与XE有关的

  • ,是否有人负责(XE)代码LockBox2?

如能提供任何协助,将不胜感激。

致以敬意,

EN

回答 1

Stack Overflow用户

发布于 2011-09-24 06:35:08

  1. 的用户"mj2008“击中了钉子的头。Delphi 6使用ansistring作为字符串。Delphi XE使用UTF-16 XE。在屏幕上呈现的或在键盘上输入的相同密码是完全不同的数据,因此,结果自然是不同的。

关于预期的文件大小。Blowfish是一个8字节(64位)块模式密码。尽管其他链接模式不同,但欧洲央行使用块填充来填充最后一个模块。TPLB3为欧洲央行使用了RFC1321填充方案,也就是说,它用一个80美元的字节加上足够的零以获得整个块大小。TPLB2使用了一种不同的方案:它用零来填充,直到最后一个字节,然后将其设置为pack块中预先添加的字节数。

因此,如果您的明文文件大小为X字节,如果您使用Blowfish/ECB加密,那么密文大小Y应该是:

Y=X+8- (X mod 8)

(有关更多细节,请参阅论坛线程:http://lockbox.seanbdurkin.id.au/tiki-view_forum_thread.php?comments_parentId=154&topics_offset=2&topics_sort_mode=lastPost_desc&forumId=2)

*2.请注意,我对您的程序的目的和上下文一无所知,而且特定的情况可能会影响到这个问题,我认为使用TurboPower LockBox 3处理您的Delphi程序。如果您需要与旧的LB2密文进行互操作,那么编写并执行一次关闭,这是一个将LB2密文转换为LB3密文的转换程序。然后丢弃LB2。

*3.我继续维护LB2,但我只会修复LB2中报告的主要缺陷,并且不会修复LB2中的RSA组件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7493408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档