Бот возвращает всем один и тот же ключ
import telebot
import RSA_KEYS
from RSA_ENCR import encript
from RSA_DECR import Decript
import base64
bot = telebot.TeleBot('<TOKEN>')
keyboard1 = telebot.types.ReplyKeyboardMarkup()
keyboard1.row('?Сгенерировать ключ?')
# ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ
# функция расшифровки введенного ключа
def decr_import_key(encript_msg):
try:
byte_str = base64.b64decode(encript_msg)
restored = [int.from_bytes(byte_str[i:i + 2], byteorder='big') for i in range(0, len(byte_str), 2)]
return restored
except:
return False
@bot.message_handler(commands=['start'])
def start_message(message):
bot.send_message(message.chat.id, '?Здравствуйте, для начала работы RSA_CRIPT_bot нужно '
'сгенерировать открытый ключ и передать его собеседнику, '
'собеседник так же должен это сделать, просто скопируйте и отправте его боту?'
'', reply_markup=keyboard1)
@bot.message_handler(content_types=['text'])
def key(message):
if message.text.lower() == '?сгенерировать ключ?':
bot.send_message(message.chat.id, 'Открытый ключ:')
bot.send_message(message.chat.id, RSA_KEYS.KeyEncript_MY)
bot.send_message(message.chat.id, 'Теперь введите ключ который передал вам ваш собеседник')
# f = str(message.from_user).replace("'", '').split(',')
# first_name = str(f[2]).split(':')
# last_name = str(f[4]).split(':')
# print(f'{first_name[-1]}{last_name[-1]}: {message.text}')
if decr_import_key(message.text):
if len(decr_import_key(message.text)) == 2 and message.text != RSA_KEYS.KeyEncript_MY:
global KeyEncript_Import
KeyEncript_Import = str(message.text)
bot.send_message(message.chat.id,
'Отлично, теперь можем приступать к шифровке и расшифровке сообщений ??')
elif message.text == RSA_KEYS.KeyEncript_MY:
bot.send_message(message.chat.id, 'Введите другой ключ')
if message.text.lower() != '?сгенерировать ключ?' and decr_import_key(message.text) == False:
bot.send_message(message.chat.id, f'Зашифрованный текст: {encript(message.text, KeyEncript_Import)}')
f = str(message.from_user).replace("'", '').split(',')
first_name = str(f[2]).split(':')
last_name = str(f[4]).split(':')
print(f'{first_name[-1]}{last_name[-1]}: {message.text}')
if message.text.lower() != '?сгенерировать ключ?' and len(decr_import_key(message.text)) > 2:
# lenth = len(Decript(message.text, KeyDecript))
bot.reply_to(message, Decript(message.text, RSA_KEYS.KeyDecript))
if __name__ == '__main__':
bot.infinity_polling(True)
Моя проблема в том что при запуске бота и вводе команды "сгенерировать ключ" собеседникам отсылается один и тот же ключ. Я думаю что это из за того что она вызывается один раз и поэтому ключ будет одинаков для всех. Но как это исправить я не знаю. Файл RSA_KEYS возвращает две переменные KeyDecript и KeyEncript_MY(каждому человеку они должны быть разные). Строго не судите мой первый ТГ бот