Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基本密码脚本—;使用键导出词典的方法_Python_Python 3.x - Fatal编程技术网

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

首先,我是Python新手,所以它可能不是一段优雅的代码。我为此提前道歉。
然而,我写了两个脚本:密码和破译信息。加密可以对随机素数进行采样,并将可打印的字符串符号分配给这些数字。

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")