我将我们的项目从 Delphi 5 转换为 XE4。我在 Delphi 5 中使用了 LockBox 2。现在我想使用 LockBox 3,但我有一些 RSA 密钥(在 LockBox 2 中生成)。我无法在 LockBox 3 中加载此密钥。我查找了有关 LockBox 2 的一些信息。我发现 LockBox 2 使用 ASN.1 格式保存密钥。这是真的吗?我找不到使用 LockBox 3 的格式。有没有办法将私钥和公钥从 ASN.1 转换为使用 LockBox 3 的格式?
在 Delphi 5 (LockBox 2) 中使用:
PrivateRSAKey: TLbRSAKey;
MemStream: TMemoryStream;
...
PrivateRSAKey.LoadFromStream(MemStream);
...
Result := RSAEncryptString(CryptedText, PrivateRSAKey, false); //works fine
在 XE4 (LockBox 3) 中使用:
Codec: TCodec;
Key: TSymetricKey;
MemStream: TMemoryStream; //contains same data as MemStream in Delphi 5
...
Key := Codec.Asymetric_Engine.CreateFromStream(MemStream, [partPrivate]);
Codec.InitFromKey(Key);
...
Codec.DecryptStream(DecryptStream, CryptStream); //CryptedStream contains same data as CryptedText in Delphi 5
//Now DecryptStream contains different data as Result in Delphi 5