delphi - 我想用 AES 加密 TidBytes

标签 delphi aes

我正在使用 Tforge 和 Delphi,并且我正在尝试使用 AES 加密 TidBytes

var Key,MyBytearray: ByteArray;
MyTidBytes:TidBytes;

Key:= ByteArray.FromText('1234567890123456');

EncryptedText:= TCipher.AES.ExpandKey(Key, CTR_ENCRYPT or PADDING_NONE).EncryptByteArray(MyBytearray);

此代码与 ByteArray 配合使用效果良好,但我想将其与 idBytes 配合使用,这可能吗?

如何将 ByteArray 转换为 TidBytes

最佳答案

ByteArray 被声明为一个 record,它在内部保存一个包装字节数据的 IBytes 接口(interface)对象。 TIdBytes 被声明为一个简单的动态数组。因此,您不能直接在它们之间进行类型转换。您必须来回复制原始字节。

您可以手动执行此操作,例如:

MyBytearray := ...;
MyTidBytes := RawToBytes(MyBytearray.Raw^, MyBytearray.Len);
// RawToBytes() is an Indy function in the IdGlobal unit...

...

MyTidBytes := ...;
MyBytearray := ByteArray.FromBytes(MyTidBytes);
// FromBytes() accepts any type of raw byte array as input, including dynamic arrays ...

或者,ByteArray 具有用于 TBytes隐式转换运算符,并且 TIdBytes 与类型转换兼容TBytes 因为它们都是动态数组,例如:

MyBytearray := ...;
TBytes(MyTidBytes) := MyBytearray;

...

MyTidBytes := ...;
MyBytearray := TBytes(MyTidBytes);

关于delphi - 我想用 AES 加密 TidBytes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57392572/

相关文章:

delphi - 编译器和链接器调试信息有什么区别?

java - 使用 AES-CBC-PKCS5Padding 解密数据时出现填充错误

c# - 如何提高 Bouncy CaSTLe API 的加密速度?

仅使用 RSA 和 AES 构建 openssl

使用 Crypto Swift 的 iOS 13 AES 解密不起作用

delphi - Delphi 中的 EProgrammerNotFound 异常?

delphi - 移动位图像素

delphi - Delphi IDE是否具有项目/grouproject的文件计数和行计数功能?

windows - Delphi:将应用程序最小化到系统托盘

java - AES 使用 Base64 加密