Example #1
0
 def encrypt(self, in_dat_private, in_dat_public, in_dat, out_dat):
     key = self.compose_keys(in_dat_private, in_dat_public)
     self.key = key
     public_key = key.publickey()
     f = open(in_dat)
     data = f.read()
     f.close()
     enc_data =  public_key.encrypt(data, 32)
     #print "AAAAAAAA", pickle.dumps(enc_data[0])
     f = open(out_dat,'w')
     f.write('---BEGIN OS2 CRYPTO DATA---\n')
     KSI.put_data_s('Description','Crypted file',None,f)
     KSI.put_data_s('Method','RSA',None,f)
     KSI.put_data('Data',base64.b64encode(enc_data[0]),f)
     self.enc_data = enc_data
     f.write('---END OS2 CRYPTO DATA---\n')
     f.close()
     print "[AP] kriptiranje zavrsilo!"
Example #2
0
 def stvori_omotnicu(self, in_dat, privatni_dat, javni_dat, out_dat, aes_key_len):
     f = open(in_dat)
     data = f.read()
     f.close()
     kl = aes_key_len // 8
     #print kl
     tajni_kljuc = ''
     for i in range(0, kl):
         tajni_kljuc = tajni_kljuc + '1'
     #tajni_kljuc = '1111111111111111'
     obj = AES.new(tajni_kljuc,AES.MODE_CFB,"This is an IV456")
     sifrirana = obj.encrypt(data)
     sifr = base64.b64encode(sifrirana)
     key, key_len = self.compose_keys(privatni_dat, javni_dat)
     self.key = key
     self.tajni_kljuc = tajni_kljuc
     public_key = key.publickey()
     sifrirani_tajni = public_key.encrypt(tajni_kljuc, 32)
     #print sifrirani_tajni
     sifr_tajni = binascii.hexlify(sifrirani_tajni[0])
     #print sifr_tajni
     f = open(out_dat, 'w')
     f.write('---BEGIN OS2 CRYPTO DATA---\n')
     KSI.put_data_s('File name',out_dat,None,f)
     KSI.put_data_s('Method','AES\n    RSA',None,f)
     KSI.put_data_s('Key length',key_len+'\n    '+hex(len(tajni_kljuc)*8),None,f)
     KSI.put_data('Envelope data', sifr, f)
     KSI.put_data('Envelope crypt key',sifr_tajni,f)
     f.write('---END OS2 CRYPTO DATA---\n')
     f.close()
     self.poruka = [sifrirana,sifrirani_tajni]
     print "[AP] omotnica generirana!"
Example #3
0
 def encrypt(self, in_dat, out_dat, key_dat):
     f = open(key_dat, 'r')
     data = KSI.load(f)
     f.close()
     kljuc = data["Secret key"][0]
     print "[AP] tajni kljuc: ",kljuc
     obj = AES.new(kljuc, AES.MODE_CFB,"This is an IV456")
     f = open(in_dat, "r")
     poruka = f.read()
     sifrirana = obj.encrypt(poruka)
     sifr = base64.b64encode(sifrirana)
     #print sifr
     f = open(out_dat, 'w')
     f.write('---BEGIN OS2 CRYPTO DATA---\n')
     KSI.put_data_s('Description','Crypted file',None,f)
     KSI.put_data_s('Method','AES',None,f)
     KSI.put_data('Data',sifr,f)
     self.enc_data = sifrirana
     self.kljuc = kljuc
     f.write('---END OS2 CRYPTO DATA---\n')
     f.close()
     print "[AP] podaci kriptirani!"
Example #4
0
 def generate_key(self, key_dat, key_size):
     key = ''
     key_len = key_size // 8
     #print key_len
     for i in range(0, key_len):
         num = random.randint(0,15)
         key = key + hex(num)[2:]
     #print len(key)
     f = open(key_dat, 'w')
     f.write('---BEGIN OS2 CRYPTO DATA---\n')
     KSI.put_data_s('Method','AES',None,f)
     KSI.put_data_s('Key length',hex(key_size),None,f)
     KSI.put_data_s('Secret key',key,None,f)
     f.write('---END OS2 CRYPTO DATA---\n')
     print "[AP] kljuc generiran!"
     f.close()
Example #5
0
 def generate_hash(self, in_dat, out_dat):
     f = open(in_dat)
     sadrzaj = f.read()
     f.close()
     m = SHA.new()
     m.update(sadrzaj)
     sazetak = m.hexdigest()
     f = open(out_dat, "w")
     f.write('---BEGIN OS2 CRYPTO DATA---\n')
     KSI.put_data_s('Description','Hash',None,f)
     KSI.put_data_s('Method','SHA-1',None,f)
     KSI.put_data_s('Hash data',sazetak, None, f)
     f.write('---END OS2 CRYPTO DATA---\n')
     f.close()
     print "[AP] sazetak generiran!"
     return sazetak
