scripts
This commit is contained in:
@@ -0,0 +1,257 @@
|
||||
using System;
|
||||
|
||||
namespace System.Security.Cryptography
|
||||
{
|
||||
// Token: 0x0200052B RID: 1323
|
||||
internal class SHA1Internal
|
||||
{
|
||||
// Token: 0x0600308D RID: 12429 RVA: 0x000A5E70 File Offset: 0x000A4070
|
||||
public SHA1Internal()
|
||||
{
|
||||
this._H = new uint[5];
|
||||
this._ProcessingBuffer = new byte[64];
|
||||
this.buff = new uint[80];
|
||||
this.Initialize();
|
||||
}
|
||||
|
||||
// Token: 0x0600308E RID: 12430 RVA: 0x000A5EB0 File Offset: 0x000A40B0
|
||||
public void HashCore(byte[] rgb, int ibStart, int cbSize)
|
||||
{
|
||||
if (this._ProcessingBufferCount != 0)
|
||||
{
|
||||
if (cbSize < 64 - this._ProcessingBufferCount)
|
||||
{
|
||||
Buffer.BlockCopy(rgb, ibStart, this._ProcessingBuffer, this._ProcessingBufferCount, cbSize);
|
||||
this._ProcessingBufferCount += cbSize;
|
||||
return;
|
||||
}
|
||||
int i = 64 - this._ProcessingBufferCount;
|
||||
Buffer.BlockCopy(rgb, ibStart, this._ProcessingBuffer, this._ProcessingBufferCount, i);
|
||||
this.ProcessBlock(this._ProcessingBuffer, 0U);
|
||||
this._ProcessingBufferCount = 0;
|
||||
ibStart += i;
|
||||
cbSize -= i;
|
||||
}
|
||||
for (int i = 0; i < cbSize - cbSize % 64; i += 64)
|
||||
{
|
||||
this.ProcessBlock(rgb, (uint)(ibStart + i));
|
||||
}
|
||||
if (cbSize % 64 != 0)
|
||||
{
|
||||
Buffer.BlockCopy(rgb, cbSize - cbSize % 64 + ibStart, this._ProcessingBuffer, 0, cbSize % 64);
|
||||
this._ProcessingBufferCount = cbSize % 64;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x0600308F RID: 12431 RVA: 0x000A5F84 File Offset: 0x000A4184
|
||||
public byte[] HashFinal()
|
||||
{
|
||||
byte[] array = new byte[20];
|
||||
this.ProcessFinalBlock(this._ProcessingBuffer, 0, this._ProcessingBufferCount);
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
for (int j = 0; j < 4; j++)
|
||||
{
|
||||
array[i * 4 + j] = (byte)(this._H[i] >> 8 * (3 - j));
|
||||
}
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
// Token: 0x06003090 RID: 12432 RVA: 0x000A5FEC File Offset: 0x000A41EC
|
||||
public void Initialize()
|
||||
{
|
||||
this.count = 0UL;
|
||||
this._ProcessingBufferCount = 0;
|
||||
this._H[0] = 1732584193U;
|
||||
this._H[1] = 4023233417U;
|
||||
this._H[2] = 2562383102U;
|
||||
this._H[3] = 271733878U;
|
||||
this._H[4] = 3285377520U;
|
||||
}
|
||||
|
||||
// Token: 0x06003091 RID: 12433 RVA: 0x000A604C File Offset: 0x000A424C
|
||||
private void ProcessBlock(byte[] inputBuffer, uint inputOffset)
|
||||
{
|
||||
this.count += 64UL;
|
||||
uint[] h = this._H;
|
||||
uint[] array = this.buff;
|
||||
SHA1Internal.InitialiseBuff(array, inputBuffer, inputOffset);
|
||||
SHA1Internal.FillBuff(array);
|
||||
uint num = h[0];
|
||||
uint num2 = h[1];
|
||||
uint num3 = h[2];
|
||||
uint num4 = h[3];
|
||||
uint num5 = h[4];
|
||||
int i;
|
||||
for (i = 0; i < 20; i += 5)
|
||||
{
|
||||
num5 += ((num << 5) | (num >> 27)) + (((num3 ^ num4) & num2) ^ num4) + 1518500249U + array[i];
|
||||
num2 = (num2 << 30) | (num2 >> 2);
|
||||
num4 += ((num5 << 5) | (num5 >> 27)) + (((num2 ^ num3) & num) ^ num3) + 1518500249U + array[i + 1];
|
||||
num = (num << 30) | (num >> 2);
|
||||
num3 += ((num4 << 5) | (num4 >> 27)) + (((num ^ num2) & num5) ^ num2) + 1518500249U + array[i + 2];
|
||||
num5 = (num5 << 30) | (num5 >> 2);
|
||||
num2 += ((num3 << 5) | (num3 >> 27)) + (((num5 ^ num) & num4) ^ num) + 1518500249U + array[i + 3];
|
||||
num4 = (num4 << 30) | (num4 >> 2);
|
||||
num += ((num2 << 5) | (num2 >> 27)) + (((num4 ^ num5) & num3) ^ num5) + 1518500249U + array[i + 4];
|
||||
num3 = (num3 << 30) | (num3 >> 2);
|
||||
}
|
||||
while (i < 40)
|
||||
{
|
||||
num5 += ((num << 5) | (num >> 27)) + (num2 ^ num3 ^ num4) + 1859775393U + array[i];
|
||||
num2 = (num2 << 30) | (num2 >> 2);
|
||||
num4 += ((num5 << 5) | (num5 >> 27)) + (num ^ num2 ^ num3) + 1859775393U + array[i + 1];
|
||||
num = (num << 30) | (num >> 2);
|
||||
num3 += ((num4 << 5) | (num4 >> 27)) + (num5 ^ num ^ num2) + 1859775393U + array[i + 2];
|
||||
num5 = (num5 << 30) | (num5 >> 2);
|
||||
num2 += ((num3 << 5) | (num3 >> 27)) + (num4 ^ num5 ^ num) + 1859775393U + array[i + 3];
|
||||
num4 = (num4 << 30) | (num4 >> 2);
|
||||
num += ((num2 << 5) | (num2 >> 27)) + (num3 ^ num4 ^ num5) + 1859775393U + array[i + 4];
|
||||
num3 = (num3 << 30) | (num3 >> 2);
|
||||
i += 5;
|
||||
}
|
||||
while (i < 60)
|
||||
{
|
||||
num5 += ((num << 5) | (num >> 27)) + ((num2 & num3) | (num2 & num4) | (num3 & num4)) + 2400959708U + array[i];
|
||||
num2 = (num2 << 30) | (num2 >> 2);
|
||||
num4 += ((num5 << 5) | (num5 >> 27)) + ((num & num2) | (num & num3) | (num2 & num3)) + 2400959708U + array[i + 1];
|
||||
num = (num << 30) | (num >> 2);
|
||||
num3 += ((num4 << 5) | (num4 >> 27)) + ((num5 & num) | (num5 & num2) | (num & num2)) + 2400959708U + array[i + 2];
|
||||
num5 = (num5 << 30) | (num5 >> 2);
|
||||
num2 += ((num3 << 5) | (num3 >> 27)) + ((num4 & num5) | (num4 & num) | (num5 & num)) + 2400959708U + array[i + 3];
|
||||
num4 = (num4 << 30) | (num4 >> 2);
|
||||
num += ((num2 << 5) | (num2 >> 27)) + ((num3 & num4) | (num3 & num5) | (num4 & num5)) + 2400959708U + array[i + 4];
|
||||
num3 = (num3 << 30) | (num3 >> 2);
|
||||
i += 5;
|
||||
}
|
||||
while (i < 80)
|
||||
{
|
||||
num5 += ((num << 5) | (num >> 27)) + (num2 ^ num3 ^ num4) + 3395469782U + array[i];
|
||||
num2 = (num2 << 30) | (num2 >> 2);
|
||||
num4 += ((num5 << 5) | (num5 >> 27)) + (num ^ num2 ^ num3) + 3395469782U + array[i + 1];
|
||||
num = (num << 30) | (num >> 2);
|
||||
num3 += ((num4 << 5) | (num4 >> 27)) + (num5 ^ num ^ num2) + 3395469782U + array[i + 2];
|
||||
num5 = (num5 << 30) | (num5 >> 2);
|
||||
num2 += ((num3 << 5) | (num3 >> 27)) + (num4 ^ num5 ^ num) + 3395469782U + array[i + 3];
|
||||
num4 = (num4 << 30) | (num4 >> 2);
|
||||
num += ((num2 << 5) | (num2 >> 27)) + (num3 ^ num4 ^ num5) + 3395469782U + array[i + 4];
|
||||
num3 = (num3 << 30) | (num3 >> 2);
|
||||
i += 5;
|
||||
}
|
||||
h[0] += num;
|
||||
h[1] += num2;
|
||||
h[2] += num3;
|
||||
h[3] += num4;
|
||||
h[4] += num5;
|
||||
}
|
||||
|
||||
// Token: 0x06003092 RID: 12434 RVA: 0x000A64A4 File Offset: 0x000A46A4
|
||||
private static void InitialiseBuff(uint[] buff, byte[] input, uint inputOffset)
|
||||
{
|
||||
buff[0] = (uint)(((int)input[(int)((UIntPtr)inputOffset)] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 1U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 2U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 3U))]);
|
||||
buff[1] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 4U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 5U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 6U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 7U))]);
|
||||
buff[2] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 8U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 9U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 10U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 11U))]);
|
||||
buff[3] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 12U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 13U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 14U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 15U))]);
|
||||
buff[4] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 16U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 17U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 18U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 19U))]);
|
||||
buff[5] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 20U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 21U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 22U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 23U))]);
|
||||
buff[6] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 24U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 25U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 26U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 27U))]);
|
||||
buff[7] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 28U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 29U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 30U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 31U))]);
|
||||
buff[8] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 32U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 33U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 34U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 35U))]);
|
||||
buff[9] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 36U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 37U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 38U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 39U))]);
|
||||
buff[10] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 40U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 41U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 42U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 43U))]);
|
||||
buff[11] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 44U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 45U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 46U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 47U))]);
|
||||
buff[12] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 48U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 49U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 50U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 51U))]);
|
||||
buff[13] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 52U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 53U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 54U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 55U))]);
|
||||
buff[14] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 56U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 57U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 58U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 59U))]);
|
||||
buff[15] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 60U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 61U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 62U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 63U))]);
|
||||
}
|
||||
|
||||
// Token: 0x06003093 RID: 12435 RVA: 0x000A6750 File Offset: 0x000A4950
|
||||
private static void FillBuff(uint[] buff)
|
||||
{
|
||||
for (int i = 16; i < 80; i += 8)
|
||||
{
|
||||
uint num = buff[i - 3] ^ buff[i - 8] ^ buff[i - 14] ^ buff[i - 16];
|
||||
buff[i] = (num << 1) | (num >> 31);
|
||||
num = buff[i - 2] ^ buff[i - 7] ^ buff[i - 13] ^ buff[i - 15];
|
||||
buff[i + 1] = (num << 1) | (num >> 31);
|
||||
num = buff[i - 1] ^ buff[i - 6] ^ buff[i - 12] ^ buff[i - 14];
|
||||
buff[i + 2] = (num << 1) | (num >> 31);
|
||||
num = buff[i] ^ buff[i - 5] ^ buff[i - 11] ^ buff[i - 13];
|
||||
buff[i + 3] = (num << 1) | (num >> 31);
|
||||
num = buff[i + 1] ^ buff[i - 4] ^ buff[i - 10] ^ buff[i - 12];
|
||||
buff[i + 4] = (num << 1) | (num >> 31);
|
||||
num = buff[i + 2] ^ buff[i - 3] ^ buff[i - 9] ^ buff[i - 11];
|
||||
buff[i + 5] = (num << 1) | (num >> 31);
|
||||
num = buff[i + 3] ^ buff[i - 2] ^ buff[i - 8] ^ buff[i - 10];
|
||||
buff[i + 6] = (num << 1) | (num >> 31);
|
||||
num = buff[i + 4] ^ buff[i - 1] ^ buff[i - 7] ^ buff[i - 9];
|
||||
buff[i + 7] = (num << 1) | (num >> 31);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06003094 RID: 12436 RVA: 0x000A68A4 File Offset: 0x000A4AA4
|
||||
private void ProcessFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
|
||||
{
|
||||
ulong num = this.count + (ulong)((long)inputCount);
|
||||
int num2 = 56 - (int)(num % 64UL);
|
||||
if (num2 < 1)
|
||||
{
|
||||
num2 += 64;
|
||||
}
|
||||
int num3 = inputCount + num2 + 8;
|
||||
byte[] array = ((num3 != 64) ? new byte[num3] : this._ProcessingBuffer);
|
||||
for (int i = 0; i < inputCount; i++)
|
||||
{
|
||||
array[i] = inputBuffer[i + inputOffset];
|
||||
}
|
||||
array[inputCount] = 128;
|
||||
for (int j = inputCount + 1; j < inputCount + num2; j++)
|
||||
{
|
||||
array[j] = 0;
|
||||
}
|
||||
ulong num4 = num << 3;
|
||||
this.AddLength(num4, array, inputCount + num2);
|
||||
this.ProcessBlock(array, 0U);
|
||||
if (num3 == 128)
|
||||
{
|
||||
this.ProcessBlock(array, 64U);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06003095 RID: 12437 RVA: 0x000A6968 File Offset: 0x000A4B68
|
||||
internal void AddLength(ulong length, byte[] buffer, int position)
|
||||
{
|
||||
buffer[position++] = (byte)(length >> 56);
|
||||
buffer[position++] = (byte)(length >> 48);
|
||||
buffer[position++] = (byte)(length >> 40);
|
||||
buffer[position++] = (byte)(length >> 32);
|
||||
buffer[position++] = (byte)(length >> 24);
|
||||
buffer[position++] = (byte)(length >> 16);
|
||||
buffer[position++] = (byte)(length >> 8);
|
||||
buffer[position] = (byte)length;
|
||||
}
|
||||
|
||||
// Token: 0x040013C7 RID: 5063
|
||||
private const int BLOCK_SIZE_BYTES = 64;
|
||||
|
||||
// Token: 0x040013C8 RID: 5064
|
||||
private const int HASH_SIZE_BYTES = 20;
|
||||
|
||||
// Token: 0x040013C9 RID: 5065
|
||||
private uint[] _H;
|
||||
|
||||
// Token: 0x040013CA RID: 5066
|
||||
private ulong count;
|
||||
|
||||
// Token: 0x040013CB RID: 5067
|
||||
private byte[] _ProcessingBuffer;
|
||||
|
||||
// Token: 0x040013CC RID: 5068
|
||||
private int _ProcessingBufferCount;
|
||||
|
||||
// Token: 0x040013CD RID: 5069
|
||||
private uint[] buff;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user