Je suis actuellement en train d'utiliser l'algorithme RC4 pour stocker les paramètres de l'application et quand j'observe la sortie, elle semble facilement décodable. La sortie des chaînes commençant par les mêmes lettres semble être la même.Comment puis-je augmenter l'efficacité du chiffrement pour stocker les paramètres de l'application?
Les chaînes courtes génèrent une sortie courte et les chaînes plus longues produisent une sortie plus longue.
Cependant, je cherche quelque chose qui produira une sortie plus longue pour les chaînes courtes.
Existe-t-il un autre algorithme qui créera une sortie plus «cryptée» même avec des chaînes courtes? Je veux aussi suffixer ou préfixer l'entrée avec quelques données que je peux facilement reconnaître et enlever après le décodage pour créer plus de hasard sur la sortie.
J'ai créé un nouveau code en utilisant Rijndael affiché ci-dessous, mais il souffre toujours du même manque de variation dans la sortie. Je soupçonne qu'il y a quelques paramètres supplémentaires requis pour créer plus de variation dans la sortie, IV, padding de bloc et tout cela.
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.
Comment générez-vous la clé que vous utilisez pour crypter les données? –
Avec un chiffrement de flux en mode xor, vous ne devez utiliser qu'une clé ** une fois **. Il a des propriétés très similaires à un pad unique. Utilisez un chiffrement de bloc dans un mode approprié. Vous ne devez utiliser un chiffrement de flux que si vous savez ce que vous faites, car il est beaucoup plus facile de se tromper que de bloquer les codes. – CodesInChaos