Может это из-за инцилизации неверной?
Вот скрипт
Код:
//Стартовый ключ инцилизации
bf_key = HexToStr("6B60CB5B82CE90B1CC2B6C556C6C6C6C");
//Инцилизируем ключ
BlowFish.Init(bf_key) ;
//Хекс преобразуем в байты, а байты это строки
public string HexToStr (string s) {
int i;
result = "" ;
Debug.Log("hex " + s + " " + s.Length) ;
//for i:=1 to (Length(s) div 2) do begin
for (i=0; i < (s.Length/2); i++) {
//Преобразуем символы
result = result + Convert.ToChar(Convert.ToInt32("" + s[i*2] + s[(i*2)+1],16)) ;
}
//Debug.Log("MyFunc : " + result);
i = 0 ;
return result;
}
Код:
public static void Init(string Key1)
{
long i, j;
long data, datal, datar;
long Size;
byte[] Key = new byte[Key1.Length];
//Key = BitConverter.GetBytes(Key1);//(byte[])Funcs.DeepClone(Key1);
//for i:=0 to Size-1 do key[i]:=Ord(key1[i+1]);
Size = Key1.Length;
for (int _i = 0; _i < Size; _i++)
{
Key[_i] = Convert.ToByte(Key1[_i]) ;
}
for (i = 0; i < 18; i++)
PArray[i] = BlowFishConsts.bf_P[i];
for (i = 0; i < 4; i++)
{
for (j = 0; j < 256; j++)
{
SBoxes[i, j] = BlowFishConsts.bf_S[i, j];
}
}
j = 0;
for (i = 0; i < 18; i++)
{
data = ((Key[j] & 0xFF) << 24) | ((Key[(j+1) % Size] & 0xFF) << 16) | ((Key[(j+2) % Size] & 0xFF) << 8) | (Key[(j+3) % Size] & 0xFF);
PArray[i] = PArray[i] ^ data;
j = (j + 4) % Size;
}
datal = 0;
datar = 0;
for (i = 0; i < 9; i++)
{
Blowfish_encipher(ref datal, ref datar);
PArray[i*2] = datal;
PArray[i*2 + 1] = datar;
}
for (i = 0; i < 4; i++)
for (j = 0; j < 128; j++)
{
Blowfish_encipher(ref datal, ref datar);
SBoxes[i, j*2] = datal;
SBoxes[i, j*2 + 1] = datar;
}
}
Не знаю что может такое и быть, не знал что с конечной шифрайцией будут такие проблемы...
Пакет верный, почему не шифрует так как надо, есть у кого скрипты на C#?