97 messaggi dal 04 ottobre 2004
byte[] data = Convert.FromBase64String(originalText);


mi da 2 tipi di errore

1) carrattere non valido (potrebbe essere il '-' o '\'

2) lunghezza non valida per un amatrice di caratteri base 64


Ho capito leggendo la documentazione che Convert.FromBase64String che la lunghezza della stringa deve essere almeno di 4 caratteri e deve essere comunque un multiplo di 4. non esistono altre funzioni analoghe di conversione da string a byte[]?

Ho provato in effetti come dice la documentazione e ho messo un multiplo di 4 caratteri, passa la chimata alla FromBase64String ma mi da un bel errore quando lancio

byte[] cript = dp.Decrypt(data,null);


mi da un bell'errore:

Informazioni aggiuntive: Exception decrypting. Decryption failed. Dati non validi.


il primo errore l'ho superato mettendo
Encoding ascii = Encoding.ASCII;
byte[] data = ascii.GetBytes(originalText);


ma il secondo errore come lo supero?
Modificato da milaus1979 il 04 marzo 2005 08.48 -
milaus1979 ha scritto:
non esistono altre funzioni analoghe di conversione da string a byte[]?


non è questo il punto, quanto il fatto che lo script precedente cifra il dato usando poi base64, quindi se non lo decripta c'è un problema.

Informazioni aggiuntive: Exception decrypting. Decryption failed. Dati non validi.


il che mi fa pensare che la cifratura non va a buon fine.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
1 messaggio dal 13 marzo 2001
Anche io ho avuto i tuoi stessi problemi.............
Mi sono messo a cercare su internet è ho trovato gli stessi esempi, ma continuavo ad avere gli stessi problemi.
Alla fine con http://www.obviex.com/samples/dpapi.aspx sono riuscito a farlo funzionare, è un esempio da console ma con poche modifiche si porta in una pagina web.
se vuoi ti mando il codice

ciao
97 messaggi dal 04 ottobre 2004
Provo e ti faccio sapere
97 messaggi dal 04 ottobre 2004
Ho compilato la dll seguendo il codice che mi hai postato, ho successivamente creato una classe che ha 2 metodi:

string Cripta(string str);
string Decripta(string str);

che ho fatto per snellire un po' le chiamate.
Se faccio un windowsform con 2 bottoni che criptano e decriptano una stringa in un textbox, funziona correttamente, se tuttavia cerco di decriptare una chiave messa nel webconfig, dove tengo la stringa di connessione al DB mi da il seguente errore:


DPAPI was unable to decrypt data. CryptUnprotectData failed. Error -2146893813: Chiave non utilizzabile nello stato specificato.


e mi segnala la riga 53

{
Riga 52: string description;
Riga 53: return DPAPI.Decrypt(str,null, out description);
Riga 54: }


Cosa può essere?
Ciao Daniele
Modificato da milaus1979 il 08 marzo 2005 20.09 -
97 messaggi dal 04 ottobre 2004
Trovato!!! Semplicemente criptavo usando lo user anzichè la machine ossia usavo DPAPI.KeyType.UserKey anzichè DPAPI.KeyType.MachineKey

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.