Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
.NET Framework
Problema con algoritmi di crittografia
sabato 31 luglio 2010 - 08.44
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
Cuky
Profilo
| Newbie
49
messaggi | Data Invio:
sab 31 lug 2010 - 08:44
ciao, espongo il mio problema.
Mi sono state date delle specifiche per trasformare una stringa di input:
LA FUNZIONE DI HASH UTILIZZATA E' L'ALGORITMO STANDARD SHA-1 (DETTO ANCHE SHA) E PER ESSERE TRASMESSO IN HTTP DEVE ESSERE CODIFICATO OPPORTUNAMENTE.
A TALE SCOPO SI DEVE UTILIZZARE UNA CONVERSIONE IN ESADECIMALE.
Inoltre mi è stato dato un esempio corretto per cui dalla stringa di Input ottengo:
NjhGNThFQzA3QTVFMTVCNUJFNUU0RDIzRTVFQ==
La funzione che mi sembrerebbe ovvia da tali specifiche sarebbe: ConvertInHex(SHA1(input))
Così facendo ottengo dall'input iniziale:
68F58EC07A5E15B5BE5E4D23E5EBC60B7E73F290
Ho provato quindi (per tentativi) a codificare la stringa ottenuta in BASE64 ottenendo:
NjhGNThFQzA3QTVFMTVCNUJFNUU0RDIzRTVFQkM2MEI3RTczRjI5MA==
che è uguale all'esempio datomi solo per i primi 37 caratteri
E' normale che non mi si dica di usare l'algoritmo Base64? E' così ovvio?
Come mai ottengo una stringa più lunga di quella corretta?
grazie mille
Fatti pagare per giocare a Poker On-Line
http:\\www.rakebackitalia.net
luigidibiasi
Profilo
| Guru
1.077
messaggi | Data Invio:
sab 31 lug 2010 - 09:51
Ciao,
>E' normale che non mi si dica di usare l'algoritmo Base64? E'
>così ovvio?
forse le specifiche di http prevedono quella codifica perciò non ti è stato detto.
>Come mai ottengo una stringa più lunga di quella corretta?
Magari l'hash generato viene troncato ad un determinato numero di bit.
>
>grazie mille
>
>
Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/
http://www.dibiasi.it/
Cuky
Profilo
| Newbie
49
messaggi | Data Invio:
sab 31 lug 2010 - 15:37
La funzione che utilizzo per fare l'hash è la seguente:
public static string OttieniStringaCodificaSHA1(string input)
{
//ASCIIEncoding enc = new ASCIIEncoding();
UTF8Encoding enc = new UTF8Encoding();
byte[] data = enc.GetBytes(input);
byte[] result;
SHA1 sha = new SHA1CryptoServiceProvider();
// This is one implementation of the abstract class SHA1.
result = sha.ComputeHash(data);
string hexString = string.Empty;
for (int i = 0; i < 13; i++)
{
hexString += result[i].ToString("X");
}
return hexString;
}
Ho seguito il tuo consiglio e ho provato a spezzare la sequenza. Nell'esempio sopra utilizzo i primi 13 byte anzichè tutta la sequenza di byte.
Ottengo questo:
stringa corretta: NjhGNThFQzA3QTVFMTVCNUJFNUU0RDIzRTVFQ==
stringa con 13 byte: NjhGNThFQzA3QTVFMTVCNUJFNUU0RDIzRTU=
stringa con 14 byte: NjhGNThFQzA3QTVFMTVCNUJFNUU0RDIzRTVFQg==
Mi sto avvicinando... cosa dovrei fare? spezzare il 14esimo byte? hai idea di come fare per raggiungere la stringa corretta?
grazie mille
Fatti pagare per giocare a Poker On-Line
http:\\www.rakebackitalia.net
luigidibiasi
Profilo
| Guru
1.077
messaggi | Data Invio:
sab 31 lug 2010 - 15:57
No scusa,
intendevo dire che forse veniva usato un'altra funzione hash e non sha-1.
Ricordo (spero di ricordare bene) che esistono diverse varianti ognuna che va a spezzare l'hash ad un determinato numero di bit...
Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/
http://www.dibiasi.it/
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !