metaclass: (Default)
[personal profile] metaclass
Потратил пару вечеров на развлечение - поиск причины, почему криптоалгоритмы в питоне, php, c, openssl и C# выдают разные результаты: http://ru-root.livejournal.com/2759003.html

В итоге, оказалось что в python, php и либе mcrypt по умолчанию используется размер обратной связи в 8 бит, в C+openssl и C#+bouncycastle - 64 бита, а если запускать openssl из командной строки - он добивает ключ нулями до размера кратного блоку.
У питоновского крипто есть такой параметр, называется segment_size.
В php параметра нет, но то, что в php и mcrypt называется OFB или CFB - это на самом деле 8OFB и 8CFB, а для 64 бита (размер блока шифра) в них есть режимы nofb и ncfb, но для ncfb в питоне НЕТ константы типа MCRYPT_MODE_NCFB, а все остальные есть.

http://stackoverflow.com/questions/4052594/incorrect-key-size-in-php-mcrypt-when-porting-cryptopp-aes-encryption-to-phps-m/4054017#4054017
https://bugs.php.net/bug.php?id=51146

Date: 2014-09-07 03:08 pm (UTC)
From: [identity profile] ilya-portnov.livejournal.com
А в одном широко известном в узких кругах коммерческом программном продукте есть своя реализация 3DES (не совсем так, я упрощаю). В нём, как известно, бывают варианты: EEE и EDE. Так вот в ядре упомянутого продукта в enum-е эти константы перепутаны местами. Т.е. если передать EEE то будет сделано EDE, и наоборот. И ничо, так и живут уже много лет — просто все разработчики уже в курсе, что надо передавать не ту константу которую хочешь.
Edited Date: 2014-09-07 03:12 pm (UTC)

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 5th, 2025 10:33 am
Powered by Dreamwidth Studios