解码ByteArray的结果.readUTFBytes麻烦

本文关键字:readUTFBytes 麻烦 结果 ByteArray 解码 | 更新日期: 2023-09-27 18:05:21

我创建了在线flash游戏,并使用RC4加密技术将游戏结果传输到游戏服务器I。

var resultBytes:ByteArray = new ByteArray();
resultBytes.writeUTFBytes(rawData);
rc4.encrypt(resultBytes);
resultBytes.position = 0;
var toServer:String = resultBytes.readUTFBytes(resultBytes.length);

在服务器端工作c# ASP。具有相同代码的Net服务

byte[] resultBytes = Encoding.UTF8.GetBytes(requestData);

和AS3 toServer字符串等价С# requestData,但AS3 resultBytes不等价c# resultBytes。我无法解密请求数据。

我认为在flash和c#上不同的编码规则的麻烦,但如何使它正确工作?

解码ByteArray的结果.readUTFBytes麻烦

如何将请求数据传递给服务器,调用GetBytes将只给您传入字符串的字节数组,不清楚requestData包含什么

尽管做了所有的努力,我还是不明白AS3 ByteArray之间的区别。readUTFBytes和c# Encoding.UTF8.GetBytes(requestData),以及如何解决这个问题。

结果我写在客户端

var toServer:String = "";
for (var a:int = 0; a < resultBytes.length; a++) {
  toServer+= resultBytes[a].toString() + ",";           
}

和服务器

string[] splited = requestData.Split(',');
byte[] resultBytes = new byte[splited.Length];
for (int a = 0; a < splited.Length; a++)
{
  if (splited[a] == String.Empty)
        continue;
  resultBytes[a] = byte.Parse(splited[a], System.Globalization.NumberStyles.Integer);
}

这种方法允许在服务器上获得相同的字节数组进行解密。