Python 基本密码脚本—;使用键导出词典的方法
首先,我是Python新手,所以它可能不是一段优雅的代码。我为此提前道歉。Python 基本密码脚本—;使用键导出词典的方法,python,python-3.x,Python,Python 3.x,首先,我是Python新手,所以它可能不是一段优雅的代码。我为此提前道歉。 然而,我写了两个脚本:密码和破译信息。加密可以对随机素数进行采样,并将可打印的字符串符号分配给这些数字。 alice.txt是书面信息 bob.txt是加密消息 charlie.txt是已解密的消息 klucz.txt是带有键的dict 如果能找到一种不与消息本身一起发送密钥的方法,那就太好了。由于每次执行脚本时都会进行随机采样,因此需要在加密过程中保存该脚本。 密码: import numpy as np import
然而,我写了两个脚本:密码和破译信息。加密可以对随机素数进行采样,并将可打印的字符串符号分配给这些数字。
alice.txt是书面信息
bob.txt是加密消息
charlie.txt是已解密的消息
klucz.txt是带有键的dict
如果能找到一种不与消息本身一起发送密钥的方法,那就太好了。由于每次执行脚本时都会进行随机采样,因此需要在加密过程中保存该脚本。
密码:
import numpy as np
import time
import random
import string
import json
size = 10 ** 8
cut = size * 0.1
sign_pool = string.printable + '\u0104' + '\u0106' + '\u0118' + '\u0141' + '\u0143' + '\u00D3' + '\u015A' + '\u0179' + '\u017B' + '\u0105' + '\u0107' + '\u0119' + '\u0142' + '\u0144' + '\u00F3' + '\u015B' + '\u017A' + '\u017C'
no_of_signs = len(sign_pool)
start = time.time()
def generate_primes(n):
is_prime = np.ones(n + 1, dtype=bool)
is_prime[0:2] = False
for i in range(int(n ** 0.5) + 1):
if is_prime[i]:
is_prime[i * 2::i] = False
return np.where(is_prime)[0]
list_with_primes = generate_primes(size)
arr = np.delete(list_with_primes, np.argwhere(list_with_primes <= cut))
arr_lst = arr.tolist()
random_primes = random.sample(arr_lst, no_of_signs)
key_dict = dict(zip(sign_pool, random_primes))
key_coder = dict(zip(random_primes, sign_pool))
with open('klucz.txt', 'w') as fobj:
json.dump(key_coder, fobj)
fobj.close()
message = []
try:
with open('alice.txt', 'r', encoding='utf8') as f:
message = f.read().strip().split()
f.close()
except:
print('Plik nie istnieje.')
message_str = ' '.join(map(str, message))
split = [char for char in message_str]
coded_list = []
for index in split:
coded_list.append(key_dict[index])
try:
with open('bob.txt', 'w', encoding='utf8') as g:
for item in coded_list:
g.write(str(item))
g.write(' ')
g.close()
except:
print('Błąd tworzenia pliku.')
end = time.time()
time_result = round((end - start), 2)
print(str(time_result) + ' s')
我们不使用python编写BASIC
import numpy as np
import time
import random
import string
import json
size = 10 ** 8
cut = size * 0.1
sign_pool = string.printable + '\u0104' + '\u0106' + '\u0118' + '\u0141' + '\u0143' + '\u00D3' + '\u015A' + '\u0179' + '\u017B' + '\u0105' + '\u0107' + '\u0119' + '\u0142' + '\u0144' + '\u00F3' + '\u015B' + '\u017A' + '\u017C'
no_of_signs = len(sign_pool)
start = time.time()
def generate_primes(n):
is_prime = np.ones(n + 1, dtype=bool)
is_prime[0:2] = False
for i in range(int(n ** 0.5) + 1):
if is_prime[i]:
is_prime[i * 2::i] = False
return np.where(is_prime)[0]
list_with_primes = generate_primes(size)
arr = np.delete(list_with_primes, np.argwhere(list_with_primes <= cut))
arr_lst = arr.tolist()
random_primes = random.sample(arr_lst, no_of_signs)
key_dict = dict(zip(sign_pool, random_primes))
key_coder = dict(zip(random_primes, sign_pool))
with open('klucz.txt', 'w') as fobj:
json.dump(key_coder, fobj)
message = []
try:
with open('alice.txt', 'r', encoding='utf8') as f:
message = f.read().strip().split()
except:
print('Plik nie istnieje.')
split = [char for char in ' '.join(map(str, message))]
try:
with open('bob.txt', 'w', encoding='utf8') as g:
for s in split:
g.write(str(key_dict[s]))
g.write(' ')
except:
print('Błąd tworzenia pliku.')
print(f"{round((time.time() - start), 2)} s")
为此,请使用公钥/私钥加密只有接收者才能解密的密钥,但您不需要这些随机密钥,因为两个用户都有公钥/私钥所有
close()
调用有什么用?这只是一个简单的替换密码。是的,但目标不是重新创建RSA。不过,谢谢你的回答,这可能是最有效的方法。
import numpy as np
import time
import random
import string
import json
size = 10 ** 8
cut = size * 0.1
sign_pool = string.printable + '\u0104' + '\u0106' + '\u0118' + '\u0141' + '\u0143' + '\u00D3' + '\u015A' + '\u0179' + '\u017B' + '\u0105' + '\u0107' + '\u0119' + '\u0142' + '\u0144' + '\u00F3' + '\u015B' + '\u017A' + '\u017C'
no_of_signs = len(sign_pool)
start = time.time()
def generate_primes(n):
is_prime = np.ones(n + 1, dtype=bool)
is_prime[0:2] = False
for i in range(int(n ** 0.5) + 1):
if is_prime[i]:
is_prime[i * 2::i] = False
return np.where(is_prime)[0]
list_with_primes = generate_primes(size)
arr = np.delete(list_with_primes, np.argwhere(list_with_primes <= cut))
arr_lst = arr.tolist()
random_primes = random.sample(arr_lst, no_of_signs)
key_dict = dict(zip(sign_pool, random_primes))
key_coder = dict(zip(random_primes, sign_pool))
with open('klucz.txt', 'w') as fobj:
json.dump(key_coder, fobj)
message = []
try:
with open('alice.txt', 'r', encoding='utf8') as f:
message = f.read().strip().split()
except:
print('Plik nie istnieje.')
split = [char for char in ' '.join(map(str, message))]
try:
with open('bob.txt', 'w', encoding='utf8') as g:
for s in split:
g.write(str(key_dict[s]))
g.write(' ')
except:
print('Błąd tworzenia pliku.')
print(f"{round((time.time() - start), 2)} s")
import time
import json
start = time.time()
with open('klucz.txt', 'r') as fobj:
d = json.load(fobj)
message = []
try:
with open('bob.txt', 'r', encoding='utf8') as f:
message = f.read().strip().split()
except:
print('Plik nie istnieje.')
try:
with open('charlie.txt', 'w', encoding='utf8') as g:
for m in message:
g.write(str(d[m]))
except:
print('Błąd tworzenia pliku.')
print(f"{round((time.time() - start), 2)} s")