加密组件

8

我需要一个加密库(可以是VCL或其他类型),能够与Delphi XE2unicode字符串一起使用,
64位和32位编译都可用。
我需要它来存储数据到数据库中。

3个回答

9

谢谢。我已经检查过了...这个不适用于DelphiXE2。我还需要适用于64位编译的版本! - Panos Kalatzantonakis
2
它是开源的,参与其中。 - PA.

5

我在Embarcadero论坛中发现了this,这是一个由用户更新的DCPCrypt版本。
如果有人遇到同样的问题,这里是代码

我还发现了这个TurboPower LockBox),支持Delphi Xe2。


1

所有标准加密算法都是在字节或位上操作的。只要支持 Delphi XE2 Win32 和 Win64 的任何实现,你就应该能够使用它们,至少在你自己负责解码和编码 Unicode 字符串的情况下。RTL SysUtils 单元中有一个 TEncoding 类,你应该使用它将你的 Unicode 字符串转换为 TBytes 并从 TBytes 转换回 Unicode 字符串,使用你自己选择的编码。

很多 Delphi 实现加密算法的原因是接受字符串参数,主要是历史原因,并不意味着这些实现必然知道字符或字符串是什么。许多 Delphi 版本之前,在 VCL/RTL 中添加 TBytes 类型之前,声明此类方法有五种方式,而使用字符串通常是最方便的一种。

  1. 未类型化的const和var参数。这是Move过程和TStream所使用的。缺点是最常见的用法错误是尝试传递引用类型变量,例如字符串或动态数组,而不先取消引用。
  2. 未类型化的指针。类似的问题。来自Basic或Java背景的开发人员可能不熟悉指针和引用类型的概念。
  3. 开放数组参数。只能通过元素访问,因此与实现连续内存块操作的加密算法混合使用时会出现问题。
  4. 库特定的TBytes = Byte数组类型。Delphi语言是强类型的,因此仅当应用程序开发人员最初使用相同的库特定类型时才起作用,否则将迅速变得不可行,例如如果开发人员首先从NexusDB数据库中获取TnxBytes,将其转换为StreamSec tBytes进行加密,然后转换为Indy TIdBytes以通过TIdTCPConnection传递它。
  5. (Ansi)字符串。面对现实吧。由于上述原因(以及一些其他原因,如语言和RTL支持),大多数开发人员将字符串用作可变大小的内存缓冲区。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接