D: affrontare il seguente grosso problema:lunghezza non valida per una base 64 char durante la decodifica/decrittografia
di volta in un'altra trovo l'eccezione seguente:
lunghezza non valida per un Base- 64 array di caratteri
io uso di crittografia e decrittografia:
public static string Encrypt(string text)
{
try
{
key = Encoding.UTF8.GetBytes(stringKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
Byte[] byteArray = Encoding.UTF8.GetBytes(text);
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream,des.CreateEncryptor(key, IV), CryptoStreamMode.Write);
cryptoStream.Write(byteArray, 0, byteArray.Length);
cryptoStream.FlushFinalBlock();
return Convert.ToBase64String(memoryStream.ToArray());
}
catch (Exception ex)
{
string message = ex.Message;
}
return string.Empty;
}
public static string Decrypt(string text)
{
try
{
key = Encoding.UTF8.GetBytes(stringKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
text = text.Replace(" ", "+")
Byte[] byteArray = Convert.FromBase64String(text);
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream,
des.CreateDecryptor(key, IV), CryptoStreamMode.Write);
cryptoStream.Write(byteArray, 0, byteArray.Length);
cryptoStream.FlushFinalBlock();
return Encoding.UTF8.GetString(memoryStream.ToArray());
}
catch (Exception ex)
{
string message = ex.Message;
}
ho letto molti articoli sul problema alcuni post che parlano la soluzione è:
text = text.Replace(" ", "+")
e questo non risolve il mio problema a tutti
mia stringa è: 3DZF/NZpp0yuQ=3D
favore ho bisogno di aiuto per risolvere questo problema.
EDIT
- Se ci sono eventuali modifiche o miglioramenti a questa classe per renderlo lavoro migliore o più sicuro o evitare eventuali problemi come questo, i sarà grato.
- Se ci sono classi alternative invece di questo, più protetto e non si rendono questi problemi , sarò grato.
- Io uso questa classe in una piccola applicazione utilizzata per verificare la posta.
EDIT:
Decoding the querystring values is done already when it's parsed into the Request.
https://stackoverflow.com/a/10879400/418343
Un problema comune consiste nel rimuovere in modo errato il riempimento (segni di uguale lunghezza) dalla fine di una stringa. Nel tuo caso "= 3d" è probabile che sia semplicemente "=" o forse "==" – EricLaw
Non risponde alla tua domanda, ma questo è un modo davvero pessimo di crittografia - sembra che tu stia facendo la stessa cosa di gawker . Stai usando solo i primi 8 caratteri come chiave e usando DES (uno standard di crittografia obsoleto) Vedi http://www.codinghorror.com/blog/2010/12/the-dirty-truth-about-web-passwords. html –
Una nota a margine: 'Encoding.UTF8.GetBytes' è un modo molto brutto e pericoloso per ottenere una chiave da una password. –