from Crypto.Util.number import inverse as i from Crypto.PublicKey import RSA from ncrypt import rsa as nc_RSA import cPickle import zlib fpath = './xc4-keys/' files = [fpath + 'this.key', fpath + 'that.key'] pickle_load = lambda pickle_file : cPickle.loads(zlib.decompress(open(pickle_file, 'rb').read())) pickle_dump = lambda pickle_data, pickle_file : open(pickle_file, 'wb').write(zlib.compress(cPickle.dumps(pickle_data), zlib.DEFLATED)) def kpc2knc(kpc): print kpc.size() knc = nc_RSA.RSAKey() n = kpc.n e = kpc.e if (kpc.has_private()): d = kpc.d p = kpc.p q = kpc.q dmp1 = (d % (p - 1)) dmq1 = (d % (q - 1)) iqmp = i(q, p) knc.loadPrivateKey((n, e, d, p, q, dmp1, dmq1, iqmp)) else: knc.loadPublicKey((n, e)) return(knc) for filename in files: pkey = kpc2knc(pickle_load(filename)) if pkey.hasPrivateKey(): pickle_dump(pkey.getPrivateKey(), filename) else: pickle_dump(pkey.getPublicKey(), filename)