Алгоритм шифрования скрипта в Mob файлах.
#13
Кстати, вместо shl, shr, << и >> можно использовать деление и умножение, таким образом можно значительно упростить функцию. Big Grin
Я думаю, что Нивал их и использовал у себя в алгоритме, мы ведь эту функцию восстанавливали из Assembler'а.

Думаю в C++ исходниках Нивала алгоритм имел такой вид:
Код:
PBYTE cryptScript( PBYTE buf, DWORD dwKey, DWORD dwSize)
{
 for(DWORD i=0;i<dwSize;i++)
   {
     dwKey = dwKey * 214013 + 2531011;
     buf[i] ^= (BYTE)(dwKey / 65536 % 256);
   }
 return buf;
}

А это, код на C#:
Код:
public string ReadCodedString()
{
 byte[] coded = new byte[DataSize - 4];     // sizeof(coded string) - sizeof(key)
 char[] decoded = new char[coded.Length];
 uint uKey;

 // Read
 uKey   = orStream.ReadUInt32();           // KEY
 coded = orStream.ReadBytes(coded.Length); // Coded string

 // Decode string
 for(int i = 0; i < coded.Length; i++)
 {
   uKey = uKey * 214013 + 2531011;
   decoded[i] = Convert.ToChar(coded[i] ^ Convert.ToByte(uKey / 65536 % 256));
 }
 return new string(decoded, 0, decoded.Length );
}
Если кто может перевести этот код на Delphi и VB
Ответ


Сообщения в этой теме
Алгоритм шифрования скрипта в Mob файлах. - от Jet - 21.02.2004, 17:57

Перейти к форуму:


Пользователи, просматривающие эту тему: 3 Гость(ей)