Jojoxx.net logotyp

 

 

Du är här: Start > Artiklar > Kryptering
Användare ikonAnvändare
Besökare just nu: 7
Snabblänkar ikonSnabblänkar
JavaScript-arkivet
Perl
FAQ

Sök på Jojoxx.net


Jämförelse av krypteringsalgoritmer - Med exempel i Perl

Blockchiffer (Symetric Block Sypher) är ett krypteringssätt som kräver data (block) av en fast längd. En del av implementeringarna (ex 3DES) hanterar detta internt medans andra kräver separat hantering för detta. I exemplen endan använder vi Crypt::CBC (Cipher Block Chaining).

AES

Advanced Encryption Standard (AES) är krypteringsalgoritm fastslagen av NIST den 26 november 2001. Standarden bygger på krypteringsalgoritmen Rijndael framtagen av Joan Daemen och Vincent Rijmen. Namnet Rijndael är en sammanslagning av deras namn. AES är ett symmetriskt blockkrypto konstruerad för att kunna använda krypteringsnycklar med längderna 128, 192 och 256 bit där varje variant benämns AES-128, AES-192, respektive AES-256.

Jämförelse

Säkerhetsgrad Krypteringstyp 100.000 iterationer
Symetric Block Sypher 11,82 sek

Exempel

use Crypt::CBC;

my  $key="...a key of variable length...";
my $cipher = Crypt::CBC->new(
	-key    => $key,
	-cipher => "Crypt::OpenSSL::AES"
);
my $plaintext="Hello world!";
my $encrypted = $cipher->encrypt($plaintext);
my $decrypted = $cipher->decrypt($encrypted);

Exempel

use Crypt::CBC;
use Crypt::Cipher::AES;

my $key = "1234567890123456"; # length has to be valid key size for this cipher
my $iv = "1234567890123456";  # 16 bytes
my $cbc = Crypt::CBC->new(
	-cipher => "Cipher::AES",
	-key => $key,
	-iv => $iv,
	-keysize => 16,
	-header => "none"
);

my $plaintext = "Hello world!";
my $encrypted = $cbc->encrypt($plaintext);
my $decrypted = $cbc->decrypt($encrypted);

RSA

RSA var den första allmänt beskrivna algoritmen som använder asymmetrisk kryptering. RSA använder två nycklar, en offentlig nyckel och en privat/hemlig nyckel. Den publika nyckeln används för att kryptera meddelandet. Meddelandet kan sedan bara dekrypteras med hjälp av den hemliga nyckeln.

Jämförelse

Säkerhetsgrad Krypteringstyp 100.000 iterationer
Asymmetric Sypher 82.450 sek == 22,9 timmar

Exempel

use Crypt::RSA;

my $rsa = new Crypt::RSA;
my ($public, $private) = $rsa->keygen (
	Identity  => 'John Dow <john.doe@gmail.com>',
	Size      => 1024,
	Password  => 'Lorem ipsum',
	Verbosity => 1,
) or die $rsa->errstr();
my $plaintext="Hello world!";
my $encrypted = $rsa->encrypt (
	Message => $plaintext,
	Key => $public,
	Armour => 1,
) || die $rsa->errstr();
my $decrypted = $rsa->decrypt (
	Cyphertext => $encrypted,
	Key => $private,
	Armour => 1,
) || die $rsa->errstr();
my $signature = $rsa->sign (
	Message => $encrypted,
	Key => $private
) || die $rsa->errstr();
my $verify = $rsa->verify (
	Message => $encrypted,
	Signature => $signature,
	Key => $public
) || die $rsa->errstr();

RC5

RC5 utvecklades av Ronald Rivest för RSA 1994.

Jämförelse

Säkerhetsgrad Krypteringstyp 100.000 iterationer
Symetric Block Sypher 43,03 sek

Exempel

use Crypt::RC5;

my $key="...a key of variable length...";
my $rounds=5;
my $plaintext = "Hello world!";

my $rc5 = Crypt::RC5->new($key, $rounds);
my $encrypted = $rc5->encrypt($plaintext);
my $decrypted = $rc5->decrypt($encrypted);

3DES / Triple DES

3DES / Tripple DES är en utökning av krypteringsalgoritmen DES (Data Encryption Standard). Den ger förbättrat skydd genom att kryptera samma data tre gånger med DES med olika krypteringsnycklar.

Jämförelse

Säkerhetsgrad Krypteringstyp 100.000 iterationer
Symetric Block Sypher 93,69 sek

Exempel

use Crypt::TripleDES;

my $des = new Crypt::TripleDES;
my $plaintext = "Hello world!";
my $passphrase = "Lorem ipsum";
my $encrypted = $des->encrypt3($plaintext, $passphrase);
my $decrypted = $des->decrypt3($encrypted, $passphrase);

DES

DES (Data Encryption Standard) utvecklades i mitten av 1970-talet av IBM. DES betraktas numera som alldeles för svag för att användas i säkerhetssammanhang.

Jämförelse

Säkerhetsgrad Krypteringstyp 100.000 iterationer
Symetric Block Sypher 0,39 sek

Exempel

use Crypt::CBC;
use Crypt::DES;

my $key="...a key of variable length...";
my $cipher = Crypt::CBC->new(
    -key    => $key,
    -cipher => "Crypt::DES"
);
my $plaintext = "Hello world!";
my $encrypted = $cipher->encrypt($plaintext);
my $decrypted = $cipher->decrypt($encrypted);

Twofish

Twofish är en krypteringsalgoritm utvecklad av Bruce Schneier. Det är en vidareutveckling av Blowfish med målet att kringå dess svagheter.

Jämförelse

Säkerhetsgrad Krypteringstyp 100.000 iterationer
Symetric Block Sypher 25,24 sek

Exempel

use Crypt::CBC;
use Crypt::Twofish;

my $key="...a key of variable length...";
my $cipher = Crypt::CBC->new(
	-key    => $key,
	-cipher => "Crypt::Twofish"
);
my $plaintext="Hello world!";
my $encrypted = $cipher->encrypt($plaintext);
my $decrypted = $cipher->decrypt($encrypted);

Blowfish

Blowfish är en krypteringmetod framtagen av Bruce Schneier som bygger på blockchiffer. Blowfish är därför opatenterat och vem som helst får använda det. Algoritmen används flitigt men har dock svagheterpå grund av en kategori svaga nycklar.

Jämförelse

Säkerhetsgrad Krypteringstyp 100.000 iterationer
Symetric Block Sypher 36,3 sek

Exempel

use Crypt::CBC;
use Crypt::Blowfish;

my $key="...a key of variable length...";
my $cipher = Crypt::CBC->new(
	-key    => $key,
	-cipher => "Crypt::Blowfish"
);
my $plaintext="Hello world!";
my $encrypted = $cipher->encrypt($plaintext);
my $decrypted = $cipher->decrypt($encrypted);

,