# -*- coding: utf-8 -*-
import sys, os, struct
from Crypto.PublicKey import RSA
from Crypto.Hash import MD5
from Crypto.Util.randpool import RandomPool
 
 
#Lasketaan allekirjoitus
#Luodaan avain
lukulista = RandomPool()
RSAavain = RSA.generate(1024, lukulista.get_bytes)
#Luetaan tiedoston sisältö
DATAFILE = open( sys.argv[1], 'rb' )
data=DATAFILE.read()
DATAFILE.close()
 
#Lasketaan tiedostolle md5 hash
tarkastusluku = MD5.new(data).digest()
#Allekirjoitetaan hash
allekirjoitus=RSAavain.sign(tarkastusluku,"")
print allekirjoitus[0]
 
#Kirjoitetaan julkinen avain tiedostoon
julkinen = RSAavain.publickey()
FILE = open('avain.pem','w')
FILE.write(julkinen.exportKey('PEM'))
FILE.close()
 
 
#Tarkistetaan allekirjoitus
 
#Luetaan julkinen avain tiedostosta
FILE = open('avain.pem','r')
pubkey = RSA.importKey(FILE.read())
FILE.close()
 
#Luetaan tiedoston sisältö
DATAFILE2 = open( sys.argv[1], 'rb' )
data2=DATAFILE2.read()
DATAFILE2.close()
 
#Lasketaan tiedostolle md5 hash
tarkastusluku2 = MD5.new(data2).digest()
 
#Kysytään allekirjoitus käyttäjältä testiä varten
allekirjoitus2 = input("Anna allekirjoitus: ")
 
#Tarkistetaan tulos
if pubkey.verify(tarkastusluku2,(allekirjoitus2,)):
	print "Tarkastus ok"
else:
	print "Tiedostoa muutettu"
Last modified: 2013/07/01 14:42