def testRSA(rsaKey, numRuns): errors = 0 for i in range(numRuns): m = random.randrange(0,255) mq = BaseFour(m) mqi = mq.getIntVal() c = rsaKey.encryptBaseTen(mqi) mpi = rsaKey.decryptBaseTen(c) mp = quaternary.intValToBaseFour(mpi) mf = quaternary.toDecimal(mp) #print 'Run ' + str(i) #print 'm: ' + str(m) #print 'mqi: ' + str(mqi) #print 'c: ' + str(c) #print 'mpi: ' + str(mpi) #print 'mf: ' + str(mf) if m != mf or mqi != mpi: print 'ERROR: m=' + str(m) + ', mf=' + str(mf) print 'ERROR: mqi=' + str(mqi) + ', mpi=' + str(mpi) #i = raw_input("") errors = errors + 1 #print '' print "Test completed " + str(numRuns) + " runs with " + str(errors) + " errors" if errors > 0: print "RSA Key Values:" e,d,n = rsaKey.getKeys() print 'public key: ' + str(e) print 'private key: ' + str(d) print 'mod: ' + str(n) print '' raw_input("Press enter to continue...")
def decrypt(fname,rsaKey,enableWrite,enableMessages): if(enableMessages): print("Decrypting " + fname + "..."), f = open(fname, "r") fContents = f.read().split(".") fPix = fContents[1].split(",") fDimensions = fContents[0].split(",") imgwidth = int(fDimensions[0]) imgheight = int(fDimensions[1]) im = Image.new("RGB", (imgwidth, imgheight)) pix = im.load() error = False tenpercent = imgwidth / 10 for x in range(imgwidth): if(enableMessages): printPercentage(x, tenpercent) row = fPix[(x*imgheight)-imgheight:x*imgheight] for y in range(len(row)): rgb = row[y].split('/') #print "(" + str(x) + "," + str(y) + ")="+rgb[0]+","+rgb[1]+","+rgb[2] #for i in rgb: # if i == '': # i = '0' r_i = rsaKey.decryptBaseTen(int("0x" + rgb[0],16)) g_i = rsaKey.decryptBaseTen(int("0x" + rgb[1],16)) b_i = rsaKey.decryptBaseTen(int("0x" + rgb[2],16)) r_f = quaternary.intValToBaseFour(r_i) g_f = quaternary.intValToBaseFour(g_i) b_f = quaternary.intValToBaseFour(b_i) r = quaternary.toDecimal(r_f) g = quaternary.toDecimal(g_f) b = quaternary.toDecimal(b_f) if r > 255 or g > 255 or b > 255: print '' print '' print "****************ERROR*****************" print "Decrypted RGB values greater than 255 " print "RSA key is probably incorrect. " print "**************************************" print '' return None rgb_n = (r,g,b) pix[x,y] = rgb_n fNameComp = fname.split(".") outfname = fNameComp[0] exten = fNameComp[1] im.show() if(enableWrite): im.save(outfname + "_OUTPUT." + exten) return outfname + "_OUTPUT." + exten