Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
#-*- coding:utf-8 -*-
import sys, copy
if __name__ == '__main__':
if len(sys.argv) != 3 : print "usage: python %s <public-key> <text>" % sys.argv[0]; sys.exit()
NSTR,ESTR = sys.argv[1].split("#")
DATA_ARR = [ord(x) for x in sys.argv[2]]
N,E,STEP_SIZE = int(NSTR,16),int(ESTR,16), len(NSTR)/2-1
prev_crypted = [0]*STEP_SIZE
hex_out = ""
for i in range(0,(len(DATA_ARR)-1)/STEP_SIZE+1):
tmp = DATA_ARR[i*STEP_SIZE:(i+1)*STEP_SIZE]
tmp = [tmp[i] ^ prev_crypted[i] for i in range(0,len(tmp))]
tmp.reverse()
plain = 0
for x in range(0,len(tmp)): plain+= tmp[x]*pow(256, x, N)
hex_result = "%x" % pow(plain,E,N)
if len(hex_result) % 2 == 1: hex_result = "0" + hex_result
for x in range(0,min(len(hex_result),len(prev_crypted)*2),2):
prev_crypted[x/2] = int(hex_result[x:x+2],16)
hex_out += ("0" if len(tmp) < 16 else "") + ("%x" % (len(tmp)*256)) + "4000" + hex_result
print hex_out.decode("hex").encode("base64").replace("\n","")
tmp = [tmp[i] ^ prev_crypted[i] for i in range(0,len(tmp))]
print hex_out.decode("hex").encode("base64").replace("\n","")
81DA1AD21759F9B8160F737E717482C56AB7BBCA2A9280B223FD8283C5CCD286E7CAF4F765954B0B4BD0746DB040CD226E444E50567AF6563F964006A9A81D9F#10001
6dc8373faa9a424988341d3f2
if len(hex_result) % 2 == 1: hex_result = "0" + hex_result
hex_result = "".join(['0']*( len(NSTR)- len(hex_result))) + hex_result
#-*- coding:utf-8 -*-
import sys, copy
if __name__ == '__main__':
if len(sys.argv) != 3 : print "usage: python %s <public-key> <text>" % sys.argv[0]; sys.exit()
NSTR,ESTR = sys.argv[1].split("#")
DATA_ARR = [ord(x) for x in sys.argv[2]]
N,E,STEP_SIZE = int(NSTR,16),int(ESTR,16), len(NSTR)/2-1
prev_crypted = [0]*STEP_SIZE
hex_out = ""
for i in range(0,(len(DATA_ARR)-1)/STEP_SIZE+1):
tmp = DATA_ARR[i*STEP_SIZE:(i+1)*STEP_SIZE]
tmp = [tmp[i] ^ prev_crypted[i] for i in range(0,len(tmp))]
tmp.reverse()
plain = 0
for x in range(0,len(tmp)): plain+= tmp[x]*pow(256, x, N)
hex_result = "%x" % pow(plain,E,N)
hex_result = "".join(['0']*( len(NSTR)- len(hex_result))) + hex_result
for x in range(0,min(len(hex_result),len(prev_crypted)*2),2):
prev_crypted[x/2] = int(hex_result[x:x+2],16)
hex_out += ("0" if len(tmp) < 16 else "") + ("%x" % len(tmp)) + "00" # current size
ks = len(NSTR)/2
hex_out += ("0" if ks < 16 else "") + ("%x" % ks) + "00" # key size
hex_out += hex_result
print hex_out.decode("hex").encode("base64").replace("\n","")
MyYandeksFotki uploader (MYF) — загрузка фоток через Firefox в Я.Фотки и вставка в Textarea