Алгоритм шифрования [Решено]

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Алгоритм шифрования [Решено]

Сообщение Vadim » 28.11.2012 13:34:29

vada
Но 100%-ной уверенности всё же нет? :)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Алгоритм шифрования [Решено]

Сообщение poiuyt555 » 29.11.2012 08:35:06

разные способы попробовал и текстовый файл, и просто через filestream.
Видимо проблема: не удается корректно записать строку и прочитать ее из файла.

Добавлено спустя 12 минут 20 секунд:
Вроде заработало!
Теперь через текстовый файл работает.
Спасибо.
poiuyt555
новенький
 
Сообщения: 51
Зарегистрирован: 12.09.2011 07:45:51

Re: Алгоритм шифрования [Решено]

Сообщение debi12345 » 29.11.2012 09:22:56

Народ, чего OPENSSL (и FPC-интрефейс к ней) так не любим ? Она все это умеет :)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Алгоритм шифрования [Решено]

Сообщение Mr.Smart » 29.11.2012 09:46:44

debi12345 тяжеловат для тривиальных задач.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Алгоритм шифрования [Решено]

Сообщение debi12345 » 29.11.2012 11:55:10

Может быть (имеются вивиду лишние ДЛЛ-ки?), но освоившись с ней (плюс Мартин написал отличные фронтэнды) - теперь наслаждаюсь :) И симметричное шифрование, и несимметричное, и хэширование, и контрольные суммы...
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Алгоритм шифрования [Решено]

Сообщение resident » 22.12.2013 17:41:44

debi12345 писал(а):Может быть (имеются вивиду лишние ДЛЛ-ки?), но освоившись с ней (плюс Мартин написал отличные фронтэнды) - теперь наслаждаюсь :) И симметричное шифрование, и несимметричное, и хэширование, и контрольные суммы...

Кто такой Мартин? :)
А где про это почитать не подскажите? Чего-то не могу ничего толком найти. В synapse есть ssl_openssl*.pas файлы. Но там нет Мартина.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Алгоритм шифрования [Решено]

Сообщение Лекс Айрин » 22.12.2013 19:41:46

resident, автор mse.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Алгоритм шифрования [Решено]

Сообщение debi12345 » 22.12.2013 21:31:40

{mse-dir}\lib\common\crypto\msessl.pas
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Алгоритм шифрования [Решено]

Сообщение resident » 23.12.2013 15:08:24

Спасиб :)
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Алгоритм шифрования [Решено]

Сообщение debi12345 » 23.12.2013 19:56:03

Вот простенький модуль который я использую, на базе тех компонентов :
Код: Выделить всё
unit cryptoutils;
{$ifdef FPC}{$mode objfpc}{$h+}{$endif}
interface

uses
  msestrings
,msetypes 
,msessl
,msecryptohandler
;

function symbase64cypherfrom(const avalue: ansistring; const apassw: msestring; const cypher_name: msestring = 'aes-256-cfb'): msestring;
function symbase64cypherto(const avalue: msestring; const apassw: msestring; const cypher_name: msestring = 'aes-256-cfb'): ansistring;
function getsha256(const adigest: tdigesthandler; const afile: filenamety): ansistring;
function getsha256(const afile: filenamety): ansistring;
function getsha256str(const avalue: msestring): ansistring;

implementation

uses
  msestream,
  mseformatstr
;

function symbase64cypherto(const avalue: msestring; const apassw: msestring; const cypher_name: msestring = 'aes-256-cfb'): ansistring;
begin
with tbase64handler.create(nil) do begin
try
  chain:= tsymciphercryptohandler.create(nil);
  with tsymciphercryptohandler(chain) do begin
    ciphername:= cypher_name;
    keyphrase:= stringtoutf8(apassw);
  end;
  result:= printableascii(encrypt(stringtoutf8(avalue)));
finally 
  chain.free;
  free;
end;
end;
end;

//---------------------------------------------

function symbase64cypherfrom(const avalue: ansistring; const apassw: msestring; const cypher_name: msestring = 'aes-256-cfb'): msestring;
begin
with tbase64handler.create(nil) do begin
try
  chain:= tsymciphercryptohandler.create(nil);
  with tsymciphercryptohandler(chain) do begin
    ciphername:= cypher_name;
    keyphrase:= stringtoutf8(apassw);
  end;
  result:= utf8tostring(decrypt(avalue));
finally 
  chain.free;
  free;
end;
end;
end;

//---------------------------------------------

function getsha256(const adigest: tdigesthandler; const afile: filenamety): ansistring;
var s: ansistring; fstrm: tmsefilestream;
begin
result:= '';
fstrm:= nil;
fstrm:= tmsefilestream.create(afile);
try
  adigest.digestname:= 'sha256';
  fstrm.cryptohandler:= adigest;
  fstrm.readdatastring; // вычисляем его хэш
  s:= adigest.digest(fstrm);
finally
  if fstrm <> nil then begin
    fstrm.free;
  end;
end;
result:= lowercase(bytestrtostr(s));
end;

function getsha256(const afile: filenamety): ansistring;
var
  s: ansistring;
  adigest: tdigesthandler;
begin
result:= '';
adigest:= tdigesthandler.create(nil);
try
  result:= getsha256(adigest,afile);
finally
  adigest.free;
end;
end;

//-----------------------------------

function getsha256str(const avalue: msestring): ansistring;
var
  s: ansistring;
  fstrm: tmsefilestream;
  dgst: tdigesthandler;
begin
result:= '';
fstrm:= tmsefilestream.create; {memory file}
dgst:= tdigesthandler.create(nil);
try
  dgst.digestname:= 'sha256';
  fstrm.cryptohandler:= dgst;
  fstrm.readdatastring; // вычисляем его хэш
  s:= dgst.digest(fstrm);
finally
  fstrm.free;
  dgst.free;
end;
result:= lowercase(bytestrtostr(s));
end;

//-----------------------------------



end.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Алгоритм шифрования [Решено]

Сообщение resident » 13.01.2014 20:09:19

Здрасть :)
При RSA шифровании каждый раз получается различная шифрованная строка. Это нормально?

з.ы. Вот нашел похожую тему:
http://www.gotdotnet.ru/forums/2/92922/
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Алгоритм шифрования [Решено]

Сообщение debi12345 » 13.01.2014 21:22:32

При RSA шифровании каждый раз получается различная шифрованная строка. Это нормально?

Если используется случайная затравка ("salt") - то да.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Алгоритм шифрования [Решено]

Сообщение resident » 13.01.2014 23:13:47

Спасиб :)
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 233

Рейтинг@Mail.ru