Example #6
0
 def generiraj_digitalni_potpis(self, ulaz_dat, privatni_dat, javni_dat, potpis_dat):
     f = open(ulaz_dat)
     data = f.read()
     f.close()
     m = SHA.new()
     m.update(data)
     sazetak = m.hexdigest()
     #print sazetak
     key, key_len = self.compose_keys(privatni_dat, javni_dat)
     potpis = key.sign(sazetak,'')
     potpis_txt = hex(potpis[0])[2:-1]
     #print "ja sam potpis", len(potpis_txt)
     f = open(potpis_dat, 'w')
     f.write('---BEGIN OS2 CRYPTO DATA---\n')
     KSI.put_data_s('Description','Signature',None,f)
     KSI.put_data_s('File name',potpis_dat,None,f)
     KSI.put_data_s('Method','SHA-1\n    RSA',None,f)
     KSI.put_data_s('Key length','0xa0\n    '+key_len,None,f)
     KSI.put_data('Signature',potpis_txt,f)
     f.write('---END OS2 CRYPTO DATA---\n')
     f.close()
     self.poruka = [data, potpis]
     self.key = key
     print "[AP] potpis generiran!"
Example #7
0
 def generate_random_keys(self, privatni_dat, javni_dat, key_len):
     random_num = Random.new().read
     key = RSA.generate(key_len)
     self.key = key
     print "[AP] modulus:", key.n
     f1 = open(privatni_dat,'w')
     f1.write('---BEGIN OS2 CRYPTO DATA---\n')
     KSI.put_data_s('Description','Private key',None,f1)
     KSI.put_data_s('Method','RSA',None,f1)
     KSI.put_data_s('Key length',hex(key_len),None,f1)
     KSI.put_data_d('Modulus',key.n,-1,f1)
     KSI.put_data_d('Private exponent',key.d,-1,f1)
     f1.write('---END OS2 CRYPTO DATA---\n')
     f1.close()
     f1 = open(javni_dat,'w')
     f1.write('---BEGIN OS2 CRYPTO DATA---\n')
     KSI.put_data_s('Description','Public key',None,f1)
     KSI.put_data_s('Method','RSA',None,f1)
     KSI.put_data_s('Key length',hex(key_len),None,f1)
     KSI.put_data_d('Modulus',key.n,-1,f1)
     KSI.put_data_d('Public exponent',key.e,-1,f1)
     f1.write('---END OS2 CRYPTO DATA---\n')
     f1.close()
     
     return key
Example #8
0
 def generiraj_digitalni_pecat(self, ulaz_dat, javni_primatelja, tajni_primatelja, tajni_posiljatelja, javni_posiljatelja, omotnica_dat, potpis_dat):
     f = open(ulaz_dat)
     data = f.read()
     f.close()
     tajni_kljuc = '1111111111111111'
     obj = AES.new(tajni_kljuc,AES.MODE_CFB,"This is an IV456")
     sifrirana = obj.encrypt(data)
     C1 = sifrirana
     sifr = base64.b64encode(sifrirana)
     key_primatelj, key_len_primatelj = self.compose_keys(tajni_primatelja, javni_primatelja) #par kljuceva primatelja
     key_posiljatelj, key_len_posiljatelj = self.compose_keys(tajni_posiljatelja, javni_posiljatelja) #par kljuceva posiljatelja
     self.key_primatelj = key_primatelj
     self.key_posiljatelj = key_posiljatelj
     javni_kljuc_primatelja = key_primatelj.publickey()
     self.tajni_kljuc = tajni_kljuc
     sifrirani_tajni = javni_kljuc_primatelja.encrypt(tajni_kljuc, 32)
     C2 = sifrirani_tajni
     #print sifrirani_tajni
     sifr_tajni = binascii.hexlify(sifrirani_tajni[0])
     #print sifr_tajni
     f = open(omotnica_dat, 'w')
     f.write('---BEGIN OS2 CRYPTO DATA---\n')
     KSI.put_data_s('File name',omotnica_dat,None,f)
     KSI.put_data_s('Method','AES\n    RSA',None,f)
     KSI.put_data_s('Key length',key_len_primatelj+'\n    '+hex(len(tajni_kljuc)*8),None,f)
     KSI.put_data('Envelope data', sifr, f)
     KSI.put_data('Envelope crypt key',sifr_tajni,f)
     f.write('---END OS2 CRYPTO DATA---\n')
     f.close()
     f = open(omotnica_dat)
     data_omotnica = f.read()
     f.close()
     m = SHA.new()
     m.update(data_omotnica)
     sazetak = m.hexdigest()
     #print "JAAAAAA", sazetak
     kriptirani_sazetak = key_posiljatelj.encrypt(sazetak,32)
     C3 = kriptirani_sazetak
     potpis = key_posiljatelj.sign(sazetak, '')
     potpis_txt = hex(potpis[0])[2:-1]
     f = open(potpis_dat, 'w')
     f.write('---BEGIN OS2 CRYPTO DATA---\n')
     KSI.put_data_s('Description','Signature',None,f)
     KSI.put_data_s('File name',potpis_dat,None,f)
     KSI.put_data_s('Method','SHA-1\n    RSA',None,f)
     KSI.put_data_s('Key length','0xa0\n    '+key_len_posiljatelj,None,f)
     KSI.put_data('Signature',potpis_txt,f)
     f.write('---END OS2 CRYPTO DATA---\n')
     f.close()
     self.poruka = [C1, C2, potpis]
     print "[AP] digitalni pecat generiran!"