ΠΡΠ½ΠΈΡΠ» ΠΠ΅ΡΠ½ΡΡΠ΅ΠΉΠ½ (Daniel J. Bernstein), ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΡΠΊΡΠΏΠ΅ΡΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π°ΡΠΈΡΡΠ½Π½ΠΎΠ³ΠΎ ΠΠ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π²ΡΠΈΠΉ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΊΠ°ΠΊ qmail, djbdns, NaCl, Ed25519, Curve25519 ΠΈ ChaCha20-Poly1305, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π²ΡΠΏΡΡΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ° cdb 20250121, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΠ΅Π³ΠΎ ΡΠΎΡΠΌΠ°Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π»Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΠ Π² ΡΠΎΡΠΌΠ΅ ΠΊΠ»ΡΡ/Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΏΡΡΠΊ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ ΡΠΏΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ 25 Π»Π΅Ρ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ cdb 0.75, ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π² ΡΠ΅Π²ΡΠ°Π»Π΅ 2000 Π³ΠΎΠ΄Π°.
Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠΎΡΠΌΠ°Ρ cdb64, ΠΏΠ΅ΡΠ΅Π²Π΅Π΄ΡΠ½Π½ΡΠΉ Π½Π° ΡΡΡΡΠΊΡΡΡΡ Ρ 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ. ΠΠ° 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΠ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ Π΄ΠΎ ΡΠΊΡΠ°Π±Π°ΠΉΡΠ° (ΡΠ°Π½Π΅Π΅ ΡΠ°Π·ΠΌΠ΅Ρ ΠΠ Π½Π΅ ΠΌΠΎΠ³ ΠΏΡΠ΅Π²ΡΡΠ°ΡΡ 4 ΠΠ). ΠΠ ΠΎΡΠ΅Π½Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π°Ρ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ 4096-Π±Π°ΠΉΡΠΎΠ²ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ ΠΏΠΎ 48 Π±Π°ΠΉΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΡ Π·Π°ΠΏΠΈΡΡ (Π΄Π»Ρ 32-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ 2048 ΠΈ ΠΏΠΎ 24 Π±Π°ΠΉΡΠ° Π½Π° Π·Π°ΠΏΠΈΡΡ). ΠΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΠΠ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΡΠ΅Π³ΠΎ Π΄Π²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄ΠΈΡΠΊΡ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΊΠ»ΡΡΠ° ΠΈ ΠΎΠ΄ΠΈΠ½ β ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½Π°Ρ Π·Π°ΠΌΠ΅Π½Π° ΠΠ, ΡΡΠΎΠΉΠΊΠ°Ρ ΠΊ Π°Π²Π°ΡΠΈΠΉΠ½ΡΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡΠΌ ΠΈ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ°Ρ Π΄ΠΎΡΡΡΠΏ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅.
ΠΡΡΠ³ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ±ΠΎΡΠΊΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡΠ° configure ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Β«make installΒ».
- Π£Π±ΡΠ°Π½Π° ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° ΡΠ΅ΡΡΠΎΠ²ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΊ csh.
- ΠΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΠ΅Π»ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° ΡΠΈΠΏ Β«numΒ», ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ ΠΊΠ°ΠΊ Β«long longΒ». Π€ΡΠ½ΠΊΡΠΈΠΈ uint32, fmt ΠΈ scan Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Ρ ΡΠΈΠΏΠΎΠΌ num.
- ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΡΡΠ΅ΡΠ°ΠΌΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ Π½Π° inbuf ΠΈ outbuf. ΠΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΡΠΈΡΡΠΊΠ° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° hier.
- ΠΠ· ΠΊΠΎΠ΄Π° ΡΠ±ΡΠ°Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
- ΠΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Π²ΡΠ·ΠΎΠΊ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ str_len, alloc, uint32, exit, error ΠΈ systype.
- ΠΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»Π°Π½ Π΄Π»Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ Π‘ΠΈ-ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΡΠ°ΡΡΠΉ ΡΡΠΈΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΡΡΡΡΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΠΈ ΡΡΠ°ΡΡΠΉ ΡΡΠΈΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ main().
- ΠΠ°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ const ΠΈ static.
- ΠΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½ ΡΠ»Π°Π³ Β«-WallΒ», Π° ΠΊΠΎΠ΄ ΠΏΠΎΡΠΈΡΠ΅Π½ Π΄Π»Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ.
- ΠΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΎΠΏΡΠΈΠΈ -fwrapv, -fno-delete-null-pointer-checks, -fno-strict-aliasing ΠΈ -fno-strict-overflow.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
