vs2003和2010 UNICODE字体编码格式不一样?

时间:2022-02-23 18:35:39
03中通过UnicodeEncoding的GetString方法将一组签名后的byte[],转成string,然后服务端通过UnicodeEncoding的GetBytes将string转成byte[],进行验证没问题;
同样在2010中,服务端同样方将string转成byte[],和签名后没有通过UnicodeEncoding的GetString转成string之前的byte[]不一致,导致验证一直不通过,什么原因呢?
framework1.0和2.0之后的Unicode编码不是一个东西吗?

4 个解决方案

#1


byte[]转Unicode(UTF-16)是不安全的,原因是有些byte组合不是合法的字符。
byte[]转字符串要用 Convert.ToBase64String和Convert.FromBase64String.

#2


引用 1 楼 gomoku 的回复:
byte[]转Unicode(UTF-16)是不安全的,原因是有些byte组合不是合法的字符。
byte[]转字符串要用 Convert.ToBase64String和Convert.FromBase64String.

多谢!按你的方法可以了。03和10都可以通过。
奇怪为什么03转Unicode和byte[]转没问题,到了2010就一直通不过呢?

#3


引用 楼主 jdcj413 的回复:
03中通过UnicodeEncoding的GetString方法将一组签名后的byte[],转成string,然后服务端通过UnicodeEncoding的GetBytes将string转成byte[],进行验证没问题;
同样在2010中,服务端同样方将string转成byte[],和签名后没有通过UnicodeEncoding的GetString转成string之前的byte[]不一致,导致验证一直不通过,什么原因呢?
framework1.0和2.0之后的Unicode编码不是一个东西吗?

因为现在没法更新服务端,还是UNICODE转byte[],如果能找到2010转换有问题的具体原因然后有没有其他办法解决呢

#4


该回复于2013-11-01 15:56:54被管理员删除

#1


byte[]转Unicode(UTF-16)是不安全的,原因是有些byte组合不是合法的字符。
byte[]转字符串要用 Convert.ToBase64String和Convert.FromBase64String.

#2


引用 1 楼 gomoku 的回复:
byte[]转Unicode(UTF-16)是不安全的,原因是有些byte组合不是合法的字符。
byte[]转字符串要用 Convert.ToBase64String和Convert.FromBase64String.

多谢!按你的方法可以了。03和10都可以通过。
奇怪为什么03转Unicode和byte[]转没问题,到了2010就一直通不过呢?

#3


引用 楼主 jdcj413 的回复:
03中通过UnicodeEncoding的GetString方法将一组签名后的byte[],转成string,然后服务端通过UnicodeEncoding的GetBytes将string转成byte[],进行验证没问题;
同样在2010中,服务端同样方将string转成byte[],和签名后没有通过UnicodeEncoding的GetString转成string之前的byte[]不一致,导致验证一直不通过,什么原因呢?
framework1.0和2.0之后的Unicode编码不是一个东西吗?

因为现在没法更新服务端,还是UNICODE转byte[],如果能找到2010转换有问题的具体原因然后有没有其他办法解决呢

#4


该回复于2013-11-01 15:56:54被管理员删除