我正在使用 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/