Avatar billede x-masman Nybegynder
10. december 2004 - 18:01 Der er 14 kommentarer og
1 løsning

lav en RSAPublicKey

Hej hoveder,

Hvordan laver jeg en RSAPublicKey givet et modulos og en eksponent?
Avatar billede arne_v Ekspert
10. december 2004 - 18:08 #1
Prøv:

KeyPairGenerator key_gen = KeyPairGenerator.getInstance("RSA");
key_gen.initialize(512);
KeyPair key_pair = key_gen.generateKeyPair();
RSAPublicKey rsa_pub_key = (RSAPublicKey)key_pair.getPublic();
Avatar billede arne_v Ekspert
10. december 2004 - 18:11 #2
Nej hov - du vil selv angive eksponent.

Så skal du ikke kalde initialize med en int med keysize, men med
en RSAKeyGenParameterSpec med dine værdier.
Avatar billede x-masman Nybegynder
10. december 2004 - 18:17 #3
Hmm... Der står ikke noget om modulos. Det er da nødvendigt, ikke?

Det er fordi jeg har en client der har et keyset genereret ved KeyPairGenerator. Nu vil jeg gerne sende den til en anden client gennem XML. Jeg hiver derfor modulos og exponenten ud og sender den i
<mod>modulos</mod>
<exp>exponent</exponent>

Med dette skal der så skabes en RSAPublicKey pg RSAPublicKeySpec kan ikke castes til RSAPublicKey:
            BigInteger mod = new BigInteger(p.getChildValue("mod"));
        BigInteger exp = new BigInteger(p.getChildValue("exp"));
        RSAPublicKey key = (RSAPublicKey)(new RSAPublicKeySpec(mod,exp));
Avatar billede x-masman Nybegynder
10. december 2004 - 18:18 #4
Det er kun Public jeg vil sende
Avatar billede arne_v Ekspert
10. december 2004 - 18:20 #5
Nej selvfølgelig kan du ikke caste sådan.

En RSAPublicKey er en public key mens en RSAPublicKeySpec er parametre for et key pair.

Modulus ? Hm - jeg søger lige lidt !
Avatar billede x-masman Nybegynder
10. december 2004 - 18:26 #6
Det synes jeg at jeg har gjort og det virker som om at man skal bruge en anden API(?) end java.security.blabla.

Det er squ da mærkligt at der ikke er lavet en constructor.

Jeg vil helst ikke installere noget nyt da det skal kunne compile på en anden maskine jeg ikke har root til.

Hvis du finder noget så sig endelig til!!!!
Avatar billede arne_v Ekspert
10. december 2004 - 18:26 #7
Prøv så:

KeyFactory kf = KeyFactory.getInstance("DSA");
RSAPublicKey key = (RSAPublicKey)kf.generatePublic(new RSAPublicKeySpec(mod,exp));
Avatar billede arne_v Ekspert
10. december 2004 - 18:27 #8
KeyFactory kf = KeyFactory.getInstance("RSA");
RSAPublicKey key = (RSAPublicKey)kf.generatePublic(new RSAPublicKeySpec(mod,exp));

naturligvis
Avatar billede arne_v Ekspert
10. december 2004 - 18:28 #9
Dem der lavede Java API har tydeligvis læst GoF bogen - de bruger patterns
i rå mængder !

Inkl. factory ...
Avatar billede x-masman Nybegynder
10. december 2004 - 18:28 #10
En public key må da være skabt til på en eller anden måde at blive sendt. Ved du hvordan? Så må jeg lave en løsning hvor det ikke sker som string men som fil eller noget andet.
Avatar billede x-masman Nybegynder
10. december 2004 - 18:29 #11
Hæhæ smart. Jeg prøver lige.
Avatar billede x-masman Nybegynder
10. december 2004 - 18:37 #12
Smukt. Men jeg havde der lige forvirret i 6 minutter. ;o) Smid et svar.
Avatar billede x-masman Nybegynder
10. december 2004 - 18:37 #13
der = dig
Avatar billede arne_v Ekspert
10. december 2004 - 18:40 #14
svar
Avatar billede x-masman Nybegynder
10. december 2004 - 19:01 #15
Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester