【发布时间】:2013-10-30 14:50:30
【问题描述】:
我在互联网上找到了一些 crypt 字符串的来源,我看到在 delphi 7 上,字符串被加密和解密得很好,当我尝试用 delphi xe2、xe3、xe4、xe5 做同样的事情时,加密结束解密失败出现此错误“用于解密的缓冲区大小无效”
我在这里使用 aes.pas 和 eiaes.pas:http://code.google.com/p/jalphi-lib/source/browse/trunk/codemyth/delphi/dontuseit/?r=7
我认为问题在于字符串的编码。
这个问题能解决吗?
【问题讨论】:
-
您必须使用支持 UNICODE 的加密库,例如
Delphi Encryption Compendium (DEC) -
没有字符串这样的类型,它是一些真实类型的快捷方式。在 Delphi 7 中,字符串指向 AnsiString,在 Delphi XE2 中,它是 UnicodeString 的快捷方式(在 Delphi 1 中,它是 ShortString 的快捷方式)。 char 和 PChar(分别为 AnsiChar 或 WideChar)也是如此。通过用选择和固定的真实类型替换 char/PChar/string 小丑(在不同的 Delphi 版本中不同)来修复您的代码和库代码。
-
您需要阅读文档并了解您的编译器。自 Delphi 2009 起,Char 别名为 WideChar,为 16 位类型。
-
该存储库中的好路径,
dontuseit:-)
标签: string delphi encryption aes delphi-xe