Как зашифровать строку методом RSA с уже готовым публичным ключом? Добрый день, столкнулся с проблемой. Хочу авторизоваться на сайте с помощью запроса, но он шифрует пароль. Я отснифил запрос на получения RSA-ключа, он выглядет такОтвет{"success":true,"publickey_mod":"d881a84806f62b79c48158d8d5c25e29975c6d18fc1098b535b6ee560dc3f6981018499e14a98694507f24d6fbfa0d1a73a72beca71bdf69877ad9d1e0fd887160cc5c18cfc1bea86620d5eb5a028810d51717d54ac0fc8536f43caa7c14ab341ee8b2847a8f09161969554a211a3c298d4753f4edfd31e16b5472d2ae3decf9fc6e9408ba1246d899aaefe5f3d2090c5b0663a16c97bd4ae213e4047a352d8c74a2b0324a2f596665edb1d5f3179d4878e43f14fb21e7d862c73bc17d9f664869d21d95302ca912d2a97fc34eb6b98a04b5a0e2632b7c732ff7a2faa18906d1a19001363f5f052ac9d704d911d1506c7a350992fa51c2b11a0067ead0ad0a6d","publickey_exp":"010001","timestamp":"482546850000","token_gid":"8f7af7879dc80f776"} Внимание, вопрос. Как зашифровать пароль с помощью полученного ключа?
Для зашифрования строки методом RSA с использованием полученного публичного ключа необходимо выполнить следующие шаги:
Преобразовать публичный ключ из формата, в котором он был получен, в формат, подходящий для использования в RSA шифровании. Для этого нужно преобразовать значения publickey_mod и publickey_exp в целые числа.
Создать объект RSA.PublicKey из полученных значений модуля и экспоненты.
Преобразовать строку (пароль), которую вы хотите зашифровать, в байтовый формат.
Используя метод encrypt из модуля Crypto.Cipher.PKCS1_OAEP, зашифровать строку с помощью созданного публичного ключа.
Пример кода на Python для зашифрования пароля с использованием RSA:
from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP import base64 # Преобразование публичного ключа publickey_mod = int('d881a84806f62b79c48158d8d5c25e29975c6d18fc1098b535b6ee560dc3f6981018499e14a98694507f24d6fbfa0d1a73a72beca71bdf69877ad9d1e0fd887160cc5c18cfc1bea86620d5eb5a028810d51717d54ac0fc8536f43caa7c14ab341ee8b2847a8f09161969554a211a3c298d4753f4edfd31e16b5472d2ae3decf9fc6e9408ba1246d899aaefe5f3d2090c5b0663a16c97bd4ae213e4047a352d8c74a2b0324a2f596665edb1d5f3179d4878e43f14fb21e7d862c73bc17d9f664869d21d95302ca912d2a97fc34eb6b98a04b5a0e2632b7c732ff7a2faa18906d1a19001363f5f052ac9d704d911d1506c7a350992fa51c2b11a0067ead0ad0a6d', 16) publickey_exp = int('010001', 16) rsa_public_key = RSA.construct((publickey_mod, publickey_exp)) # Создание шифратора cipher = PKCS1_OAEP.new(rsa_public_key) # Пароль для шифрования password = b'password123' # Зашифрованный пароль encrypted_password = cipher.encrypt(password) # Преобразование зашифрованного пароля в base64 для передачи в запросе encrypted_password_base64 = base64.b64encode(encrypted_password) print(encrypted_password_base64.decode())
После выполнения этого кода у вас будет зашифрованная строка пароля в формате base64, которую вы сможете использовать для авторизации на сайте.
Для зашифрования строки методом RSA с использованием полученного публичного ключа необходимо выполнить следующие шаги:
Преобразовать публичный ключ из формата, в котором он был получен, в формат, подходящий для использования в RSA шифровании. Для этого нужно преобразовать значения publickey_mod и publickey_exp в целые числа.
Создать объект RSA.PublicKey из полученных значений модуля и экспоненты.
Преобразовать строку (пароль), которую вы хотите зашифровать, в байтовый формат.
Используя метод encrypt из модуля Crypto.Cipher.PKCS1_OAEP, зашифровать строку с помощью созданного публичного ключа.
Пример кода на Python для зашифрования пароля с использованием RSA:
from Crypto.PublicKey import RSAfrom Crypto.Cipher import PKCS1_OAEP
import base64
# Преобразование публичного ключа
publickey_mod = int('d881a84806f62b79c48158d8d5c25e29975c6d18fc1098b535b6ee560dc3f6981018499e14a98694507f24d6fbfa0d1a73a72beca71bdf69877ad9d1e0fd887160cc5c18cfc1bea86620d5eb5a028810d51717d54ac0fc8536f43caa7c14ab341ee8b2847a8f09161969554a211a3c298d4753f4edfd31e16b5472d2ae3decf9fc6e9408ba1246d899aaefe5f3d2090c5b0663a16c97bd4ae213e4047a352d8c74a2b0324a2f596665edb1d5f3179d4878e43f14fb21e7d862c73bc17d9f664869d21d95302ca912d2a97fc34eb6b98a04b5a0e2632b7c732ff7a2faa18906d1a19001363f5f052ac9d704d911d1506c7a350992fa51c2b11a0067ead0ad0a6d', 16)
publickey_exp = int('010001', 16)
rsa_public_key = RSA.construct((publickey_mod, publickey_exp))
# Создание шифратора
cipher = PKCS1_OAEP.new(rsa_public_key)
# Пароль для шифрования
password = b'password123'
# Зашифрованный пароль
encrypted_password = cipher.encrypt(password)
# Преобразование зашифрованного пароля в base64 для передачи в запросе
encrypted_password_base64 = base64.b64encode(encrypted_password)
print(encrypted_password_base64.decode())
После выполнения этого кода у вас будет зашифрованная строка пароля в формате base64, которую вы сможете использовать для авторизации на сайте.