Какая простейшая (самая быстрая и, возможно, небезопасная) обратимая криптография с симметрией c, сохраняющая длину фиксированного размера? - PullRequest
0 голосов
/ 20 апреля 2020

Безопасность не имеет значения в моем случае использования. Однако низкая вероятность столкновения является требованием. Под малым я подразумеваю нечто сопоставимое с коэффициентами MD5(textA + keyB) = MD5(textC + keyD) для разных текстов и ключей. Текст и ключ имеют, скажем, 16 байтов. Знак + здесь означает конкатенацию.

Я использовал AES для этой задачи, но он в 100 раз медленнее, чем MD5 в моих тестах, показанных ниже. Конечно, MD5 необратим, поэтому я не могу его использовать.

Один важный момент заключается в том, что он также должен быть некоммутативным, то есть encrypt(textA, keyB) != encrypt(keyB, textA) В противном случае, я думаю, я мог бы просто использовать битовую операцию XOR .

Любая Python библиотека или код, реализующий алгоритм, приветствуется.

Сравнение AES и MD5 на 8-м ноутбуке Intel i7:

In [287]: %timeit aes(n, n)                                                                                                                                                                   
9.07 µs ± 7.95 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [288]: %timeit md5(n)                                                                                                                                                                      
153 ns ± 0.237 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
...