RSA Как на Java восстановить ключ и зашифровать данные по созданному на Python? Создали на Python приватный и публичный ключи:import rsa (pubkey, privkey) = rsa.newkeys(512) Публичный передаю клиенту на Java (modulus, exponent). Как по этим параметрам восстановить объект для зашифровки сообщения? На Python та же проблема, если есть объект, то легко шифруется, а как получить этот объект из этих параметров? Или нужно что-то ещё?
На Java для восстановления объекта ключа RSA из переданных параметров модульиэкспонентамодуль и экспонентамодульиэкспонента, можно воспользоваться классом RSAKeyParamsSpec из библиотеки Bouncy Castle. Вот пример кода:
import org.bouncycastle.crypto.params.RSAKeyParameters; import org.bouncycastle.crypto.params.RSAPublicKeyParameters; import org.bouncycastle.crypto.params.RSAKeyGenerationParameters; import java.math.BigInteger; //Получаем переданные параметры modulus и exponent BigInteger modulus = new BigIntegermodulusBytesmodulusBytesmodulusBytes; BigInteger exponent = new BigIntegerexponentBytesexponentBytesexponentBytes; //Создаем объект RSAKeyParamsSpec RSAKeyParameters keyParams = new RSAPublicKeyParameterstrue,modulus,exponenttrue, modulus, exponenttrue,modulus,exponent; //Теперь можно использовать объект keyParams для шифрования данных
На Python для восстановления объекта ключа RSA из переданных параметров аналогично можно воспользоваться объектом RSA.construct из библиотеки Crypto. Вот пример кода:
from Crypto.PublicKey import RSA #Получаем переданные параметры modulus и exponent modulus = int.from_bytesmodulusBytes,byteorder=′big′modulusBytes, byteorder='big'modulusBytes,byteorder=′big′
exponent = int.from_bytesexponentBytes,byteorder=′big′exponentBytes, byteorder='big'exponentBytes,byteorder=′big′ #Создаем объект ключа RSA key = RSA.construct(modulus,exponent)(modulus, exponent)(modulus,exponent) #Теперь можно использовать объект key для шифрования данных
После того, как вы восстановите объект ключа на Java и Python, вы сможете использовать его для шифрования данных с помощью соответствующих методов шифрования в каждой из библиотек.
На Java для восстановления объекта ключа RSA из переданных параметров модульиэкспонентамодуль и экспонентамодульиэкспонента, можно воспользоваться классом RSAKeyParamsSpec из библиотеки Bouncy Castle. Вот пример кода:
import org.bouncycastle.crypto.params.RSAKeyParameters;import org.bouncycastle.crypto.params.RSAPublicKeyParameters;
import org.bouncycastle.crypto.params.RSAKeyGenerationParameters;
import java.math.BigInteger;
//Получаем переданные параметры modulus и exponent
BigInteger modulus = new BigIntegermodulusBytesmodulusBytesmodulusBytes;
BigInteger exponent = new BigIntegerexponentBytesexponentBytesexponentBytes;
//Создаем объект RSAKeyParamsSpec
RSAKeyParameters keyParams = new RSAPublicKeyParameterstrue,modulus,exponenttrue, modulus, exponenttrue,modulus,exponent;
//Теперь можно использовать объект keyParams для шифрования данных
На Python для восстановления объекта ключа RSA из переданных параметров аналогично можно воспользоваться объектом RSA.construct из библиотеки Crypto. Вот пример кода:
from Crypto.PublicKey import RSA#Получаем переданные параметры modulus и exponent
modulus = int.from_bytesmodulusBytes,byteorder=′big′modulusBytes, byteorder='big'modulusBytes,byteorder=′big′ exponent = int.from_bytesexponentBytes,byteorder=′big′exponentBytes, byteorder='big'exponentBytes,byteorder=′big′
#Создаем объект ключа RSA
key = RSA.construct(modulus,exponent)(modulus, exponent)(modulus,exponent)
#Теперь можно использовать объект key для шифрования данных
После того, как вы восстановите объект ключа на Java и Python, вы сможете использовать его для шифрования данных с помощью соответствующих методов шифрования в каждой из библиотек.