Changeset 166


Ignore:
Timestamp:
04/06/09 11:23:26 (15 years ago)
Author:
nanardon
Message:
  • use sym key to encrypt data
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sandbox/encryption.pl

    r150 r166  
    22 
    33use Crypt::RSA; # crypt/decrypt 
     4use Crypt::CBC; # sym key 
    45use XML::Simple; # dump data 
    56use MIME::Base64; # to make it ascii 
     
    1011        $rsa->keygen (  
    1112            Identity  => 'Vote ID 12', 
    12             Size      => 768 
     13            Size      => 1024 
    1314            Password  => undef,  
    1415            Verbosity => 0, 
     
    1920print encode_base64($private->serialize); 
    2021print "\n"; 
     22 
     23my $symkey = map{ chr(rand(256)) } (1 .. (256 / 8)); 
     24 
    2125my $xs = XML::Simple->new(ForceArray => 1, RootName => 'ballot'); 
    2226print my $xml = $xs->XMLout({ id => '8daad55a7f94a4fb79bda7ab007953dc', sbal => [ 'coco', 'kikikikikikikikikikikikiki' ], fsbal => [] }); 
    23 print "##########\n"; 
     27print "# ENC SYMKEY\n"; 
    2428 
    25 my $encryptedballot = $rsa->encrypt (  
    26             Message    => $xml, 
     29my $encryptedsymkey = $rsa->encrypt (  
     30            Message    => $symkey, 
    2731            Key        => $public, 
    2832            Armour     => 1, 
     
    3034 
    3135# reading 
    32 print $encryptedballot . "\n"; 
    33  
    34 my $ballot; 
    35 foreach (0..1000) { 
    36 $ballot = $rsa->decrypt( 
    37         Cyphertext => $encryptedballot, 
     36print "# DEC SYMKEY\n"; 
     37$symkey = $rsa->decrypt( 
     38        Cyphertext => $encryptedsymkey, 
    3839            Key        => $private, 
    3940            Armour     => 1, 
    4041        ) || die $rsa->errstr(); 
     42 
     43my $ballot; 
     44my $cipher = new Crypt::CBC($symkey, 'DES'); 
     45print "# ENC BALLOT\n"; 
     46my $encryptedballot = $cipher->encrypt_hex($xml); 
     47print $encryptedballot . "\n"; 
     48 
     49print "# DEC BALLOT\n"; 
     50foreach (0..1000) { 
     51    print "$_\n"; 
     52    $symkey = $rsa->decrypt( 
     53        Cyphertext => $encryptedsymkey, 
     54            Key        => $private, 
     55            Armour     => 1, 
     56        ) || die $rsa->errstr(); 
     57    my $cipher = new Crypt::CBC($symkey, 'DES'); 
     58    $ballot = $cipher->decrypt_hex($encryptedballot); 
    4159} 
    4260 
Note: See TracChangeset for help on using the changeset viewer.