Avatar billede coltau Juniormester
09. november 2018 - 09:05 Der er 6 kommentarer og
1 løsning

RSA Kryptering

Jeg skal signere nogle data med en "private key" og sende en "public key" til den Norske Skatteetat så de har mulighed for at se dataene.
Jeg har fået dannet min nøgler i form af 2 filer med extention .kez og .pke. Jeg bruger .NET's klasse RSACryptoServiceProvider til kryptering og jeg kan efterfølgende dekryptere dataene med "the public key".
Så langt så godt.
Jeg skal uploade/paste "the public key" til skatteetatens hjemmeside i et memo-felt. Når jeg gør det får jeg at vide at det ikke er en valid nøgle.
Lidt af nøglen ser således ud. <RSAKeyValue><Modulus>2iN9vSlvE5mF0i ...

Er der et andet format man kan bruge til sådan en nøgle?
I den sparsomme dokumentation står der at den skal være base64. Andet står der ikke.
Avatar billede Slater Ekspert
09. november 2018 - 13:00 #1
Det giver ikke rigtig mening. Man bruger ikke en public key til at dekryptere data - det ville totalt ødelægge formålet med kryptering. Man krypterer med en public key og dekrypterer med private key.
Dvs. hvis du skal sende noget krypteret data til X, så skal X give dig en public key, som du så bruger til at kryptere dataene og sende til dem, så kun de kan dekryptere det igen med deres private key, som du og andre aldrig får at se.

Omvendt, hvis de skal sende data til dig, giver du dem en public key, som de bruger til at kryptere det med, de sender det krypterede data til dig og du dekrypterer med din private key, som ingen andre må se.

Du skriver at du skal sende data til dem, men beskrivelsen af nøglerne er lige omvendt, som om de skal sende data til dig.
Avatar billede coltau Juniormester
09. november 2018 - 15:43 #2
Tak for info. Jeg behøver kun at søge lidt på Wiki for at se at du har ret. Det er bare mig der har forkortet spørgsmålet forkert. (Jeg skrev: så de har mulighed for at se dataene) Der er ikke tale om dekryptering i det her tilfælde.
Kort fortalt så står der i deres dokumentation at jeg skal lave noget RSA-SHA1 på nogle bestemte data som også skal sendes til dem ukrypteret. (XML) Så vil de bruge den offentlige nøgle til at lave samme RSA-SHA1 og holde det op i mod det jeg har sendt med. På den måde vil de sikre sig at data ikke er blevet ændret.
Mit problem er at jeg uploader den offentlige nøgle til dem i et "forkert" format.
Avatar billede arne_v Ekspert
09. november 2018 - 15:47 #3
Man bruger faktisk public key til "dekryptering" naar man signerer.

En signering er normalt en hash af data krypteret med ens private nøgle og som derfor kan dekrypteres med ens offentlige nøgle.
Avatar billede arne_v Ekspert
09. november 2018 - 15:48 #4
Skriver de nordmaend ikke noget om i hvilket format de vil have den nøgle i deres dokumentation?
Avatar billede coltau Juniormester
09. november 2018 - 18:02 #5
Arne_v - desværre. De skriver rigtig meget om hvordan man kan anvendes HMAC-SHA1-128 i stedet for RSA-SHA1 (1024) men det forvirre mig jo mere end at hjælpe mig. (Der taler man jo kun om private nøgler)
Vi har muligheden for at ringe til Norges supportafdeling og håbe på at vi snakker med en der forstår spørgsmålet.
I skal have tak for input.
Avatar billede arne_v Ekspert
09. november 2018 - 18:25 #6
Dokumentation er godt !!

Men nu skriver du "base64".

Det tyder på enten DER eller PEM format.

Hvis vi gætter på PEM, så er der faktisk noget kode i:

https://stackoverflow.com/questions/28406888/c-sharp-rsa-public-key-output-not-correct
Avatar billede coltau Juniormester
12. november 2018 - 10:23 #7
Så lykkedes det. Skatteetaten ville have nøglen i PEM-format.
Ved hjælp af det link du sendte lykkes det mig at konvertere nøglen.
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

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