Files
YarikStudio/AssetStudio/CryptoStream.cs
2023-01-06 22:33:59 +04:00

28 lines
681 B
C#

using System.IO;
namespace AssetStudio
{
public class CryptoStream : BlockStream
{
private const long _dataPosition = 0x2A;
private readonly byte[] _xorpad;
public CryptoStream(Stream stream, byte[] xorpad) : base(stream, _dataPosition)
{
_xorpad = xorpad;
}
public override int Read(byte[] buffer, int offset, int count)
{
var pos = RelativePosition;
var read = base.Read(buffer, offset, count);
for (int i = 0; i < count; i++)
{
buffer[i] ^= _xorpad[pos++ % _xorpad.Length];
}
return read;
}
}
}