/ / Java - Генериране на RSA ключова двойка от 5 CRT компонента - java, криптография, rsa, bouncycastle

Java - Генериране на RSA ключ от 5 CRT компонента - java, cryptography, rsa, bouncycastle

Имам 5 CRT компоненти - primeP, primeQ, primeExponentP, primeExponentQ и crtCoefficient. Има ли начин да генерираме RSA ключова двойка от тях?

Когато погледнах RSAPrivateCrtKeySpec и RSAPublicKeySpec, липсващите параметри са модул, privateExponent и publicExponent.

Може ли някой да ми помогне как да се изчисли модул, privateExponent и publicExponent?

Има ли изпълнение на Bouncy Castle, за да направи това?

Благодаря! Сам

Отговори:

1 за отговор № 1

Да, това трябва да е възможно. Е, ако публичният показател не е наистина голям, но това е малко вероятно.

Вероятно можете да предположите (т.е. опитайте 3, 5, 7, 13, 17 и 65537) или бруталната сила на публичния показател - тъй като обикновено е малка проба. изчисляване на частния показател, Можете да потвърдите предположението си с помощта на знак / удостоверяване с двойката ключове.

Имайте предвид, че това е доста странно, че имате CRT параметри, но не и публичния ключ. Всъщност, това е толкова странно, че вероятно трябва да го кодирате сами.


0 за отговор № 2

Просто доставете нули за липсващите параметри в спецификацията на CRT. Ключовата фабрика ще го разбере.

RSAPrivateCrtKeySpec privateSpec = new RSAPrivateCrtKeySpec(null, null, null, p, q, expP, expQ, coeff);
KeyFactory factory = KeyFactory.getInstance("RSA");
privateKey = (RSAPrivateKey)factory.generatePrivate(privateSpec);

Модулът е primeP * primeQ. В повечето случаи публичният показател е 65537.