AnsiString Code (AnsiString Text)
{
int i, j;
const AnsiString Key = "12345";
AnsiString result, S;
char c;
j = Text.Length();
for ( i = 1; i <= j ; i++)
{
S = IntToHex( ( (int)Text ^ (int)Key ), 0 ) ;
if (S.Length() == 1) S = "0" + S;
result = result + S;
}
return result;
}
Шифрование/Дешифрование
Код:
Оцените этот алгоритм...
Ни как не могу придумать алгоритм дешифровки и всё упирается в то как преобразовать Hex в Int.
берёшь по парам символы и дешифруешь =)
Цитата: Тень Пса
берёшь по парам символы и дешифруешь =)
это ясно, не ясно как преобразовать
AnsiString Str = "A7"
в int
Код:
AnsiString Hex = "ABCD";
int HexInt = StrToInt("0x" + Hex);
int HexInt = StrToInt("0x" + Hex);
Цитата: frid-karatel
а можно и так:
Код:
AnsiString Hex = "ABCD";
int HexInt = StrToInt("0x" + Hex);
int HexInt = StrToInt("0x" + Hex);
Спасибо! :)
Код:
AnsiString DeCode(AnsiString Hash)
{
int j = 1;
char c;
const AnsiString Key = "1234567890";
AnsiString result, Hex;
int l = Hash.Length();
for (int i = 1; i <= l; i = i + 2)
{
Hex = Hash + Hash[i + 1];
int HexInt = StrToInt("0x" + Hex);
c = (char) ( (int)HexInt ^ (int)Key[j++] ) ;
result = result + c;
}
return result;
}
{
int j = 1;
char c;
const AnsiString Key = "1234567890";
AnsiString result, Hex;
int l = Hash.Length();
for (int i = 1; i <= l; i = i + 2)
{
Hex = Hash + Hash[i + 1];
int HexInt = StrToInt("0x" + Hex);
c = (char) ( (int)HexInt ^ (int)Key[j++] ) ;
result = result + c;
}
return result;
}
Написал Вот такой Код, но почему то некоректно работает
Hex = Hash + Hash[i + 1]; :(
вместо 2 символов в HEX их 3
{
int j = 1;
char c;
const AnsiString Key = "1234567890";
AnsiString result, Hex1, Hex2;
int l = Hash.Length();
for (int i = 1; i < l; i = i + 2)
{
Hex1 = Hash;
Hex2 = Hash[i + 1];
int HexInt = StrToInt("0x" + Hex1 + Hex2);
c = (char) ( (int)HexInt ^ (int)Key[j++] ) ;
result = result + c;
}
return result;
}
Вот так вот заработало :confused: :rolleyes:
AnsiString индексируется с 1