Показать сообщение отдельно
Старый 14.02.2012, 13:15   #56
Пользователь
 
Регистрация: 29.01.2012
Адрес: г. Минск
Сообщений: 64
Сказал Спасибо: 10
Имеет 5 спасибок в 5 сообщенях
Tin-moon пока неопределено
По умолчанию

To Kilatif:
Решил до конца пройтись по блоуфиш, нашел у тебя несколько различий, ты говарил что пишешь по другие пакеты вот решил уточнить.
Код:
        public byte[] Decode(byte[] data)
        {
            int i, len;
            byte[] DBuff = new byte[8];

            len = data.Length;  - тут в делфи - 2 (вернее мы вызываем декод передавая в длину - 2)

            for (i = 0; i < len / 8; i ++)
            {
                Array.Copy(data, i * 8, DBuff, 0, 8);
                DBuff = DecodeBlock(DBuff);

                Array.Copy(DBuff, 0, data, i * 8, 8);
            }

            return data;
        }
        public byte[] Encode(byte[] data)
        {
            int i, len;
            byte[] DBuff = new byte[8];

            len = data.Length; - тут там тоже - 2

            for (i = 0; i < len / 8; i++)
            {
                Array.Copy(data, i * 8, DBuff, 0, 8);
                DBuff = EncodeBlock(DBuff);

                Array.Copy(DBuff, 0, data, i * 8, 8);
            }

            return data;
        }
Еще тут:
Код:
            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;
                }

// тот же кусок на делфи
	for i:=0 to 17 do begin
    data:=((key[j] and $FF)shl 24)or((key[(j+1) mod Size] and $FF)shl 16)or((key[(j+2) mod Size] and $FF)shl 8)or(key[(j+3) mod Size] and $FF);
		PArray[i] := PArray[i] xor data ;
		j := (j + 4) mod Size ;
	end;
	datal := 0 ;
	datar := 0 ;
	for i:=0 to 8 do begin
		Blowfish_encipher (datal, datar) ;
		PArray[i*2] := datal ;
		PArray[i*2 + 1] := datar ;
	end;
	for i:=0 to 3 do
  	for j:=0 to 127 do begin
		  Blowfish_encipher (datal, datar) ;
		  SBoxes[i,j*2] := datal ;
		  SBoxes[i,j*2 + 1] := datar ;
		end;
Или в делфи нумерация как-то по другому? (всмысле массива)

Добавлено через 2 часа 24 минуты
To Kilatif:

Можно эту функцию: procedure AddCheckSumm(var data: array of byte; len: integer);

Последний раз редактировалось Tin-moon, 14.02.2012 в 13:15. Причина: Добавлено сообщение
Tin-moon вне форума   Ответить с цитированием