Можно ли сгенерировать закрытый ключ RSA, используя модуль и показатель степени, как это было на стороне Java? - PullRequest
0 голосов
/ 28 января 2019

Я использую расшифровку RSA для решения iOS.Я хочу использовать те же параметры, что и на стороне Java, для создания privateKey, но я не могу найти, как это сделать.Есть ли способ сделать это или можно экспортировать этот privateKey с помощью Java, а затем импортировать его на решениях iOS?

byte[] modulusBytes = Base64.decode("base64EncodedString");
byte[] DBytes = Base64.decode("anotherBase64EncodedString");
BigInteger modulus = new BigInteger(1, modulusBytes );
BigInteger exponent = new BigInteger(1, DBytes);

RSAPrivateKeySpec rsaPrivKey = new RSAPrivateKeySpec(modulus, exponent);
KeyFactory fact = KeyFactory.getInstance("RSA");
PrivateKey privKey = fact.generatePrivate(rsaPrivKey);
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");

Мое приложение iOS расшифровывает QRCode, используя этот алгоритм.QRCode зашифрован с использованием Java с помощью открытого ключа, как показано ниже.чтобы расшифровать этот код, мы используем код выше на стороне Java.так как мы можем генерировать тот же приватный ключ, который сможет расшифровать?Можно ли сделать это без того же модуля и показателя степени?

byte[] modulusBytes = Base64.decode("base64EncodedString");

byte[] exponentBytes = Base64.decode("AQAB");
BigInteger modulus = new BigInteger(1, modulusBytes );
BigInteger exponent = new BigInteger(1, exponentBytes);

RSAPublicKeySpec rsaPubKey = new RSAPublicKeySpec(modulus, exponent);
KeyFactory fact = KeyFactory.getInstance("RSA");
PublicKey pubKey = fact.generatePublic(rsaPubKey);

1 Ответ

0 голосов
/ 28 января 2019

Это не так, как это должно работать.Вы можете сгенерировать пару закрытых и открытых ключей на каждой стороне и обменяться ключами public .Каждая сторона будет шифровать сообщения, которые они хотят отправить (при условии, что они не слишком длинные), с помощью открытого ключа другой стороны, и расшифровывать полученные сообщения с помощью собственного закрытого ключа.Но закрытый ключ есть и должен оставаться именно таким: личным .

...