Skip to content
La2Base
Home
DownloadsWikiForumFAQ
Search
ruen
Sign up Login
HomeFilesWikiLogin
  • Home
  • Downloads
  • Wiki
  • FAQ
  • Contact Us
  • About
  • Rules
  • Privacy
  • Terms of Service

© 2026 la2base.com · All rights reserved

ruen
Forum/MSSQL Скрипты/Готовая функция зашифровки пароля
Search

Готовая функция зашифровки пароля

5 replies108 viewsCurrently viewing: 1
rosenlew
rosenlew

User

Новичок

Posts: 18

На форуме с: 05/08/2008

Репутация: +3

Рейтинг: 0

· 01/08/2010, 05:00 AM

static byte ORD(char ch)
{
return (byte)ch;
}
static string func(string str)
{
char[] strch = str.ToCharArray();
int i = 0;
long[] key = new long[]{0,0,0,0,
0,0,0,0,
0,0,0,0,
0,0,0,0};
long[] dst = new long[]{0,0,0,0,
0,0,0,0,
0,0,0,0,
0,0,0,0};
long result;
long one, two, three, four;
string encrypt = "0x";
int nBytes = str.Length;

while (i < nBytes)
{
i++;
key[i - 1] = ORD(strch[i - 1]);
dst[i - 1] = key[i - 1];
}

result = key[0] + key[1] * 256 + key[2] * 65536 + key[3] * 16777216;
one = result * 213119 + 2529077;
one = one - (one / 4294967296) * 4294967296;

result = key[4] + key[5] * 256 + key[6] * 65536 + key[7] * 16777216;
two = result * 213249 + 2529089;
two = two - (two / 4294967296) * 4294967296;

result = key[8] + key[9] * 256 + key[10] * 65536 + key[11] * 16777216;
three = result * 213203 + 2529589;
three = three - (three / 4294967296) * 4294967296;

result = key[12] + key[13] * 256 + key[14] * 65536 + key[15] * 16777216;
four = result * 213821 + 2529997;
four = four - (four / 4294967296) * 4294967296;

key[3] = (one / 16777216);
key[2] = ((one - key[3] * 16777216) / 65535);
key[1] = ((one - key[3] * 16777216 - key[2] * 65536) / 256);
key[0] = ((one - key[3] * 16777216 - key[2] * 65536 - key[1] * 256));

key[7] = (two / 16777216);
key[6] = ((two - key[7] * 16777216) / 65535);
key[5] = ((two - key[7] * 16777216 - key[6] * 65536) / 256);
key[4] = ((two - key[7] * 16777216 - key[6] * 65536 - key[5] * 256));

key[11] = (three / 16777216);
key[10] = ((three - key[11] * 16777216) / 65535);
key[9] = ((three - key[11] * 16777216 - key[10] * 65536) / 256);
key[8] = ((three - key[11] * 16777216 - key[10] * 65536 - key[9] * 256));

key[15] = (four / 16777216);
key[14] = ((four - key[15] * 16777216) / 65535);
key[13] = ((four - key[15] * 16777216 - key[14] * 65536) / 256);
key[12] = ((four - key[15] * 16777216 - key[14] * 65536 - key[13] * 256));

dst[0] = dst[0] ^ key[0];
i = 1;
while (i < 16)
{
i++;
dst[i - 1] = dst[i - 1] ^ dst[i - 2] ^ key[i - 1];
}

i = 0;
while (i < 16)
{
i++;
if (dst[i - 1] == 0)
{
dst[i - 1] = 102;
}
}

i = 0;
while (i < 16)
{
i++;
if (dst[i - 1] < 16)
{
encrypt = encrypt + "0" + Convert.ToString(dst[i - 1], 16);
}
else
{
encrypt = encrypt + Convert.ToString(dst[i - 1], 16);
}
}
return encrypt;
}

static void Main(string[] args)
{
string s1 = "root";//проверял на руте=)
Console.WriteLine(func(s1));
}

0
U
Underworld
· 01/08/2010, 10:34 AM

Что-то много лишнего =)

0
rosenlew
rosenlew

User

Новичок

Posts: 18

На форуме с: 05/08/2008

Репутация: +3

Рейтинг: 0

· 01/08/2010, 09:40 PM

в плане?

0
U
Underworld
· 01/08/2010, 09:53 PM

Ну, во первых кто вас так учил массивы объявлять? Конечно, так объявлять можно никто не спорит, но разве long[] dst = new long[16]; не красивее будет?
Во вторых тут достаточно 2 циклов (3, если слегка модифицировать код), кто муже целесообразнее будет использовать for вместо While
В третьих, зачем вам функция ORD? Вам не кажется что она лишняя?

Ну и еще пара мелочей не столь существенных

Ну и на последок постарайтесь запомнить, что вы чаще читаете код чем его пишите так что старайтесь его делать более удобным к чтению.

0
rosenlew
rosenlew

User

Новичок

Posts: 18

На форуме с: 05/08/2008

Репутация: +3

Рейтинг: 0

· 01/09/2010, 08:22 AM

ну я нуб пока что в этом, вот 4 день программирование изучаю, так что приму ваши советы к сведению...

0
Войдите или зарегистрируйтесь чтобы ответить