研发了个加密算法,但是太复杂写不出解密来,有谁能帮忙写一下吗。
'''
Name : Double-key imitation-RSA encryption algorithm. ---DKREA
Author : Star Wolf
Version : 1.0
'''
import random
from AES import *
import codecs
class error:
def __init__(self) -> None:
pass
def E_KEY(lang):
if(not lang in [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]):
ex = Exception('The lang must in 4-31')
raise ex
class Processing:
def __init__(self) -> None:
pass
def ruest_key():
a = []
for i in range(62):
a.append(chr(i+65))
return a
def Generate_key(lang):
word_list = Processing.ruest_key()
a = []
for __count in range(lang):
a.append(random.choice(word_list))
return(a)
def encode_key(lang):
error.E_KEY(lang)
K1 = ''.join(Processing.Generate_key(lang))
K2 = ''.join(Processing.Generate_key(lang))
K1A = ''.join(Processing.Generate_key(lang))
K2A = ''.join(Processing.Generate_key(lang))
K1B = AES_code.AES_encrypt(K1,K1A)
K2B = AES_code.AES_encrypt(K2,K2A)
K = ''.join([K1,K2])
KEY1 = [K1A,K2B]
KEY2 = [K2A,K1B]
print([K,KEY1,KEY2])
return [K,KEY1,KEY2]
def decode_key(KEY1,KEY2):
E_K1 = KEY1[1]#K2B
E_K2 = KEY2[1]#K1B
K_K1 = KEY2[0]#K2A
K_K2 = KEY1[0]#K1A
KEY2 = AES_code.AES_decrypt(E_K1,K_K1)
KEY1 = AES_code.AES_decrypt(E_K2,K_K2)
return(''.join([KEY1,KEY2]))
class circle:
def __init__(self) -> None:
pass
def encode(KEY,data):
KEY_list = []
for i in KEY:
#print(i)
KEY_list.append(ord(str(i)))
data_list = []
for i in data:
data_list.append(ord(str(i)))
circle_Key = Processing.ruest_key()
circle_Key_list = []
for i in circle_Key:
circle_Key_list.append(ord(str(i)))
i_K = 0
lang = len(KEY)
KEY = 0
data_H_list = []
for data in data_list:
KEY = KEY+KEY_list[i_K%lang]
KEY = KEY % 62
data_H = int(data)+int(circle_Key_list[KEY])
data_H_list.append(data_H)
i_K += 1
return(data_H_list,KEY,i_K%lang)
def decode(KEY,data,K_j,C_j):
pass
class core_DKREA:
def __init__(self) -> None:
pass
def encode(lang,data):
K = Processing.encode_key(lang)
KEY = K[0]
# if __name__ == "__main__":
# #print(Processing.encode_key(31))
# with codecs.open("./data.txt","r")as fp:
# data = fp.read()
# fp.close()
# print(circle.encode(Processing.encode_key(31)[0],data))
if __name__ == "__main__":
# KEY_list = Processing.encode_key(8)
# K = KEY_list[0]
# K1 = KEY_list[1]
# K2 = KEY_list[2]
# K_RE = Processing.decode_key(K1,K2)
# print(K,K_RE,K == K_RE)
# D1 = '123456'
# K1 = 'asdfghjkl'
# NK1 = 'qwertyuiop'
# E_D1 = AES_code.AES_encrypt(D1,K1)
# RE_D1 = AES_code.AES_decrypt(E_D1,NK1)
# print(D1,K1,E_D1,RE_D1)
print(ord('1'))
print(circle.encode('a','1'))
#print(circle.decode('a',['149'],0,35))