[TestMethod()]
public void CatGame3Test()
{
CatAndMouseGame decryptor = new(CatAndMouseGame.FileType.CN);
var test = "abcd";
var enc = decryptor.CatGame3(test);
var dec = decryptor.MouseGame3(enc);
Assert.AreEqual(test, dec);
}
对照解密方式,改了一下压缩资源的加密为先压缩后加密,然后正常
public byte[] CatHomeMain(byte[] data, byte[] home, byte[] info, bool isCompress = false)
{
byte[] result = null;
try
{
if (isCompress)
{
using (MemoryStream inStream = new MemoryStream(data))
{
using (MemoryStream outStream = new MemoryStream())
{
if (fileType == FileType.CN)
{
BZip2.Compress(inStream, outStream, true, -9);
}
else
{
GZip.Compress(inStream, outStream, true);
}
data = outStream.ToArray();
}
}
}
var blockCipher = new CbcBlockCipher(new RijndaelEngine(256));
var cipher = new PaddedBufferedBlockCipher(blockCipher, new Pkcs7Padding());
var keyParam = new KeyParameter(home);
var keyParamWithIV = new ParametersWithIV(keyParam, info, 0, 32);
cipher.Init(true, keyParamWithIV);
var buffer = new byte[cipher.GetOutputSize(data.Length)];
var length = cipher.ProcessBytes(data, buffer, 0);
cipher.DoFinal(buffer, length);
result = buffer;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
result = null;
}
return result;
}
不是很确定,所以没有直接pr
自测时,发现单元测试不通过
对照解密方式,改了一下压缩资源的加密为先压缩后加密,然后正常
这个方法应该是主要用在文本替换那,是日服是和国服不一样?