2011-06-07, 12:52
#1

//Få input //Leta efter orden encryp/decrypt //Fråga efter lösenord //Skriv ut det krypterade/okrypterade //Vice versa



Det borde väll inte vara för svårt på en låg nivå, eller? Vad krävs av en algoritm på låg säkerhet resp hög? (Antar att svaret är väldigt långt.)
Det borde väll inte vara för svårt på en låg nivå, eller? Vad krävs av en algoritm på låg säkerhet resp hög? (Antar att svaret är väldigt långt.)

public PasswordCryptpographer(string key)
{
int seed = 0;
if (key == "" || key == string.Empty)
return;
foreach (byte num2 in Encoding.ASCII.GetBytes(key))
{
seed += num2;
}
msvcrt.msvcrt.srand(seed);
byte[] buffer = new byte[0x10];
for (int i = 0; i < 0x10; i++)
{
buffer[i] = (byte) msvcrt.msvcrt.rand();
}
for (int j = 1; j < 0x100; j++)
{
this.key[j * 2] = (byte) j;
this.key[(j * 2) + 1] = (byte) (j ^ buffer[j & 15]);
}
for (int k = 1; k < 0x100; k++)
{
for (int m = 1 + k; m < 0x100; m++)
{
if (this.key[(k * 2) + 1] < this.key[(m * 2) + 1])
{
this.key[k * 2] = (byte) (this.key[k * 2] ^ this.key[m * 2]);
this.key[m * 2] = (byte) (this.key[m * 2] ^ this.key[k * 2]);
this.key[k * 2] = (byte) (this.key[k * 2] ^ this.key[m * 2]);
this.key[(k * 2) + 1] = (byte) (this.key[(k * 2) + 1] ^ this.key[(m * 2) + 1]);
this.key[(m * 2) + 1] = (byte) (this.key[(m * 2) + 1] ^ this.key[(k * 2) + 1]);
this.key[(k * 2) + 1] = (byte) (this.key[(k * 2) + 1] ^ this.key[(m * 2) + 1]);
}
}
}
}
public byte[] Decrypt(byte[] data)
{
byte[] buffer = new byte[data.Length];
for (int i = 0; i < data.Length; i++)
{
bool flag = false;
if (data[i] == 0)
{
return buffer;
}
byte index = this.key[data[i] * 2];
if (index >= 0x80)
{
index = (byte) (this.key[data[i] * 2] - 0x80);
flag = true;
}
buffer[i] = (byte) (buffer[i] + scanCodeToVirtualKeyMap[index]);
if ((!flag && (buffer[i] >= 0x41)) && (buffer[i] <= 90))
{
buffer[i] = (byte) (buffer[i] + 0x20);
}
}
return buffer;
}
public byte[] Encrypt(byte[] data)
{
byte[] buffer = new byte[data.Length];
for (int i = 0; i < data.Length; i++)
{
byte num2 = data[i];
if ((data[i] >= 0x61) && (data[i] <= 0x7a))
{
data[i] = (byte) (data[i] - 0x20);
}
byte num3 = virtualKeyToScanCodeMap[data[i]];
if ((num2 >= 0x41) && (num2 <= 90))
{
num3 = (byte) (num3 + 0x80);
}
for (byte j = 0; j <= 0xff; j = (byte) (j + 1))
{
byte num5 = this.key[j * 2];
if (num5 == num3)
{
buffer[i] = j;
break;
}
}
}
return buffer;
}
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!
Swish: 123 536 99 96 Bankgiro: 211-4106
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!
Swish: 123 536 99 96 Bankgiro: 211-4106