Имам 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.