LINUX.ORG.RU

Алгоритм шифрования?

 , , , ,


0

1

Нужно сделать сеть фейстеля для строк в файле, подумываю на джаве это возможно сделать? Конкретно интересует как запилить такой код на яве-джаве-жабе:

#define ROR(x,n)\
(x>>n%(sizeof(x)*8))|(x<<n%(sizeof(x)*8))



Последнее исправление: Gremlin_ (всего исправлений: 4)

как запилить такой код на яве-джаве-жабе

Ты уж определись, какой из этих трёх языков тебе нужен

Crocodoom ★★★★★
()
Ответ на: комментарий от Crocodoom

нашел на хабре по выдаче яндекса в 40 строк на жаве, чутка переработать для чтения и записи в файл бы

public class BlockTest
{
    private static int rounds = 3;
    public void feist(int[] a, boolean reverse)
    {
        int round = reverse? rounds: 1;
        int l = a[0];
        int r = a[1];
        for (int i = 0; i < rounds; i++)
        {
            if (i < rounds — 1) // если не последний раунд
            {
                int t = l;
                l = r ^ f(l, round);
                r = t;
            }
            else // последний раунд
            {
                r = r ^ f(l, round);
            }
            round += reverse? -1: 1;
        }
        a[0] = l;
        a[1] = r;
    }
    private int f(int b, int k)
    {
        return b + k;
    }
    public void test()
    {
        int[] a = new int[2];
        a[0] = 100;
        a[1] = 200;
        feist(a, false);
        feist(a, true);
    }
}

Gremlin_
() автор топика

подумываю на джаве это возможно сделать?

Не смог распарсить.

Zhbert ★★★★★
()
public static int ror(int x, int n) {
    return (x >> n % 32) | (x << n % 32);
}

Кажется % 32 можно убрать, вроде на Intel это и так будет работать.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)

Сеть фейстеля - не какой-то конкретный алгоритм, а схема. Конкретный вариант зависит от функции F и ключевого расписания (каким образом получаются значения Ki)

TheAnonymous ★★★★★
()
Ответ на: комментарий от Gremlin_

Циклический это >>>. А в C он разве циклический?

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

% 32 можно заменить на & 31, да и выполнить её только один раз, последней в return.

return ( (x >> n) | (x << n) ) & 31

menangen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.