mirror of
https://github.com/crskycode/GARbro.git
synced 2024-11-27 07:34:00 +08:00
(NotTransform, XorTransform): derive from ByteTransform abstract class.
This commit is contained in:
parent
e1a0cca0fd
commit
fddee82ab6
@ -28,17 +28,40 @@ using System.Security.Cryptography;
|
|||||||
|
|
||||||
namespace GameRes.Formats
|
namespace GameRes.Formats
|
||||||
{
|
{
|
||||||
public sealed class NotTransform : ICryptoTransform
|
public abstract class ByteTransform : ICryptoTransform
|
||||||
{
|
{
|
||||||
private const int BlockSize = 1;
|
const int BlockSize = 1;
|
||||||
|
|
||||||
public bool CanReuseTransform { get { return true; } }
|
public bool CanReuseTransform { get { return true; } }
|
||||||
public bool CanTransformMultipleBlocks { get { return true; } }
|
public bool CanTransformMultipleBlocks { get { return true; } }
|
||||||
public int InputBlockSize { get { return BlockSize; } }
|
public int InputBlockSize { get { return BlockSize; } }
|
||||||
public int OutputBlockSize { get { return BlockSize; } }
|
public int OutputBlockSize { get { return BlockSize; } }
|
||||||
|
|
||||||
public int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount,
|
public abstract int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount,
|
||||||
byte[] outputBuffer, int outputOffset)
|
byte[] outputBuffer, int outputOffset);
|
||||||
|
|
||||||
|
public byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount)
|
||||||
|
{
|
||||||
|
byte[] outputBuffer = new byte[inputCount];
|
||||||
|
TransformBlock (inputBuffer, inputOffset, inputCount, outputBuffer, 0);
|
||||||
|
return outputBuffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose ()
|
||||||
|
{
|
||||||
|
Dispose (true);
|
||||||
|
System.GC.SuppressFinalize (this);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void Dispose (bool disposing)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class NotTransform : ByteTransform
|
||||||
|
{
|
||||||
|
public override int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount,
|
||||||
|
byte[] outputBuffer, int outputOffset)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < inputCount; ++i)
|
for (int i = 0; i < inputCount; ++i)
|
||||||
{
|
{
|
||||||
@ -46,37 +69,19 @@ namespace GameRes.Formats
|
|||||||
}
|
}
|
||||||
return inputCount;
|
return inputCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount)
|
|
||||||
{
|
|
||||||
byte[] outputBuffer = new byte[inputCount];
|
|
||||||
TransformBlock (inputBuffer, inputOffset, inputCount, outputBuffer, 0);
|
|
||||||
return outputBuffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose ()
|
|
||||||
{
|
|
||||||
System.GC.SuppressFinalize (this);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class XorTransform : ICryptoTransform
|
public sealed class XorTransform : ByteTransform
|
||||||
{
|
{
|
||||||
private const int BlockSize = 1;
|
|
||||||
private byte m_key;
|
private byte m_key;
|
||||||
|
|
||||||
public bool CanReuseTransform { get { return true; } }
|
|
||||||
public bool CanTransformMultipleBlocks { get { return true; } }
|
|
||||||
public int InputBlockSize { get { return BlockSize; } }
|
|
||||||
public int OutputBlockSize { get { return BlockSize; } }
|
|
||||||
|
|
||||||
public XorTransform (byte key)
|
public XorTransform (byte key)
|
||||||
{
|
{
|
||||||
m_key = key;
|
m_key = key;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount,
|
public override int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount,
|
||||||
byte[] outputBuffer, int outputOffset)
|
byte[] outputBuffer, int outputOffset)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < inputCount; ++i)
|
for (int i = 0; i < inputCount; ++i)
|
||||||
{
|
{
|
||||||
@ -84,18 +89,6 @@ namespace GameRes.Formats
|
|||||||
}
|
}
|
||||||
return inputCount;
|
return inputCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount)
|
|
||||||
{
|
|
||||||
byte[] outputBuffer = new byte[inputCount];
|
|
||||||
TransformBlock (inputBuffer, inputOffset, inputCount, outputBuffer, 0);
|
|
||||||
return outputBuffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose ()
|
|
||||||
{
|
|
||||||
System.GC.SuppressFinalize (this);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ByteStringEncryptedStream : InputProxyStream
|
public class ByteStringEncryptedStream : InputProxyStream
|
||||||
|
Loading…
Reference in New Issue
Block a user