-1
私はbase64を使用して文字列を暗号化および復号化しようとしていますが、文字列を復号化しようとしています。c#base64 encrpytion。 decrpytionで無効な長さのエラー
私が受信していますエラーがある:
{にSystem.FormatException:ベース64 char配列または文字列の長さが無効です。
MemoryStream ms = new MemoryStream(Convert.FromBase64String(inString));
Encrpyt /復号化機能:以下復号化機能で、この行で
//ENCRYPT
public static bool stringEncrypt(string inString,ref string outstring)
{
try
{
if(String.IsNullOrEmpty(inString)){return false;}
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms,provider.CreateEncryptor(PWbytes,PWbytes),CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cs);
sw.Write(inString);
sw.Flush();
cs.FlushFinalBlock();
sw.Flush();
outstring = Convert.ToBase64String(ms.GetBuffer(),0,(int)ms.Length);
return true;
}
catch(Exception ex)
{
clsCommonBase.AppendToExceptionFile("Encrypt : " + ex.Message);
return false;
}
}
//DECRPYT
public static bool stringDecrypt(string inString,ref string outstring)
{
try
{
if(String.IsNullOrEmpty(inString)){return false;};
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(Convert.FromBase64String(inString));
CryptoStream cs = new CryptoStream(ms, provider.CreateDecryptor(PWbytes,PWbytes),CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cs);
outstring = sr.ReadToEnd();
return true;
}
catch(Exception ex)
{
clsCommonBase.AppendToExceptionFile("Decrypt : " + ex.Message);
return false;
}
}
}
さて、あなたはあなたが渡している文字列を検討してきましたか?おそらくそれは有効なbase64ではありません...私の推測では、以前の 'passwordEncrypt'呼び出しの結果ではないということです。 (私はあなたの例外処理を再訪することを強く勧めます、btw ...これはC#の例外を処理する慣習的な方法ではありません) –
https://stackoverflow.com/questions/11743160/how-do-i-encode -and-decode-a-base64-string –
[mcve]と暗号化/復号化しようとしている文字列を投稿してください。 –