【问题标题】:Unicode decodes differently from the encoded textUnicode 与编码文本的解码方式不同
【发布时间】:2011-04-25 16:54:35
【问题描述】:

我有数据被加密并发送到另一个页面,在那里它被解码和解释。 使用 System.Text.Encoding.Unicode.GetString() 将数据散列为 unicode,然后加密,然后编码为 Base64 字符串并通过 URL 发送,然后接收站点将其从 Base64 中取出并再次解密,然后使用 System.Text.Encoding.Unicode.GetBytes() 再次返回字节。

但是,我得到的单个字符与发送它的方式不同。它“看起来”是一样的,就像一个'�'。然后将此字符串解密为字节,但计算方式不同。

编码时,unicode 字符占用两个字节——这个字符被编码为这些字节:

[0]: 139
[1]: 222 

但被解码为

[0]: 253
[1]: 255

所有其他字符都被正确地转换成加密和退出加密,它们的字节转换保持不变。

这个字符是特例吗?有没有其他角色会产生同样的效果?加密有问题吗?

【问题讨论】:

    标签: asp.net encryption unicode base64


    【解决方案1】:

    在这种情况下,您根本不应该使用文本编码。将原始数据直接加密为字节数组,然后将其编码为 base64 字符串,然后将其解码为字节数组,并解密原始字节。唯一的字符串是 base64 字符串。不要在加密/解密阶段使用中间字符串。

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 2019-12-19
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多