Как повысить эффективность шифрования для хранения настроек приложения? - PullRequest
0 голосов
/ 05 декабря 2010

В настоящее время я использую алгоритм RC4 для хранения настроек приложения, и когда я наблюдаю вывод, он выглядит легко декодируемым.Вывод строк, начинающихся с одинаковых букв, выглядит одинаково.

Короткие строки приводят к короткому выводу, а более длинные строки дают более длинный вывод.

Однако я ищу что-то, что будет производитьболее длинный вывод для коротких строк.

Есть ли другой алгоритм, который создаст более «скремблированный» вывод даже с короткими строками?

Я также хочу добавить суффикс или префикс к некоторым данным, которые я могулегко распознать и удалить после декодирования, чтобы создать больше случайности на выходе.

Я создал новый код, используя Rijndael, показанный ниже, но он все еще страдает от того же отсутствия изменений в выходных данных.Я подозреваю, что есть некоторые дополнительные параметры, необходимые для создания большего изменения в выходных данных, IV, дополнении блоков и тому подобном.

unit testform;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, DCPrijndael, DCPsha1;

type

  { TForm1 }

  TForm1 = class(TForm)
    edtKeyString: TEdit;
    edtInputText: TEdit;
    edtEncryptedText: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure edtInputTextChange(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 

var
  Form1: TForm1; 

implementation

{ TForm1 }

procedure TForm1.edtInputTextChange(Sender: TObject);
var
  Cipher: TDCP_rijndael;
begin
  Cipher:= TDCP_rijndael.Create(Self);
  Cipher.InitStr(edtKeyString.Text,TDCP_sha1);
  edtEncryptedText.Text := Cipher.EncryptString(edtInputText.Text);
  Cipher.Burn;
  Cipher.Free;
end;

initialization
  {$I testform.lrs}

end.

1 Ответ

1 голос
/ 05 декабря 2010

RC4 - потоковый шифр.Возможно, вы захотите посмотреть на блочный шифр, как AES.Не забудьте также использовать отступы, например PKCS7.

РЕДАКТИРОВАТЬ: не добавлять данные суффикса / префикса, чтобы «создать больше случайности».Алгоритм шифрования сделает это за вас (если это не сломанный алгоритм, в этом случае выберите другой).В лучшем случае это бессмысленно;в худшем случае это добавление «шпаргалки», которая облегчит кому-то атаку на ваше шифрование.

...