我必須以加密格式將密碼字段存儲在SQL Server數據庫中,並且我必須在用戶登錄系統時解密它。加密部分工作正常。但我解密部分的錯誤爲「無效長度爲Base-64字符數組」在行密碼解密中的錯誤
byte[] todecode_byte = Convert.FromBase64String(encryptpwd);
的解密模塊。
private string Encryptdata(string password)
{
string encryptpwd = string.Empty;
byte[] encode = new byte[password.Length];
encode = Encoding.UTF8.GetBytes(password);
encryptpwd = Convert.ToBase64String(encode);
return encryptpwd;
}
private string Decryptdata(string encryptpwd)
{
string decryptpwd = string.Empty;
UTF8Encoding encodepwd = new UTF8Encoding();
Decoder Decode = encodepwd.GetDecoder();
byte[] todecode_byte = Convert.FromBase64String(encryptpwd); //here I am getting error as "Invalid length for a Base-64 char array"
int charCount = Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);
char[] decoded_char = new char[charCount];
Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);
decryptpwd = new String(decoded_char);
return decryptpwd;
}
輸入數據:prabu
加密數據:cHJhYnU=
你是不是加密在所有...編碼是隻是ANSI/UTF8/...表示。 –
而這段代碼運行良好。沒有錯誤。你確定你用「cHJhYnU =」參數調用Decryptdata方法嗎? –
我建議你看一下密碼的[單向哈希](http://en.wikipedia.org/wiki/Cryptographic_hash_function#Password_verification),讓代碼能夠解密密碼,這樣攻擊者也可以這麼做。 –