Merhaba ; öncelikle cevabınız için çok teşekkür ederim, vermiş olduğunuz kodları ve Turbo LockBox bileşeni kullanarak deneme amaçlı yapmış olduğum sql server tablomda RESIM adında türü nvarbinary(max) olan bir alanım var.
kayıt işlemini başarılı biçimde yaptım. lakin resmi okuma yaptığımda aldığım mesaj "JPEG error #53" oluyor konu ile ilgili sorun ne olabilir? yardımlarınız için şimdiden teşekkürler.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uTPLb_CryptographicLibrary,
uTPLb_BaseNonVisualComponent, uTPLb_Codec, Vcl.StdCtrls, Vcl.ExtCtrls,
Data.DB, Data.Win.ADODB,JPEG;
type
TForm1 = class(TForm)
Codec1: TCodec;
CryptographicLibrary1: TCryptographicLibrary;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
ADOQuery1ID: TAutoIncField;
ADOQuery1RESIM: TBlobField;
OpenDialog1: TOpenDialog;
Image1: TImage;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
KaynakStream, HedefStream: TMemoryStream;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Codec1.Reset;
Codec1.Password:= '123456789';
KaynakStream:= TMemoryStream.Create;
HedefStream:= TMemoryStream.Create;
KaynakStream.LoadFromFile(OpenDialog1.FileName);
KaynakStream.Seek(0, soFromBeginning);
Codec1.EncryptStream(KaynakStream, HedefStream);
HedefStream.Seek(0, soFromBeginning);
ADOQuery1.SQL.Text:= 'Insert into DENEME (RESIM) Values(: DAT)';
ADOQuery1.Parameters.ParamByName('DAT').LoadFromStream(HedefStream, ftBlob);
ADOQuery1.ExecSQL;
FreeAndNil(KaynakStream);
FreeAndNil(HedefStream);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
RsStream: TStream;
Jpg: TJpegImage;
begin
Codec1.Reset;
Codec1.Password := Inputbox('Resim Şifrele', 'Şifreyi Girin', '1 den 9 a şifeyi girin');
HedefStream:= TMemoryStream.Create;
jpg:=TJpegimage.Create;
ADOQuery1.Open;
RsStream:= ADOQuery1.CreateBlobStream(
TBlobField(ADOQuery1RESIM), bmRead);
RsStream.Seek(0, soFromBeginning);
Codec1.DecryptStream(HedefStream, RsStream);
HedefStream.Seek(0, soFromBeginning);
Jpg.LoadFromStream(HedefStream);
Image1.Picture.Assign(Jpg);
FreeAndNil(HedefStream);
FreeAndNil(jpg);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Codec1.StreamCipherId := 'native.StreamToBlock';
Codec1.BlockCipherId := 'native.AES-256';
Codec1.ChainModeId := 'native.CBC';
end;
end.