在Page1.aspx中,我有
byte[] byt = System.Text.Encoding.UTF8.GetBytes(TextBox1.Text);
Response.Redirect("Page2.aspx?BytArray=" + byt,false);
Run Code Online (Sandbox Code Playgroud)
TextBox1的值是"mnop".
现在在Page2.aspx我有以下代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var byteArray = System.Text.Encoding.UTF8.GetBytes(Request.QueryString["BytArray"]);
var x1 = System.Convert.ToBase64String(byteArray, 0, byteArray.Length);
var x2 = Encoding.UTF8.GetString(byteArray);
}
}
Run Code Online (Sandbox Code Playgroud)
x1输出是U3lzdGVtLkJ5dGVbXQ ==
x2输出是System.Byte []
但是如何让"mnop"回归?我错过了什么?
甚至C#:我如何安全地将字节数组转换为字符串并返回?给出了答案为U3lzdGVtLkJ5dGVbXQ ==
谢谢.
Dar*_*rov 10
您不能将原始字节作为查询字符串发送.请尝试使用Base64编码:
byte[] byt = System.Text.Encoding.UTF8.GetBytes(TextBox1.Text);
string encoded = HttpUtility.UrlEncode(Convert.ToBase64String(byt));
Response.Redirect("Page2.aspx?BytArray=" + encoded, false);
Run Code Online (Sandbox Code Playgroud)
然后检索回来:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
byte[] byteArray = Convert.FromBase64String(Request.QueryString["BytArray"]);
string value = System.Text.Encoding.UTF8.GetString(byteArray);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当你可以直接发送文本框的字符串值(当然是在url编码之后)时,我真的没有看到转换为字节数组的整个练习的重点.如果这是一种隐藏用户真实价值的方式,我希望你很清楚Base64不是加密,而是编码.
| 归档时间: |
|
| 查看次数: |
18346 次 |
| 最近记录: |