Domanda
Il mio programma C ++ utilizza un Blowfish standard.
Il mio programma C # utilizza l'algoritmo di crittografia Blowfish da qui .
Entrambe le applicazioni (client TCP) fanno la stessa cosa: ricevere un pacchetto, crittografare e poi rinviarlo. Se il server riconosce il pacchetto come normale - invia un altro pacchetto, altrimenti chiude la presa. Ho seguito tutte le funzioni in C ++ e C # e tutto è lo stesso, tranne la crittografia.
Nel file C ++ Ho solo una crittografia. Tuttavia, in C # Blowfish Ho
- BlowfishCBC
- BlowfishCFB
- BlowfishECB
- BlowfishSimple
Non sapevo che uno è quello in mio progetto C ++, così ho scelto in modo casuale BlowfishECB
. Ma non funziona, il server (non ho accesso ad esso) non riconosce il pacchetto come criptato.
La mia domanda: Esiste un Blowfish standard per C # o se questo è l'unico, come posso risolvere questo problema? Modifica
Il codice C ++ Blowfish può essere visto qui .
Soluzione
No, non c'è un Blowfish standard per C #. Userà a seconda di quale si dice di. (Edit: Credo di aver capito male Se si desidera un Blowfish con i requisiti adatti per C #, mi sento di raccomandare Bouncy Castle Crypto Si tratta di una porta da Java e contiene gli standard RFC più documentati Date un'occhiata ai test di unità per esempi di come... utilizzare le classi. Ogni volta che ho usato durare la documentazione è stata carente, ma i test di unità sono abbastanza buoni esempi di come le cose si incastrano.)
La domanda si vuole chiedere è che il sapore di Blowfish vostra applicazione C ++ sta usando. Cosa biblioteca stai usando l'applicazione C ++ per fare la tua crittografia? Una volta che sai che, allora si può fare la scelta giusta nell'applicazione C #.
Io personalmente incontro CBC più. "Semplice" sarebbe probabilmente la pena di provare a.
Avrete anche a che fare con le cose come rendere sicuro il vostro vettore di inizializzazione partite fino a seconda di quale quella che si usa.