状況を説明してください。私のコードでは、登録が完了した後に生成されるstringに変換されたuseridを暗号化しています。 ecrypted文字列は以下のようにurlパラメータとして渡されます。UrlEncodeは+シンボルをエンコードしていませんが、フォーマット例外の復号中です
string ConfirmCode = string.Empty;
Common.Secure.Security mySec = new Common.Secure.Security();
ConfirmCode = mySec.Encrypt(myMember.MemberID.ToString());
string EmailValidationLink = "<a href=\'" + pageScheme + "://" + CurrentDomain.HostName + "/Contents/Common/" + "EN" + "/" + CurrentDomain.EmailValidationPage + "?ConfirmCode=" + **UrlEncode(ConfirmCode)** + "\'>Click here to validate your account.</a>";
そして:
私は暗号化された文字列を渡すためにURLENCODEを使用していますが、解読が、私は書式の例外を取得していながら、暗号化されたテキストは、「+」記号を持っている場合、問題がありますなぜなら、この '+'記号はスペースとして扱われるからです。
たとえば、暗号化されたテキストが 'S7 + 5tZzTm0k ='のようなものである場合、+シンボルは 'S7 5tZzTm0k ='と解釈され、フォーマット例外が発生します。
私の暗号化と復号化コードが
public string Decrypt(string Text)
{
if (!ENABLED) return Text;
des.Key = hashmd5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(myKey));
des.Mode = CipherMode.ECB;
ICryptoTransform desdencrypt = des.CreateDecryptor();
Byte[] buff = Convert.FromBase64String(Text);
return ASCIIEncoding.ASCII.GetString(desdencrypt.TransformFinalBlock(buff, 0, buff.Length));
}
public string Encrypt(string Text)
{
if (!ENABLED) return Text;
des.Key = hashmd5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(myKey));
des.Mode = CipherMode.ECB;
ICryptoTransform desdencrypt = des.CreateEncryptor();
ASCIIEncoding MyASCIIEncoding = new ASCIIEncoding();
Byte[] buff = ASCIIEncoding.ASCII.GetBytes(Text);
return Convert.ToBase64String(desdencrypt.TransformFinalBlock(buff, 0, buff.Length));
}
以下のように私はこれについてグーグルでされていて、誰もがURLENCODEを使用して問題を解決するだろうことを示唆しているが、私の場合にも、使用した後、それが問題を解決していません。
どうすればいいですか?
if (Request.QueryString["ConfirmCode"] != null)
{
bool isAccountSuspended;
isAccountSuspended = AccountManagement.AcountManager.EmailValidationNote(HttpContext.Current.Server.UrlDecode(Request.QueryString["ConfirmCode"]));
if (!isAccountSuspended)
{
lblMessage.Text = "Your account is already suspended. Please contact customer service.";
lblMessage.ForeColor = System.Drawing.Color.Red;
}
else
{
lblMessage.Text = "Thank you for verifying your email address. We hope you’ll enjoy playing with us.";
}
}
よろしく Srividhya
あなたは 'UrlEncode'のコードを投稿できますか? – Oded
あなたの 'UrlEncode'メソッドは' HttpUtility.UrlEncode'を呼び出していますか? 'HttpUtility.Url * Decode *'メソッドは '+'を ''に置き換えますが、 'HttpUtility.UrlEncode'は使用しないでください。 – drf
実際、.NET Frameworkライブラリの標準UrlEncodeメソッドを使用していますか?もしそうでなければ、あなたはすべきです。 –