4 messaggi dal 18 maggio 2001
Ciao a tutti,

il mio probelma è questo:
devo generare un MAC (Message Authentication Code).
Il MAC generato dall?algoritmo MD5 è in formato binario e per essere spedito tramite protocollo http viene codificato in Base64 e poi codificato secondo lo standard "x-www-form-urlencoded" (dalle specifiche del W3C).

Ecco come le specifiche mi hanno suggerito di criptare i dati:

MAC= metodo_urlencoded(metodo_base64(metodo_MD5(?codTrans=pippodivisa=EURimporto=1prova")))

So che per utilizzare il metodo MD65 bisogna avere installata su server una DLL particolare ..... ma per gli altri due metodi (base64 e urlencode) cosa serve?

e come faccio in una pagina ASP a creare questa funzione?

Le mie conoscenze di ASP sono base ma devo fare questa codifica il prima possibile e non so da che parte si inizia.

Grazie a tutti in anticipo
Roberta

robertuccia
43 messaggi dal 07 novembre 2001
Io sono un matematico e ti consiglio di lasciare stare....
questa è l'analisi dell'algoritmo MD5 che tu vorresti utilizzare:

l?algoritmo, appartenente alla RSA Data Security, Inc. è stato sviluppato da R. Rivest nel 1991.

L'algoritmo è suddiviso in cinque fasi principali:

1- Aggiunta bits di riempimento: il messaggio viene sempre esteso (padding) così che la sua lunghezza in bits sia congruente a 448 mod 512. Il primo bit di estensione è sempre un ?1? seguito da una serie di ?0? mentre il numero di bits di estensione va da un minimo di 1 ad un massimo di 512.

2- Aggiunta della lunghezza: viene aggiunta una rappresentazione a 64-bit della lunghezza del messaggio (b) prima del riempimento. Se la lunghezza era maggiore a 2^64 vengono utilizzati solo i 64 bits inferiori di b e le due word a 32-bit risultanti vengono accodate, seguendo la rappresentazione vista in precedenza, con la word più bassa per prima. Il messaggio ottenuto ha una lunghezza multipla di 512 bits (in pratica 16 words da 32-bit).

3- Inizializzazione del buffer MD (initial variable/chaining variable): si tratta di un buffer di quattro word (A, B, C, D) a 32-bit aventi questi valori esadecimali di inizializzazione (la prima word per prima):

4- Elaborazione del messaggio (compression function): vengono definite quattro funzioni ausiliare che ricevono in ingresso tre words da 32-bit e producono in uscita una sola word a 32-bit:

5- Per ogni bit le funzioni applicano la condizione che, se è vero X passano ad Y, altrimenti a Z, senza introdurre una propria logica ma, seguendo quella dei singoli bits.

La funzione H produce, mediante un operazione di XOR binario, la ?parità? dei bit ingresso. In questo passaggio viene anche utilizza una tabella T di 64 elementi T[1? 64 ] così da avere per ogni T[i] un valore equivalente alla parte intera di 4294967296 volte abs(sin(i)), con i espresso in radianti

Ed in output ottieni, appunto il message digest che è ottenuto partendo dal byte meno significativo di A seguito da quelli di B, C, e terminato con il byte più significativo di D.


Chiaro??? ;-)
43 messaggi dal 07 novembre 2001
Comunque mi sono dimenticato di dire una cosa io l'ho utilizzato una sola volta su un prg client sviluppato in Java, ma solo per il fatto che serviva avere un altissimo livello di sicurezza:
MD5 nei sistemi linux e Unix per da due enormi vantaggi in ambito sicurezza delle password:
- Lunghezza infinita della password (Altrimenti sarebbe limitata a 8 caratteri)
- Spazio maggiore per la chiave (Altrimenti limitata a 13 caratteri)
50 messaggi dal 23 gennaio 2004
Ciao,
ho affrontato qualche tempo fa il tuo stesso problema e alla fine si è scelto di sviluppare un cgi ad hoc in Visual Basic.
Scommetto che hai a che fare con pagamenti online e carte di credito.
Non ho la possibilità di passarti il codice o l'installer di questo cgi e comunque c'è bisogno della collaborazione del personale tecnico che gestisce il server per configurare l'ambiente e installare e un cgi.
So comunque che c'è parecchio materiale pronto e scaricabile gratuitamente, usa un motore di ricerca e cerca separatamente MD5 (non 65!) e base 64. Armati di tanta pazienza e impegno oppure chiedi aiuto ad un programmatore esperto, perché anche se non insuperabile, confermo che è un problema piuttosto complesso e sicuramente non alla portata di un principiante.

Auguri !!!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.