что касается последовательности байт, это где такая у тебя последовательность, я что то не понял? А что касается разных реализаций типа байт, я же говорю - смысл для байта в двоичном и шестнадцатеричном представлении от этого не меняется
что касается последовательности байт, это где такая у тебя последовательность, я что то не понял? А что касается разных реализаций типа байт, я же говорю - смысл для байта в двоичном и шестнадцатеричном представлении от этого не меняется
Код:
private long S(long x, byte i)
{
byte[] bts = new byte[4];
bts = BitConverter.GetBytes(x);
return SBoxes[i, bts[3-i]];
}
Вот тут такая последовательность. Понимаешь тут смысл в чем, оно выбирает из bts числа (которые там получились) bts[3-i] - это число {3, 169, 95, 79, 0, 0, 0, 0}. И в массиве SBoxes выбирает число. Понятное дело что оно не может быть отрицательным. Ща попробую запилить в яве не в байт а в short и глянуть какие данные будут.
Кстати, чисто для сверки, выкинь полученные Parray и SBoxes из BlowFish.Init(key), ключ тоже подсунь.
private long S(long x, byte i)
{
byte[] bts = new byte[4];
bts = BitConverter.GetBytes(x);
return SBoxes[i, bts[3-i]];
}
Вот тут такая последовательность. Понимаешь тут смысл в чем, оно выбирает из bts числа (которые там получились) bts[3-i] - это число {3, 169, 95, 79, 0, 0, 0, 0}. И в массиве SBoxes выбирает число. Понятное дело что оно не может быть отрицательным. Ща попробую запилить в яве не в байт а в short и глянуть какие данные будут.
Кстати, чисто для сверки, выкинь полученные Parray и SBoxes из BlowFish.Init(key), ключ тоже подсунь.
для bts[3-i], 3-i - никогда и не будет отрицательным, потому что в моем классе значение i > 3 нигде не используется.
Что касается записи числа в массив.
Вообще, в процессорах Intel используется обратная запись числа, поэтому в пакетах тебе приходит массив с числами, которые записаны задом наперед. И видимо поэтому C# и Delphi переводит число в массив именно задом наперед. И то что ява переводит так число в массив действительно беда, но это уже врятли исправишь. Хотя.. Я яву не знаю, так что может просто есть другая функция для этого)
для bts[3-i], 3-i - никогда и не будет отрицательным, потому что в моем классе значение i > 3 нигде не используется.
так верно i проходит от 0 до 3. Тут просто берется значение которые попало под этот индекс (3-i), а вот там уже с -)). В общем с блоу фишем вроде разобрался. сравнил с Делфой).
Проблема теперь в другом... пакет который приходит 186, но данные другие от делфи).
P.S. У меня еще столько IDE никогда не стояло)) QT, Java-ские, C#, Delphi 7