Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Signature RSA, equivalente C++

    ciao a tutti è la prima volta che posto nel forum.
    spero che possiate aiutarmi..

    sto trasportando un programma da C++ a Java. in particolare lavoro con l'agoritmo RSA. il mio scopo è ottenere una firma/signature RSA, con lunghezza 256 (bytes).

    in C++ uso RSASSA_PKCS1v15_MD5_Signer .
    in Java uso SHA1withRSA .
    questi metodi di cifratura usati si equivalgono?

    pur usando gli stessi dati in entrata, ottengo firme diverse. Java mi restituisce sempre e solo una signature di 128 bytes. per curiosità ho provato a validare tale signature in C++, infatti risulta scorretta.

    cosa sto sbagliando?

    grazie a tutti per l'attenzione, ed in anticipo per l'aiuto.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    non so se hai già installato le unrestricted policy.
    Poi in realtà i due algoritmi non sono uguali, anche senza cercare gli OID mi rendo subito conto che da una parte fai RSA con SHA1 e dall'altra RSA con MD5.

    Ti appoggi a librerie particolari?
    RTFM Read That F*** Manual!!!

  3. #3
    ho provato anche MD5withRSA, ho dimenticato di specificarlo.
    tuttavia non cambia nulla, ottengo sempre lo stesso array lungo 128 bytes.

    no, non uso librerie esterne. uso solo classi proprie di Java.
    non credo di avere mai installato le "unrestricted policy".. sarebbero? (perdona l'ignoranza)

    se esiste un modo per usare un padding PKCS1v15(MD5) in Java, io non riesco a trovarlo.
    perciò sto chiedendo aiuto in questo forum.

    grazie ancora per la tua disponibilità.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    hai almeno dato un occhio alla parte di security in java?
    security
    e
    qui
    se non hai un minimo di dimestichezza sull'argomento è inutile andare avanti, perché non capisco nemmeno a cosa ti riferisci (visto che io ragiono per OID e non per nomi)
    RTFM Read That F*** Manual!!!

  5. #5
    si, avevo già preso visione di quella documentazione.
    in particolare avevo trovato interessanti questi riferimenti:

    http://docs.oracle.com/javase/6/docs...html#Signature

    ho cercato di essere il più preciso possibile riportando addirittura la funzione C++ che sto tentando di 'ritrovare' (ed, usare) in Java. cerco di produrre la signature di un array di byte contenente la chiave pubblica (quindi modulo+esponente pubblico) del server. l'idea è chiara.

    perchè scrivi "è inutile andare avanti" ? non chiedo di essere aiutato per forza. ho già ammesso di essere in difficoltà, infatti cerco di capirne di più. mettiti nei miei panni per un secondo, per cortesia; se hai la pazienza di aiutarmi, mi farebbe piacere continuare questa conversazione. al contrario, continuerò ad arrangiarmi come autodidatta.

    ti ringrazio nuovamente. alla prossima!

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da redpillar
    si, avevo già preso visione di quella documentazione.
    in mezzo a tutte quelle guide c'è anche spiegato come fare una firma.
    Originariamente inviato da redpillar
    ho cercato di essere il più preciso possibile riportando addirittura la funzione C++ che sto tentando di 'ritrovare' (ed, usare) in Java.
    quando fai una firma, in generale, gli algoritmi usati vengono riferiti tramite dei numeri che ne indicano proprio la natura.
    Ad esempio 2.1.5.6.6 (numero a caso) ha lo stesso significato per le librerie java, c++ e quelle che ti pare. Riferirti ad un algoritmo usando quella stringa che ti ho fatto vedere non cambia in base al linguaggio. Quello che leggi tu è un alias. Io cerco di non lavorare mai su alias perchè dipendono dalle lib usate, perdo la generalità.

    Oltretutto questo è uno dei primi result della ricerca con parole chiave "sha1withrsa java example" http://stackoverflow.com/questions/2...ate-key-for-us

    come vedi le informazioni ci sono.

    Riguardo le unrestricted policy files

    Originariamente inviato da redpillar cerco di produrre la signature di un array di byte contenente la chiave pubblica (quindi modulo+esponente pubblico) del server. l'idea è chiara.
    ma è sbagliato!!! Per apporre una firma si usa la chiave privata che è in possesso del firmatario (colui che firma). La chiave pubblica (deducibile dal certificato) è usata dalle controparti per verificare che a firmare sia stato proprio il firmatario e non un'altra persona. Quello che fai è già sbagliato.
    Originariamente inviato da redpillar
    perchè scrivi "è inutile andare avanti" ? non chiedo di essere aiutato per forza. ho già ammesso di essere in difficoltà, infatti cerco di capirne di più. mettiti nei miei panni per un secondo, per cortesia; se hai la pazienza di aiutarmi, mi farebbe piacere continuare questa conversazione. al contrario, continuerò ad arrangiarmi come autodidatta.

    ti ringrazio nuovamente. alla prossima!
    perché tutte le informazioni riguardo questi passi sono ben documentate e ci sono tanti esempi, solo che tutto il meccanismo è rognoso da capire e spiegarlo su post è molto complicato.
    RTFM Read That F*** Manual!!!

  7. #7
    quel materiale l'ho già visto e testato. non ottengo ciò che voglio.
    non so più come ripete quello che ho scritto 4 volte.

    so che devo usare la chiave privata per CREARE la signature.
    mi riferivo al contenuto di cui produrre la firma. sto facendo solo un test.

    posso garantirti che prima di postare qua ho fatto molte ricerche e non è la prima volta che uso queste procedure - parlo di mesi, non minuti. se 'spiegassi', potrei provare a capire.

    credi che non ho cercato abbastanza, e che tutto ciò sia troppo complicato.

    va bene. thank you for your dealing. cya

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    posta il codice che provi allora, perché è in quel modo che fai le firme.
    Perché ti assicuro che quegli esempi funzionano (visto che li uso).
    So che il meccanismo delle security in java è rognoso da comprendere quando inizi a lavorarci, chiarito il meccanismo poi vai in automatico. Personalmente ci ho messo un po' a capire come sfruttare a mio vantaggio tutte le lib, parlo per esperienza, non per sentito dire.

    Eri abbastanza convinto della chiave pubblica visto che hai parlato di modulus e di esponente, le due info minime per ottenere la chiave pubblica, del server. La svista posso ammetterla, ma se rafforzi in quel modo penso davvero che hai chiaro in testa che la firma la fai con la chiave pubblica, quindi continui a sbagliare.
    RTFM Read That F*** Manual!!!

  9. #9
    grazie ma ho risolto.

    dopo le tue ultime affermazioni sono entrato in confusione. non lo dico in tono offensivo anzi. vedi, la mia applicazione in realtà sfrutta due engine RSA (così li chiamo). le chiavi ecc. le calcolo tutte 'a mano', solo alla fine casto i BigInteger propriamente.

    dicevo, mi hai messo il dubbio riguardo l'uso di chiavi pubbliche e private.
    ho ricontrollato tutto l'algoritmo che ho creato: avevi ragione.

    è vero, certo, che per creare le Signature occorre usare la PrivateKey. altrettanto vero è che l'intero algoritmo risulta ancora corretto. eseguivo la firma con la PrivateKey del motore engine RSA sbagliato a 512 anzichè 1024 bits.

    insomma, distrazione.
    con tante operazioni aritmetiche avevo confuso i blocchi.

    giusto per provare quanto scritto ti riporto ciò su cui ho lavorato.
    (sintetizzerò a numeri così puoi recuperare le informazioni, se lo desideri).

    ti ringrazio nuovamente per la tua disponibilità e cortesia.

    codice:
    //publicKey, exponent=17
    RSAEngine512_9fbc931a7ea120df67613aa0e00749bfdcf25c90edc4b0683b4127ba9b363ebd438723cba23f542e8a04ec76432bdea6372b7b2724544939282aa733f1b671d2bed76a593809c6fcc511e23e52f9ec5cc5611586bb42f71d111cff5e0f57baf18ad8c42fb9f6ca03738fa4264adc0b672be4316c4aa1d6a4d4a8b77ccd01b445(11) L=129
    
    //privateKey
    RSAEngine1024_308204bc020100300d06092a864886f70d0101010500048204a6308204a20201000282010100a1088d9242cf8e55243a2685233ad269fdb3b91e300f2242d22e3a99b644af694f03e62ab434c5efc01f75305f17e57a336980c4ce5af43dfc71ac515dd84e6dc011eebe64f5f22727cddd36c5877473bbf20d673abdde4cb55ff77d303fcc492381e654bf97b8c44763067defa09ab595b0fc3a30503ec4fd1194e8872cd7c79adc92d0f541bad8c19608fe10c16547de244129aa412dc821978172ca0b8155cce8580ebf2b398af76b76dd9b51115236919a23435ab9152cdacff001c2a0d94c3cdac9bd7b0d12ede02380b40c8a4a28dc43f6c6c33fb234df7d539091141650b49d827dd0653d201046c0e6699405ba90338e7aa0f838297e644f33e3a9f7020111028201005eb9bcb06389268c6fa9bc4e50f56cb6d178c73eef17f60930576dc3d4a0dfa75ba7f0cdd36a5650cb5dcc76ce8686fc96b687fb4c35809ceed9746c1915d3c816a1230695bdd9bcae00a03e561371ad7d9d714bc83373b4a6ed282b85cb2cdfba88a59b43866cafb1858b59238ba64cb2681be5fe4d521985ce1b5b9acf15838a368cf514e752c27d3b2ca9e5106dcd48562aff6dda285c48e1f2ae869508d0d6a8b4da481bc8958a0eb694d1943019425ea5d069058e080853a42a59cb6cda42b0402296eda16cc01f602d6f79b939a03d485036ab3958d551c9661dc02218d31121f011d7b4ece5a032bef3b3481a79843edb11225008f78d7f600e7dd9e102818100c46c6f85e5fa540b6f11954e6db731fa371ca857500d68bd2faf6ae21ad64f1641f8fb59df89224c94ddb844aa5ae410e3b51a0f8ceb5e09ac50a0b112fd48a66838701a23b254141ec9978e999ba65f128049361456e98c6b5d649ecf842f48f65e07818a25fc7a769376cbbeec5fb92418cd81bb5eea9c460e41e35f01bcb302818100d1e033aa6bbe26e91739748ed0d4abd712751c8685da806e0f9b2d34ca6b09a95136f60e983fa8a69174bb68bfe0a849953b99649d7f83310bfbfe908951ebf30c3f30db32ce59c5eee1353e76885c3c52c0996b88afa7db9210a8ba5b46446ff38642b5a2221b965652e016ef9939b92e49c7febbbaebf30b65fd1555d8c7ad02818100b8de87149c36e5b0688904fe85611ffa8e3916e8c3d06293f0a5194d466f597e5c35a1458717a7cf9b2b07c827dd12e2b831fa68fd19c1eafc881ec4c694082425dac3dc5dd503d6b3908ea45456423b5cb4f99c4f60dbcf741ba9fee16d59ae150d343daf32cf82517bbb1a1d1ab47203db1bc5650e09fc7e2b894e77892a110281807b74d318f415804ce07c2672207d19c9ce9f3df4c7353c7cfa1f0b887711c972a83e729f2c61ae801953b988e956f994b2230eefe42ce3c27f852c55057b7bbc255258f9692e16b0aaa297ca63d7bdc9219e785d5f7662bd64fabd9acc47738d25d681980505012b41d665b323874f21a2c1fd2c6e6df4349d4b0d57d8252a29028181008f8fc84759c3bd738fa862c2fa4b13de6a200e67799079d9ea311519937eb1867d3627886d26d886a2d7f111aadb0f7286e823bd030351f6fef6af82c5a6da40f3328aa533f2370357c30613847dc00ce317408a41250cd43bce42330b8206652cf25981a043d5e195a353e3304a6d6fa3ee17c7946ebde29d0adf5aa3a8e7fa L=1216
    
    MD5withRSA_a0fd2910f12ad7b88eee2377f640454e64c87e09c5fa1bd647f791aee43e9dbdef7d9b81d5a75749fba78bb2d5615104df8d1c9427c92d7567b042a5f517cee354b50b76a710e57f4b599ad614a3e1ecaa487f6212eaf4fcc5550c5d0db80880114b8a5edb145eff2ba5f29f00e996d2f9accd941f863571990beeeb554e843ae1946adff121e9da05c9a816118897106eba62dcc5a7031a1ffaaf88c009d5100e20aec14e8b9e2c01827c40fa58897549db6bc5d7d4cac9bcb317889741830889221e18448f57446a0743d421463ebc4c17a22079ff8d426f562f5199fb8a4fdca2e707fb85b4728cdecfa111d9968dddafa65e49ab929b2bc604b2773283d1 L=256
    
    signature verifies: true

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ok menomale che ci siamo capiti
    RTFM Read That F*** Manual!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.