我的应用程序通过Internet发送加密文件,我需要能够执行以下操作:
听起来很简单,但我找不到任何可靠的代码/组件,我找到了这些组件:
DCPcrypt.这就是我现在正在开发中使用但似乎不支持基于密钥对的加密(RSA?)
GnuPgp(GPL)所以我不能在我的商业应用程序上使用它.
TurboPower LockBox 3:支持密钥对加密,但非常神秘(没有文档AFAIK),似乎不支持文件加密.
我的问题是:是否存在安全/可靠的加密组件:
我在使用 lockbox3 和 PHP mcrypt 时遇到了麻烦。我无法将 IV 传递给 PHP。德尔福代码:
var
Codec: TCodec;
CL: TCryptographicLibrary;
PlainStream: TStringStream;
CipherStream: TMemoryStream;
begin
PlainStream := TStringStream.Create(Edit1.Text);
CipherStream := TMemoryStream.Create;
CL := TCryptographicLibrary.Create(nil);
Codec := TCodec.Create(nil);
Codec.CryptoLibrary := CL;
Codec.ChainModeId := uTPLb_Constants.CBC_ProgId;
Codec.StreamCipherId := uTPLb_Constants.BlockCipher_ProgId;
Codec.BlockCipherId := Format(uTPLb_Constants.AES_ProgId, [256]);
Codec.Password := Edit3.Text;
Codec.EncryptStream(PlainStream, CipherStream);
Codec.Burn;
Memo1.Text := Stream_to_Base64(CipherStream);
Memo2.Clear;
Memo2.Lines.Add(Format('Size: %d bytes', [CipherStream.Size]));
Memo2.Lines.Add(Format('Original size: %d bytes', [PlainStream.Size]));
Codec.Free;
CL.Free;
CipherStream.Free;
PlainStream.Free;
Run Code Online (Sandbox Code Playgroud)
和PHP 代码:
$ciphertext = base64_decode("zA/eeF+WFVMDsZ7+iA==");
$iv = substr($ciphertext, 0, …Run Code Online (Sandbox Code Playgroud)