Seperti judulnya, saya mendapatkan:
Panjang tidak valid untuk array karakter Base-64.
Saya telah membaca tentang masalah ini di sini dan sepertinya sarannya adalah untuk menyimpan ViewState dalam SQL jika ukurannya besar. Saya menggunakan wizard dengan banyak pengumpulan data sehingga kemungkinan ViewState saya besar. Tapi, sebelum saya beralih ke solusi "store-in-DB", mungkin seseorang dapat melihat dan memberi tahu saya jika saya memiliki pilihan lain?
Saya membuat email untuk pengiriman menggunakan metode di bawah ini:
public void SendEmailAddressVerificationEmail(string userName, string to)
{
string msg = "Please click on the link below or paste it into a browser to verify your email account.<BR><BR>" +
"<a href=\"" + _configuration.RootURL + "Accounts/VerifyEmail.aspx?a=" +
userName.Encrypt("verify") + "\">" +
_configuration.RootURL + "Accounts/VerifyEmail.aspx?a=" +
userName.Encrypt("verify") + "</a>";
SendEmail(to, "", "", "Account created! Email verification required.", msg);
}
Metode Enkripsi terlihat seperti ini:
public static string Encrypt(string clearText, string Password)
{
byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(clearText);
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
byte[] encryptedData = Encrypt(clearBytes, pdb.GetBytes(32), pdb.GetBytes(16));
return Convert.ToBase64String(encryptedData);
}
Inilah tampilan HTML di hotmail:
Silakan klik tautan di bawah ini atau tempelkan ke browser untuk memverifikasi akun email Anda.
Di sisi penerima, halaman VerifyEmail.aspx.cs memiliki baris:
string username = Cryptography.Decrypt(_webContext.UserNameToVerify, "verify");
Berikut adalah pengambil untuk UserNameToVerify:
public string UserNameToVerify
{
get
{
return GetQueryStringValue("a").ToString();
}
}
Dan inilah metode GetQueryStringValue:
private static string GetQueryStringValue(string key)
{
return HttpContext.Current.Request.QueryString.Get(key);
}
Dan metode dekripsi terlihat seperti:
public static string Decrypt(string cipherText, string password)
{
**// THE ERROR IS THROWN HERE!!**
byte[] cipherBytes = Convert.FromBase64String(cipherText);
Dapatkah kesalahan ini diatasi dengan perbaikan kode atau haruskah saya menyimpan Kondisi Tampilan dalam database?