URL ΠΈ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ — API. Yandex Safe Browsing
Π‘ΠΏΠΈΡΠΊΠΈ Safe Browsing ΡΠΎΡΡΠΎΡΡ ΠΈΠ· ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠ² Ρ ΡΡΠ΅ΠΉ SHA-256 ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ (ΠΎΡ 4 Π΄ΠΎ 32 Π±Π°ΠΉΡ), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ URL ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ΅ΡΡΡΡΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΡΠ³ΡΠΎΠ·Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ URL Π² ΡΠΏΠΈΡΠΊΠ΅ (Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ Π±Π°Π·Π΅ ΠΈΠ»ΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅), Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡ Ρ ΡΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ:
ΠΡΠΈΠ²Π΅Π΄ΠΈΡΠ΅ URL ΠΊ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π²ΠΈΠ΄Ρ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Ρ ΠΎΡΡΠ° ΠΈ ΠΏΡΡΠΈ.
ΠΡΡΠΈΡΠ»ΠΈΡΠ΅ Ρ ΡΡ ΠΏΠΎΠ»Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ ΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡ Ρ ΡΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Golang.
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ Π±Π°Π·Π΅ ΡΠΏΠΈΡΠΊΠΎΠ² Safe Browsing. ΠΡΠ»ΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡ Ρ ΡΡΠ° Π½Π°ΠΉΠ΄Π΅Π½, ΠΎΡΠΏΡΠ°Π²ΡΡΠ΅ Π΅Π³ΠΎ Π² Π·Π°ΠΏΡΠΎΡΠ΅.
URL Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΡ RFC 2396. URL Π² ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π΄ΠΎΠΌΠ΅Π½Π½ΡΡ
ΠΈΠΌΠ΅Π½Π°Ρ
(IDN), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ .ΡΡ
, Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² ASCII ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Punycode. URL Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΡΡΠΈ, ΡΠΎ Π΅ΡΡΡ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ ΡΠ»Π΅ΡΠ΅ΠΌ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, https://yandex.
.
Π§ΡΠΎΠ±Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ URL ΠΊ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π²ΠΈΠ΄Ρ:
Π£Π΄Π°Π»ΠΈΡΠ΅ Π·Π½Π°ΠΊΠΈ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ
0x09
ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ0x0d
ΠΈ0x0a
.Π£Π΄Π°Π»ΠΈΡΠ΅ ΡΠΊΠΎΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,
https://yandex.ru/#anchor
ΡΠΎΠΊΡΠ°ΡΠΈΡΠ΅ Π΄ΠΎhttps://yandex.ru/
.ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅:
- Π₯ΠΎΡΡ
Π£Π΄Π°Π»ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ Π² Π½Π°ΡΠ°Π»Π΅ ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅.
ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠΎΡΠ΅ΠΊ Π½Π° ΠΎΠ΄Π½Ρ.
ΠΡΠ»ΠΈ ΠΈΠΌΡ Ρ ΠΎΡΡΠ° β IP-Π°Π΄ΡΠ΅Ρ, ΠΏΡΠΈΠ²Π΅Π΄ΠΈΡΠ΅ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄ ΡΠ΅ΡΡΡΠ΅Ρ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π», ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΎΡΠΊΠΎΠΉ.
ΠΡΠΈΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΡ.
- ΠΡΡΡ
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ Π·Π°ΠΏΡΠΎΡΠ°.
Π£Π΄Π°Π»ΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
/. ./
ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅/./
Π½Π°/
.ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ»Π΅ΡΠ΅ΠΉ Π½Π° ΠΎΠ΄ΠΈΠ½.
ΠΠΊΡΠ°Π½ΠΈΡΡΠΉΡΠ΅ Π²ΡΠ΅ ASCII-ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΌΠ»Π°Π΄ΡΠ΅ 32 ΠΈ ΡΡΠ°ΡΡΠ΅ 127, Π° ΡΠ°ΠΊΠΆΠ΅
#
ΠΈ%
. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ Π² Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ
ΠΡΡ ΠΎΠ΄Π½ΡΠΉ URL | ΠΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΠΈΠ΄ |
---|---|
http://host/%25%32%35 | http://host/%25 |
http://host/%25%32%35%25%32%35 | http://host/%25%25 |
http://host/%2525252525252525 | http://host/%25 |
http://host/asdf%25%32%35asd | http://host/asdf%25asd |
http://host/%%%25%32%35asd%% | http://host/%25%25%25asd%25%25 |
http://%32%31%33%2e%31%38%30%2e%32%31%30%2e5/%2e%73%65%63%75%72%65%2f%77%77%77%2e%6d%6f%69%6b%72%75%67%2e%72%75/ | http://213. 00&11*22(33)44_55+ |
http://3279880203/smth | http://195.127.0.11/smth |
http://www.yandex.ru/smth/.. | http://www.yandex.ru/ |
www.yandex.ru | http://www.yandex.ru/ |
http://www.zlo.com/smth#ancor | http://www.zlo.com/smth |
http://www.YANdex.ru/ | http://www.yandex.ru/ |
http://www.yandex.ru.../ | http://www. |
http://www.yandex.ru/m\ta\rp\ns | http://www.yandex.ru/maps |
http://zlo.com/smth#more#again | http://zlo.com/smth |
http://\x01\x80.com/ | http://%01%80.com/ |
http://www.hostport.com:1234/ | http://www.hostport.com/ |
http://www.yandex.ru/ | http://www.yandex.ru/ |
http:// probel.ru/ | http://%20probel. ru/ |
http://host.com//dvaslesha?more//slashes | http://host.com/dvaslesha?more//slashes |
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ URL ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΊ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΌΠ΅, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅:
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Ρ ΠΎΡΡΠ° ΠΈ ΠΏΡΡΠΈ.
ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΡΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
- ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Ρ ΠΎΡΡΠ°
Π‘ΡΠΎΡΠΌΠΈΡΡΠΉΡΠ΅ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 5 ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΡΠΎΠΊ:
ΠΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ Ρ ΠΎΡΡΠ°.
ΠΠΎ 4 ΠΈΠΌΠ΅Π½ Ρ ΠΎΡΡΠ°, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄Π°Π»ΡΡ ΠΏΠ΅ΡΠ²ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ. ΠΠΎΠΌΠ΅Π½ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ. ΠΡΠΈ ΡΡΡΠΎΠΊΠΈ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΈΠΌΡ Ρ ΠΎΡΡΠ° β IP-Π°Π΄ΡΠ΅Ρ.
- ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΡΠΈ
Π‘ΡΠΎΡΠΌΠΈΡΡΠΉΡΠ΅ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 6 ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΡΠΎΠΊ:
ΠΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π·Π°ΠΏΡΠΎΡΠ°.
ΠΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π·Π°ΠΏΡΠΎΡΠ°.
4 ΠΏΡΡΠΈ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΊΠΎΡΠ½Ρ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΡΡΠΈ Ρ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠΌ ΡΠ»Π΅ΡΠ΅ΠΌ.
- ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ
Π‘ΡΠΎΡΠΌΠΈΡΡΠΉΡΠ΅ Π΄ΠΎ 30 ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Ρ ΠΎΡΡΠ° ΠΈ ΠΏΡΡΠΈ. ΠΡΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΡ Ρ ΠΎΡΡΠ° ΠΈ ΠΏΡΡΡ; ΡΡ Π΅ΠΌΠ° (ΠΏΡΠΎΡΠΎΠΊΠΎΠ»), ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΠ°ΡΠΎΠ»Ρ ΠΈ ΠΏΠΎΡΡ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ. ΠΡΠ»ΠΈ Π² URL Π΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°.
- ΠΡΠΈΠΌΠ΅Ρ
ΠΠ»Ρ URL
http://a.b.c/1/2.html?param=1
Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:a.b.c/1/2.html?param=1 a.b.c/1/2.html a.b.c/ a.b.c/1/ b.c/1/2.html?param=1 b.c/1/2.html b.c/ b.c/1/
ΠΠ»Ρ URL
http://a.b.c.d.e.f.g/1.html
Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:a.b.c.d.e.f.g/1.html a.b.c.d.e.f.g/ (ΠΠ°ΡΠΈΠ°Π½Ρ b.c.d.e.f.g Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΏΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈΠΌΠ΅Π½ΠΈ Ρ ΠΎΡΡΠ° ΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ Ρ ΠΎΡΡΠ°) c. d.e.f.g/1.html c.d.e.f.g/ d.e.f.g/1.html d.e.f.g/ e.f.g/1.html e.f.g/ f.g/1.html f.g/
ΠΠ»Ρ URL
http://1.2.3.4/1/
Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:1.2.3.4/1/ 1.2.3.4/
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΈΠ· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Ρ ΠΎΡΡΠ° ΠΈ ΠΏΡΡΠΈ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Ρ, Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ Ρ ΡΡ SHA256 ΠΏΠΎΠ»Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ.
ΠΠ°ΡΠ΅ΠΌ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ ΡΡΠ° ΠΏΠΎΠ»Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. ΠΡΠ΅ΡΠΈΠΊΡ Ρ ΡΡΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· 4β32 Π±Π°ΠΉΡ.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ° FIPS-180-4:
- Π₯ΡΡ Π΄Π»Ρ ΡΡΡΠΎΠΊΠΈ
abc
- Π₯ΡΡ Π΄Π»Ρ ΡΡΡΠΎΠΊΠΈ
abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq
ΠΡΠ»Π° Π»ΠΈ ΡΡΠ°ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Π°?
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΡ-Π°Π»Π³ΠΎΡΠΈΡΠΌ SHA-2 (SHA 256)? Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅
ΠΠ²ΡΠΎΡ ΠΠ°ΡΠΈΡ ΠΠ°Π³ΡΠ»ΠΈΠ½Π°
SHA-2 (Secure Hash Algorithm 2) β ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ² Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π³ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° SHA-256, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠ΅Π³ΠΎ ΠΊ SHA-2, ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ?
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡΡ , ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΡ. ΠΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΎ ΡΡΠΌ ΠΏΠΎΠΉΠ΄ΡΡ ΡΠ΅ΡΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠΌ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ΅Π»ΠΈ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ:
- ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ (Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΡΡΠΈ) Π΄Π°Π½Π½ΡΡ ;
- ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π²Π²ΠΎΠ΄ Π»ΡΠ±ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ;
- Π½Π΅ΠΎΠ±ΡΠ°ΡΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ (Π²Π²ΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΈΠ· Π²ΡΠ²ΠΎΠ΄Π°).
SHA-2 ΠΈ SHA-256
SHA-2 β ΡΡΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Ρ ΠΎΠ±ΡΠ΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ . SHA-256 ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° SHA-2. ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΠ²ΠΎΠ΄Π°. Β«256Β» ΠΈ Β«512Β» ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² Π±ΠΈΡΠ°Ρ .
ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ SHA-256.
SHA-256 Β«hello worldΒ». Π¨Π°Π³ 1. ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°
1. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ Β«hello worldΒ» Π² Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ Π²ΠΈΠ΄:
01101000 01100101 01101100 01101100 01101111 00100000 01110111 01101111 01110010 01101100 01100100
2. ΠΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΠ΄Π½Ρ Π΅Π΄ΠΈΠ½ΠΈΡΡ:
01101000 01100101 01101100 01101100 01101111 00100000 01110111 01101111 01110010 01101100 01100100 1
3. ΠΠ°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π½ΡΠ»ΡΠΌΠΈ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ ΡΡΠ°Π½ΡΡ ΠΊΡΠ°ΡΠ½Ρ 512 Π±Π΅Π· ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ 64 Π±ΠΈΡ (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ 448 Π±ΠΈΡ):
01101000 01100101 01101100 01101100 01101111 00100000 01110111 01101111 01110010 01101100 01100100 10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
4. ΠΠΎΠ±Π°Π²ΠΈΠΌ 64 Π±ΠΈΡΠ° Π² ΠΊΠΎΠ½Π΅Ρ, Π³Π΄Π΅ 64 Π±ΠΈΡΠ° β ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ Π±Π°ΠΉΡΠΎΠ² big-endian, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΠ΅Π΅ Π΄Π»ΠΈΠ½Ρ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ 88, Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ β Β«1011000Β».
01101000 01100101 01101100 01101100 01101111 00100000 01110111 01101111 01110010 01101100 01100100 10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01011000
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ Π²Π²ΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π±Π΅Π· ΠΎΡΡΠ°ΡΠΊΠ° Π΄Π΅Π»ΠΈΡΡΡΡ Π½Π° 512.
Π¨Π°Π³ 2. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Ρ Π΅ΡΠ° (h)
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ 8 Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Ρ Π΅ΡΠ°. ΠΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ²ΡΠ΅ 32 Π±ΠΈΡΠ° Π΄ΡΠΎΠ±Π½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΠΊΠΎΡΠ½Π΅ΠΉ ΠΏΠ΅ΡΠ²ΡΡ 8 ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΠ΅Π»: 2, 3, 5, 7, 11, 13, 17, 19.
h0 := 0x6a09e667 h2 := 0xbb67ae85 h3 := 0x3c6ef372 h4 := 0xa54ff53a h5 := 0x510e527f h5 := 0x9b05688c h6 := 0x1f83d9ab h7 := 0x5be0cd19
Π¨Π°Π³ 3. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠΊΡΡΠ³Π»ΡΠ½Π½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ (k)
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΅ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, Π½Π° ΡΡΠΎΡ ΡΠ°Π· ΠΈΡ 64. ΠΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠ΅ 32 Π±ΠΈΡΠ° Π΄ΡΠΎΠ±Π½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΊΡΠ±ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΡΠ½Π΅ΠΉ ΠΏΠ΅ΡΠ²ΡΡ 64 ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΠ΅Π» (2β311).
0x428a2f98 0x71374491 0xb5c0fbcf 0xe9b5dba5 0x3956c25b 0x59f111f1 0x923f82a4 0xab1c5ed5 0xd807aa98 0x12835b01 0x243185be 0x550c7dc3 0x72be5d74 0x80deb1fe 0x9bdc06a7 0xc19bf174 0xe49b69c1 0xefbe4786 0x0fc19dc6 0x240ca1cc 0x2de92c6f 0x4a7484aa 0x5cb0a9dc 0x76f988da 0x983e5152 0xa831c66d 0xb00327c8 0xbf597fc7 0xc6e00bf3 0xd5a79147 0x06ca6351 0x14292967 0x27b70a85 0x2e1b2138 0x4d2c6dfc 0x53380d13 0x650a7354 0x766a0abb 0x81c2c92e 0x92722c85 0xa2bfe8a1 0xa81a664b 0xc24b8b70 0xc76c51a3 0xd192e819 0xd6990624 0xf40e3585 0x106aa070 0x19a4c116 0x1e376c08 0x2748774c 0x34b0bcb5 0x391c0cb3 0x4ed8aa4a 0x5b9cca4f 0x682e6ff3 0x748f82ee 0x78a5636f 0x84c87814 0x8cc70208 0x90befffa 0xa4506ceb 0xbef9a3f7 0xc67178f2
Π¨Π°Π³ 4.
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ»Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ 512-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ Β«ΠΊΡΡΠΊΠ°Β» Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
. ΠΠ°ΡΠ° ΡΠ΅ΡΡΠΎΠ²Π°Ρ ΡΡΠ°Π·Π° Β«hello worldΒ» Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΊΠ°Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Β«ΠΊΡΡΠΎΠΊΒ» Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ
Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΉ h0
βh7
, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
Π¨Π°Π³ 5. Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ (w)
1. ΠΠΎΠΏΠΈΡΡΠ΅ΠΌ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ°Π³Π° 1 Π² Π½ΠΎΠ²ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Π°Ρ Π·Π°ΠΏΠΈΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ 32-Π±ΠΈΡΠ½ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ:
01101000011001010110110001101100 01101111001000000111011101101111 01110010011011000110010010000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000001011000
2. ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅ΡΡ 48 ΡΠ»ΠΎΠ², ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π½ΡΠ»ΡΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ² w[0β¦63]
:
01101000011001010110110001101100 01101111001000000111011101101111 01110010011011000110010010000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000001011000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 ... ... 00000000000000000000000000000000 00000000000000000000000000000000
3. ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ Π½ΡΠ»Π΅Π²ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ:
- For
i
fromw[16β¦63]
:s0 = (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-15] righthift 3)
s1 = (w[i-2] rightrotate 17) xor (w[i-2] rightrotate 19) xor (w[i-2] righthift 10)
w [i] = w[i-16] + s0 + w[i-7] + s1
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ w[16]
:
w[1] rightrotate 7: 01101111001000000111011101101111 -> 11011110110111100100000011101110 w[1] rightrotate 18: 01101111001000000111011101101111 -> 00011101110110111101101111001000 w[1] rightshift 3: 01101111001000000111011101101111 -> 00001101111001000000111011101101 s0 = 11011110110111100100000011101110 XOR 00011101110110111101101111001000 XOR 00001101111001000000111011101101 s0 = 11001110111000011001010111001011 w[14] rightrotate 17: 00000000000000000000000000000000 -> 00000000000000000000000000000000 w[14] rightrotate19: 00000000000000000000000000000000 -> 00000000000000000000000000000000 w[14] rightshift 10: 00000000000000000000000000000000 -> 00000000000000000000000000000000 s1 = 00000000000000000000000000000000 XOR 00000000000000000000000000000000 XOR 00000000000000000000000000000000 s1 = 00000000000000000000000000000000 w[16] = w[0] + s0 + w[9] + s1 w[16] = 01101000011001010110110001101100 + 11001110111000011001010111001011 + 00000000000000000000000000000000 + 00000000000000000000000000000000 // ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ 2^32 w[16] = 00110111010001110000001000110111
ΠΡΠΎ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΠΌ 64 ΡΠ»ΠΎΠ²Π° Π² Π½Π°ΡΠ΅ΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ (w
):
01101000011001010110110001101100 01101111001000000111011101101111 01110010011011000110010010000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000001011000 00110111010001110000001000110111 10000110110100001100000000110001 11010011101111010001000100001011 01111000001111110100011110000010 00101010100100000111110011101101 01001011001011110111110011001001 00110001111000011001010001011101 10001001001101100100100101100100 01111111011110100000011011011010 11000001011110011010100100111010 10111011111010001111011001010101 00001100000110101110001111100110 10110000111111100000110101111101 01011111011011100101010110010011 00000000100010011001101101010010 00000111111100011100101010010100 00111011010111111110010111010110 01101000011001010110001011100110 11001000010011100000101010011110 00000110101011111001101100100101 10010010111011110110010011010111 01100011111110010101111001011010 11100011000101100110011111010111 10000100001110111101111000010110 11101110111011001010100001011011 10100000010011111111001000100001 11111001000110001010110110111000 00010100101010001001001000011001 00010000100001000101001100011101 01100000100100111110000011001101 10000011000000110101111111101001 11010101101011100111100100111000 00111001001111110000010110101101 11111011010010110001101111101111 11101011011101011111111100101001 01101010001101101001010100110100 00100010111111001001110011011000 10101001011101000000110100101011 01100000110011110011100010000101 11000100101011001001100000111010 00010001010000101111110110101101 10110000101100000001110111011001 10011000111100001100001101101111 01110010000101111011100000011110 10100010110101000110011110011010 00000001000011111001100101111011 11111100000101110100111100001010 11000010110000101110101100010110
Π¨Π°Π³ 6.
Π¦ΠΈΠΊΠ» ΡΠΆΠ°ΡΠΈΡ- ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
a, b, c, d, e, f, g, h
ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΈΡ ΡΠ°Π²Π½ΡΠΌΠΈ ΡΠ΅ΠΊΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ Ρ Π΅ΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.h0, h2, h3, h4, h5, h5, h6, h7
. - ΠΠ°ΠΏΡΡΡΠΈΠΌ ΡΠΈΠΊΠ» ΡΠΆΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ aβ¦h . Π¦ΠΈΠΊΠ» Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
for i from 0 to 63
S1 = (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25)
ch = (e and f) xor ((not e) and g)
temp1 = h + S1 + ch + k[i] + w[i]
S0 = (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22)
maj = (a and b) xor (a and c) xor (b and c)
temp2 := S0 + maj
h = g
g = f
f = e
e = d + temp1
d = c
c = b
b = a
a = temp1 + temp2
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠΉΠ΄ΡΠΌ ΠΏΠ΅ΡΠ²ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ. 32:
a = 0x6a09e667 = 01101010000010011110011001100111 b = 0xbb67ae85 = 10111011011001111010111010000101 c = 0x3c6ef372 = 00111100011011101111001101110010 d = 0xa54ff53a = 10100101010011111111010100111010 e = 0x510e527f = 01010001000011100101001001111111 f = 0x9b05688c = 10011011000001010110100010001100 g = 0x1f83d9ab = 00011111100000111101100110101011 h = 0x5be0cd19 = 01011011111000001100110100011001 e rightrotate 6: 01010001000011100101001001111111 -> 11111101010001000011100101001001 e rightrotate 11: 01010001000011100101001001111111 -> 01001111111010100010000111001010 e rightrotate 25: 01010001000011100101001001111111 -> 10000111001010010011111110101000 S1 = 11111101010001000011100101001001 XOR 01001111111010100010000111001010 XOR 10000111001010010011111110101000 S1 = 00110101100001110010011100101011 e and f: 01010001000011100101001001111111 & 10011011000001010110100010001100 = 00010001000001000100000000001100 not e: 01010001000011100101001001111111 -> 10101110111100011010110110000000 (not e) and g: 10101110111100011010110110000000 & 00011111100000111101100110101011 = 00001110100000011000100110000000 ch = (e and f) xor ((not e) and g) = 00010001000001000100000000001100 xor 00001110100000011000100110000000 = 00011111100001011100100110001100 // k[i] is the round constant // w[i] is the batch temp1 = h + S1 + ch + k[i] + w[i] temp1 = 01011011111000001100110100011001 + 00110101100001110010011100101011 + 00011111100001011100100110001100 + 1000010100010100010111110011000 + 01101000011001010110110001101100 temp1 = 01011011110111010101100111010100 a rightrotate 2: 01101010000010011110011001100111 -> 11011010100000100111100110011001 a rightrotate 13: 01101010000010011110011001100111 -> 00110011001110110101000001001111 a rightrotate 22: 01101010000010011110011001100111 -> 00100111100110011001110110101000 S0 = 11011010100000100111100110011001 XOR 00110011001110110101000001001111 XOR 00100111100110011001110110101000 S0 = 11001110001000001011010001111110 a and b: 01101010000010011110011001100111 & 10111011011001111010111010000101 = 00101010000000011010011000000101 a and c: 01101010000010011110011001100111 & 00111100011011101111001101110010 = 00101000000010001110001001100010 b and c: 10111011011001111010111010000101 & 00111100011011101111001101110010 = 00111000011001101010001000000000 maj = (a and b) xor (a and c) xor (b and c) = 00101010000000011010011000000101 xor 00101000000010001110001001100010 xor 00111000011001101010001000000000 = 00111010011011111110011001100111 temp2 = S0 + maj = 11001110001000001011010001111110 + 00111010011011111110011001100111 = 00001000100100001001101011100101 h = 00011111100000111101100110101011 g = 10011011000001010110100010001100 f = 01010001000011100101001001111111 e = 10100101010011111111010100111010 + 01011011110111010101100111010100 = 00000001001011010100111100001110 d = 00111100011011101111001101110010 c = 10111011011001111010111010000101 b = 01101010000010011110011001100111 a = 01011011110111010101100111010100 + 00001000100100001001101011100101 = 01100100011011011111010010111001
ΠΡΠ΅ ΡΠ°ΡΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΅ΡΡ 63 ΡΠ°Π·Π°, ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π°
β¦h
. Π ΠΈΡΠΎΠ³Π΅ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
h0 = 6A09E667 = 01101010000010011110011001100111 h2 = BB67AE85 = 10111011011001111010111010000101 h3 = 3C6EF372 = 00111100011011101111001101110010 h4 = A54FF53A = 10100101010011111111010100111010 h5 = 510E527F = 01010001000011100101001001111111 h5 = 9B05688C = 10011011000001010110100010001100 h6 = 1F83D9AB = 00011111100000111101100110101011 h7 = 5BE0CD19 = 01011011111000001100110100011001 a = 4F434152 = 001001111010000110100000101010010 b = D7E58F83 = 011010111111001011000111110000011 c = 68BF5F65 = 001101000101111110101111101100101 d = 352DB6C0 = 000110101001011011011011011000000 e = 73769D64 = 001110011011101101001110101100100 f = DF4E1862 = 011011111010011100001100001100010 g = 71051E01 = 001110001000001010001111000000001 h = 870F00D0 = 010000111000011110000000011010000
Π¨Π°Π³ 7. ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΠΎΡΠ»Π΅ ΡΠΈΠΊΠ»Π° ΡΠΆΠ°ΡΠΈΡ, Π½ΠΎ Π΅ΡΡ Π²Π½ΡΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°, ΠΌΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ
Π΅ΡΠ°, Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΊ Π½ΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ a
β¦h
. 32.
h0 = h0 + a = 10111001010011010010011110111001 h2 = h2 + b = 10010011010011010011111000001000 h3 = h3 + c = 10100101001011100101001011010111 h4 = h4 + d = 11011010011111011010101111111010 h5 = h5 + e = 11000100100001001110111111100011 h5 = h5 + f = 01111010010100111000000011101110 h6 = h6 + g = 10010000100010001111011110101100 h7 = h7 + h = 11100010111011111100110111101001
Π¨Π°Π³ 8. ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Ρ Π΅Ρ
Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²Π°ΠΆΠ½ΡΠΉ ΡΠ°Π³ β ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ Π²ΡΡ Π²ΠΌΠ΅ΡΡΠ΅.
digest = h0 append h2 append h3 append h4 append h5 append h5 append h6 append h7 = B94D27B9934D3E08A52E52D7DA7DABFAC484EFE37A5380EE9088F7ACE2EFCDE9
ΠΠΎΡΠΎΠ²ΠΎ! ΠΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π³ SHA-2 (SHA-256) (Π±Π΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ).
ΠΠ»Π³ΠΎΡΠΈΡΠΌ SHA-2 Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄Π°
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° Π²ΡΠ΅ ΡΠ°Π³ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ, Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄Π°, ΡΠΎ Π²ΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠΎΡΡΠ½Π΅Π½ΠΈΡ: ΠΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠ΅, ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ 32 Π±ΠΈΡΠ° ΠΈ ΠΏΡΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ ΡΡΠΌΠΌΠΈΡΡΡΡΡΡ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ 232 message β ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ m β ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (ΠΏΠ΅ΡΠ²ΡΠ΅ 32 Π±ΠΈΡΠ° Π΄ΡΠΎΠ±Π½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΠΊΠΎΡΠ½Π΅ΠΉ ΠΏΠ΅ΡΠ²ΡΡ Π²ΠΎΡΡΠΌΠΈ ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΠ΅Π» [ΠΎΡ 2 Π΄ΠΎ 19]): h0 := 0x6a09e667 h2 := 0xbb67ae85 h3 := 0x3c6ef372 h4 := 0xa54ff53a h5 := 0x510e527f h5 := 0x9b05688c h6 := 0x1f83d9ab h7 := 0x5be0cd19 Π’Π°Π±Π»ΠΈΡΠ° ΠΊΠΎΠ½ΡΡΠ°Π½Ρ (ΠΏΠ΅ΡΠ²ΡΠ΅ 32 Π±ΠΈΡΠ° Π΄ΡΠΎΠ±Π½ΡΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΊΡΠ±ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΡΠ½Π΅ΠΉ ΠΏΠ΅ΡΠ²ΡΡ 64 ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΠ΅Π» [ΠΎΡ 2 Π΄ΠΎ 311]): k[ 0. .63 ] := 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°: m := message Η [Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΡΠΉ Π±ΠΈΡ] m := m Η [k Π½ΡΠ»Π΅Π²ΡΡ Π±ΠΈΡ], Π³Π΄Π΅ k β Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π΅ Π½Π΅ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΡΠ°ΠΊΠΎΠ΅ ΡΡΠΎ (L + 1 + K) mod 512 = 448, Π³Π΄Π΅ L β ΡΠΈΡΠ»ΠΎ Π±ΠΈΡ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ (ΡΡΠ°Π²Π½ΠΈΠΌΠ° ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ 512 c 448) m := m Η ΠΠ»ΠΈΠ½Π°(message) β Π΄Π»ΠΈΠ½Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Π±ΠΈΡΠ°Ρ Π² Π²ΠΈΠ΄Π΅ 64-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ Π±Π°ΠΉΡΠΎΠ² ΠΎΡ ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΠΊ ΠΌΠ»Π°Π΄ΡΠ΅ΠΌΡ ΠΠ°Π»Π΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΠΎΡΡΠΈΡΠΌΠΈ ΠΏΠΎ 512 Π±ΠΈΡ: ΡΠ°Π·Π±ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΡΡΠΊΠΈ ΠΏΠΎ 512 Π±ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΡΡΠΊΠ° ΡΠ°Π·Π±ΠΈΡΡ ΠΊΡΡΠΎΠΊ Π½Π° 16 ΡΠ»ΠΎΠ² Π΄Π»ΠΈΠ½ΠΎΠΉ 32 Π±ΠΈΡΠ° (Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ Π±Π°ΠΉΡΠΎΠ² ΠΎΡ ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΠΊ ΠΌΠ»Π°Π΄ΡΠ΅ΠΌΡ Π²Π½ΡΡΡΠΈ ΡΠ»ΠΎΠ²Π°): w[ 0. .15 ] Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ 48 ΡΠ»ΠΎΠ²: Π΄Π»Ρ i ΠΎΡ 16 Π΄ΠΎ 63 s0 := (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-15] rightshift 3) s1 := (w[i- 2] rightrotate 17) xor (w[i- 2] rightrotate 19) xor (w[i- 2] rightshift 10) w[i] := w[i-16] + s0 + w[i-7] + s1 ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ : a := h0 b := h2 c := h3 d := h4 e := h5 f := h5 g := h6 h := h7 ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ»: Π΄Π»Ρ i ΠΎΡ 0 Π΄ΠΎ 63 S1 := (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25) ch := (e and f) xor ((not e) and g) temp1 := h + S1 + ch + k[i] + w[i] S0 := (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22) maj := (a and b) xor (a and c) xor (b and c) temp2 := S0 + maj h := g g := f f := e e := d + temp1 d := c c := b b := a a := temp1 + temp2 ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ°Π½Π΅Π΅ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΠΎΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ: h0 := h0 + a h2 := h2 + b h3 := h3 + c h4 := h4 + d h5 := h5 + e h5 := h5 + f h6 := h6 + g h7 := h7 + h ΠΠΎΠ»ΡΡΠΈΡΡ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ Π΅ΡΠ° SHA-2: digest := hash := h0 append h2 append h3 append h4 append h5 append h5 append h6 append h7
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ Β«How SHA-2 Works Step-By-Step (SHA-256)Β»
PHP: Π₯Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ — Manual
Change language: EnglishBrazilian PortugueseChinese (Simplified)FrenchGermanJapaneseRussianSpanishTurkishOther
Submit a Pull Request Report a Bug
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΠ°Π·ΡΡΡΠ½ΡΡΡΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ, ΡΡΠΎΡΡΠΈΠ΅ Π·Π° Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Π² ΡΠ΅Π»ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
- ΠΠΎΡΠ΅ΠΌΡ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ?
- ΠΠΎΡΠ΅ΠΌΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Ρ Π΅ΡΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ md5 ΠΈ sha1 Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ?
- ΠΡΠ»ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Ρ Π΅ΡΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ, ΠΊΠ°ΠΊ ΠΆΠ΅ Ρ ΡΠΎΠ³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ?
- Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΠ»Ρ?
- ΠΠ°ΠΊ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ»Ρ?
- ΠΠΎΡΠ΅ΠΌΡ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ?
Π₯Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ΅Π³ΠΎ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠ΅Π· Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠ°ΡΠΎΠ»ΠΈ, Ρ ΡΠ°Π½ΡΡΠΈΠ΅ΡΡ Π² Π±Π°Π·Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΊΡΠ°Π΄Π΅Π½Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Π°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π±ΡΠ»Π° ΡΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠΎΠ²Π°Π½Π°, Π° Π·Π°ΡΠ΅ΠΌ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΈ Π°ΠΊΠΊΠ°ΡΠ½ΡΠΎΠ² Π²Π°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ , Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ.
ΠΡΠΈΠΌΠ΅Π½ΡΡ Ρ Π΅ΡΠΈΡΡΡΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΏΠ°ΡΠΎΠ»ΡΠΌ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΡ Π² ΡΠ²ΠΎΠ΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΡΠ°Π·Π³Π°Π΄ΡΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ Π°ΡΠ°ΠΊΡΡΡΠ΅Π³ΠΎ Π²Π°ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ Π΅ΡΠ° Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΌ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ.
ΠΠ°ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π²Π°ΡΠ΅ΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π° Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
- ΠΠΎΡΠ΅ΠΌΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Ρ Π΅ΡΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ md5() ΠΈ sha1() Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ?
Π’Π°ΠΊΠΈΠ΅ Ρ Π΅ΡΠΈΡΡΡΡΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΊΠ°ΠΊ MD5, SHA1 ΠΈ SHA256 Π±ΡΠ»ΠΈ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΡΠΌΠΈ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ. ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠ°Π»ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π²ΡΡΡΠ½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ «Π³ΡΡΠ±ΠΎΠΉ ΡΠΈΠ»Ρ» Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΡ Π²Π²ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π°Π½Π½ΡΡ .
ΠΠ·-Π·Π° ΡΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ «ΠΎΠ±ΡΠ°ΡΠΈΡΡ» ΡΡΠΈ Ρ Π΅ΡΠΈΡΡΡΡΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π΄Π»Ρ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ.
- ΠΡΠ»ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Ρ Π΅ΡΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ, ΠΊΠ°ΠΊ ΠΆΠ΅ Ρ ΡΠΎΠ³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ?
ΠΡΠΈ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° Π²Π°ΠΆΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ: ΡΡΠΎ ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ ΡΠΎΠ»Ρ. Π§Π΅ΠΌ Π²ΡΡΠ΅ ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ Π΅ΡΠΈΡΡΡΡΠ΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²Π·Π»ΠΎΠΌΠ° Π΅Π³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ «Π³ΡΡΠ±ΠΎΠΉ ΡΠΈΠ»Ρ».
PHP ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ API Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Ρ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ.
ΠΡΡΠ³ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ crypt(), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ, ΡΡΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ Π²Π°ΠΌΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄ΠΎΡΡΡΠΏΠ΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ PHP ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, Π΄Π°ΠΆΠ΅ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΈΠ· Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ.
ΠΡΠΈ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Blowfish, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² API Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΠ΅ΠΌ MD5 ΠΈΠ»ΠΈ SHA1, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π³ΠΈΠ±ΠΎΠΊ.
Π£ΡΡΠΈΡΠ΅, ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ crypt() Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠ°ΡΠΎΠ»Ρ, ΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ΅ΡΠ΅ΡΡ ΡΠ΅Π±Ρ ΠΎΡ Π°ΡΠ°ΠΊ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ PHP == ΠΈ ===, Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΡ strcmp() Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΠΊΠΎΠ²ΡΠΌΠΈ. Π€ΡΠ½ΠΊΡΠΈΡ ΠΆΠ΅ password_verify() ΠΊΠ°ΠΊ ΡΠ°Π· Π΄Π΅Π»Π°Π΅Ρ ΡΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ. ΠΠ°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ API Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ.
- Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΠ»Ρ?
ΠΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΎΠ»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°Π·Π³Π°Π΄Π°ΡΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Π·Π°ΡΠ°Π½Π΅Π΅ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΏΠ°Ρ Π²Π²ΠΎΠ΄-Ρ Π΅Ρ, ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ «ΡΠ°Π΄ΡΠΆΠ½Π°Ρ» ΡΠ°Π±Π»ΠΈΡΠ°.
ΠΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΠΎΠ»Ρ — ΡΡΠΎ ΠΊΡΡΠΎΡΠ΅ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π²Π°ΡΠΈ Ρ Π΅ΡΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΌΠΈ ΠΊ Π²Π·Π»ΠΎΠΌΡ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΎΠ±ΡΠΈΡΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ Π·Π°ΡΠ°Π½Π΅Π΅ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΡ Ρ Π΅ΡΠ΅ΠΉ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΌ Π²Π²ΠΎΠ΄ΠΎΠΌ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ»ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΠΏΠΎΠΈΡΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ Ρ Π΅ΡΠ° Π² ΡΠ°ΠΊΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ ΠΌΠ°Π»ΠΎΠ²Π΅ΡΠΎΡΡΠ½ΡΠΌ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ.
password_hash() ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΎΠ»Ρ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π΅ Π±ΡΠ»Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π°, ΠΈ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎ Π½Π°ΠΈΠ»ΡΡΡΠΈΠΉ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ.
- ΠΠ°ΠΊ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ»Ρ?
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ password_hash() ΠΈΠ»ΠΈ crypt(), Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»Ρ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ Π΅ΡΠ°. ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΠΊΠ°ΠΊ Π΅ΡΡΡ Π² Π²Π°ΡΠ΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Ρ Π΅ΡΠΈΡΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ, ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈ password_verify() ΠΈΠ»ΠΈ crypt() ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ.
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΎΡΠΌΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ crypt() ΠΈΠ»ΠΈ password_hash(). ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ, ΠΎΠ½ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΏΠΎΠ»Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅ ΠΈ ΡΠΎΠ»ΠΈ, ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Π΄Π»Ρ Π±ΡΠ΄ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠ°ΡΠΎΠ»Ρ.
οΌadd a note
User Contributed Notes 4 notes
up
down
144
alf dot henrik at ascdevel dot com ΒΆ
8 years ago
For starters, speed IS an issue with MD5 in particular and also SHA1. I've written my own MD5 bruteforce application just for the fun of it, and using only my CPU I can easily check a hash against about 200mill. hash per second. The main reason for this speed is that you for most attempts can bypass 19 out of 64 steps in the algorithm. For longer input (> 16 characters) it won't apply, but I'm sure there's some ways around it. 8 = 7,21389578984e+15 combinations. So on essence: Oh, and I can see there's someone mentioning MD5 and rainbow tables. If you read the numbers here, I hope you realize how incredibly stupid and useless rainbow tables have become in terms of MD5. Unless the input to MD5 is really huge, you're just not going to be able to compete with GPUs here. By the time a storage media is able to produce far beyond 3TB/s, the CPUs and GPUs will have reached much higher speeds. As for SHA1, my belief is that it's about a third slower than MD5. I can't verify this myself, but it seems to be the case judging the numbers presented for MD5 and SHA1. The issue with speeds is basically very much the same here as well. The moral here: I feel like I should comment some of the clams being posted as replies here.
With 100 billion per second it would then take 7,21389578984e+15 / 3600 = ~20 hours to figure out what it actually says. Keep in mind that you'll need to add the numbers for 1-7 characters as well. 20 hours is not a lot if you want to target a single user.
There's a reason why newer hash algorithms are specifically designed not to be easily implemented on GPUs.
Please do as told. Don't every use MD5 and SHA1 for hasing passwords ever again. We all know passwords aren't going to be that long for most people, and that's a major disadvantage. Adding long salts will help for sure, but unless you want to add some hundred bytes of salt, there's going to be fast bruteforce applications out there ready to reverse engineer your passwords or your users' passwords.
up
down
27
swardx at gmail dot com ΒΆ
6 years ago
https://nakedsecurity.sophos.com/2013/11/20/serious-security-how-to-store-your-users-passwords-safely/ Serious Security: How to store your usersβ passwords safely In summary, here is our minimum recommendation for safe storage of your usersβ passwords: Β Β Use a strong random number generator to create a salt of 16 bytes or longer. Whatever you do, donβt try to knit your own password storage algorithm. A great read..
Β Β Feed the salt and the password into the PBKDF2 algorithm.
Β Β Use HMAC-SHA-256 as the core hash inside PBKDF2.
Β Β Perform 20,000 iterations or more. (June 2016.)
Β Β Take 32 bytes (256 bits) of output from PBKDF2 as the final password hash.
Β Β Store the iteration count, the salt and the final hash in your password database.
Β Β Increase your iteration count regularly to keep up with faster cracking tools.
up
down
2
tamas at microwizard dot com ΒΆ
1 year ago
The reason of salting is to avoid using rainbow tables (sorry guys this is the only reason) because it speeds up (shortcuts) the "actual" processing power. PHP salting functions returns all the needed information for checking passwords, therfore this information should be treated as constant from farther point of view. It is also a target for rainbow tables (sure: for much-much larger ones). What is the solution? Yes, it will make problems for hackers. He/she needs to understand your system. No speed up for password cracking will work for him/her without reimplementing your whole system. This is my two cent. While I am reading the comments some old math lessons came into my mind and started thinking. Using constants in a mathematical algorythms do not change the complexity of the algorythm itself.
(((Longer stored hashes AND longer password increases complexity of cracking NOT adding salt ALONE.)))
The solution is to store password hash and salt on different places.
The implementation is yours. Every two different places will be good enough.
up
down
4
fluffy at beesbuzz dot biz ΒΆ
10 years ago
Also, hash algorithms such as md5 are for the purpose of generating a digest and checking if two things are probably the same as each other; they are not intended to be impossible to generate a collision for.Β Even if an underlying password itself requires a lot of brute forcing to determine, that doesn't mean it will be impossible to find some other bit pattern that generates the same hash in a trivial amount of time. As such: please, please, PLEASE only use salted hashes for password storage.Β There is no reason to implement your own salted hash mechanism, either, as crypt() already does an excellent job of this. The security issue with simple hashing (md5 et al) isn't really the speed, so much as the fact that it's idempotent; two different people with the same password will have the same hash, and so if one person's hash is brute-forced, the other one will as well. Β This facilitates rainbow attacks.Β Simply slowing the hash down isn't a very useful tactic for improving security.Β It doesn't matter how slow and cumbersome your hash algorithm is - as soon as someone has a weak password that's in a dictionary, EVERYONE with that weak password is vulnerable.
οΌadd a note
Π₯ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ β NTA Π½Π° vc.
ruΠΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΎΡΠΏΠ΅ΡΠ°ΡΠΎΠΊ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΠΎΠ³ΠΎΠ²ΠΎΠ΅ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π°Π·ΡΠ²Π°ΡΡ Ρ ΡΡ-ΡΡΠΌΠΌΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Ρ ΡΡΠ΅ΠΌ.
3130 ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ²
ΠΠ°ΠΊ ΠΆΠ΅ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ? Π₯ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΡΡΡ ΡΠ΅ΠΊΡΡΠ° ΠΈΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π°ΠΆΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΡΡΡΠΎΠΊΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. ΠΡΠ° ΡΡΡΠΎΠΊΠ° Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ Π΄Π»ΠΈΠ½Ρ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π±ΡΠ»Π° Π²Ρ ΠΎΠ΄Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Ρ Π΅Ρ- Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»ΠΎΠ²ΠΎ bitcoin, ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π· Ρ ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ sha-256 Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π²ΠΎΡ ΡΠ°ΠΊ.
Π₯ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ΅Π½Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΡΠΈΡΡΠΎΠ²Π°Π² ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· Π°Π»Π³ΠΎΡΠΈΡΠΌ AES Π²Ρ Π²ΡΠ΅Π³Π΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°ΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠ°Π·Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π΅Π΅ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ. Π₯ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠ΄Π½Ρ ΡΡΠΎΡΠΎΠ½Ρ. ΠΡΠΎΠΏΡΡΡΠΈΠ² ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²ΠΎΠΉ ΠΏΠ°ΡΠΎΠ»Ρ, Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π·Π½Π°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΡΠ°. ΠΡΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡΠΌ. Π₯ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½Π°Ρ. ΠΠΎΠ·ΠΆΠ΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ.
ΠΡΠΎΡΠΎΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΉ β ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Ρ ΡΡΠ°, Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. Π‘Π΅ΠΉΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π΄ Π²Π°ΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΠ° Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ Ρ ΡΡΠ°ΠΌΠΈ.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ°Π·Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ Π΄Π»ΠΈΠ½Ρ. Π Π»ΡΠ±ΠΎΠΌ ΠΈΠ· ΡΠ»ΡΡΠ°Π΅Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΡΡΠ° ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ. Π§ΡΠΎ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ? ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ Π½Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠ΄Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΡΠ°.
ΠΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΉ, Π½ΠΎ Π² Π½Π°Π΄Π΅ΠΆΠ½ΡΡ Ρ Π΅Ρ- ΡΡΠ½ΠΊΡΠΈΡΡ ΡΠ°ΡΡΠΎΡΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ Π±Π»ΠΈΠ·ΠΊΠ° ΠΊ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ md5 ΡΠ΅ΠΉΡΠ°Ρ ΡΡΠ°Π»Π° Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ ΡΡΡΠΎΠΉΡΠΈΠ²Π° ΠΊ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ.
ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΡΡΠ°Π»ΠΈ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΡΠ½ΡΠ΅, ΡΡΠΎ Π½Π°ΠΉΡΠΈ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡ Π·Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π΅ ΡΠΎΡΡΠ°Π²ΠΈΡ ΡΡΡΠ΄Π°. ΠΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΊ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ Π΄Π»Ρ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ md5. Π§ΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ ΠΎΠ±ΡΡΡΠ½ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌ. Π₯ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π±ΡΡΡΡΠΎΠΉ ΠΈ Π±ΡΡΡΡΠΎ Ρ ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠΎ, ΡΡΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΡ Π΄Π»Ρ Β«Π±ΡΡΡΡΠΎΡΡΠ°Β», ΡΠ°ΠΊ ΡΠ΅ΠΌ Π±ΡΡΡΡΠ΅Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ½Π° ΡΡΠ·Π²ΠΈΠΌΠ° Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ°. ΠΠ»Ρ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ Π»Π°Π²ΠΈΠ½Π½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ°. Π§ΡΠΎ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ? ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ° Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ Ρ Π΅Ρ ΠΏΠΎΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΡΠ΄ΠΈΠ½Π°Π»ΡΠ½ΠΎ.
ΠΠ°ΠΊ ΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½Π°Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ? ΠΠ΄Π΅Π°Π»ΠΎΠΌ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΈΡΡΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²:
- ΠΠ΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ β ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π²ΡΠ΅Π³Π΄Π° Π΄Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΡΠ°.
- ΠΡΡΠΎΠΊΠ°Ρ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
- ΠΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΡΡΡ β Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π·Π½Π°Ρ Π΅Π³ΠΎ Ρ ΡΡ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠΏΡΡΠΎΠΊ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ°.
- ΠΠ°Π»ΠΈΡΠΈΠ΅ Π»Π°Π²ΠΈΠ½Π½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° β ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΊΠ°ΡΠ΄ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ ΡΡΠ°.
- ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΠΉΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΡΠ° Π΄Π»Ρ Π΄Π²ΡΡ ΡΠ°Π·Π½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ
ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΠ΅ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ. ΠΠ°Ρ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ ΡΡΠ° Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π° ΠΎΠ½ΠΈ ΠΎΠΏΡΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ, ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΡΠ° ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ Ρ ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Ρ ΡΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ, ΠΏΠΎΡΠ»Π΅ Π²Π°ΡΠ΅ΠΉ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ, ΡΠΈΡΡΠ΅ΠΌΠ° Π²Π°Ρ Π°Π²ΡΠΎΡΠΈΠ·ΡΠ΅Ρ. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΡΠ° Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ, ΡΠΎ Π²ΡΡΠΊΠ°ΠΊΠΈΠ²Π°Π΅Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π»ΠΎΠ³ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ Π½Π΅Π²Π΅ΡΠ½ΡΠΉ. ΠΠ΄Π΅ΡΡ ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ β ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΡΡΠΈ. ΠΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠΈ, Π²Π·Π»ΠΎΠΌΠ°Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ ΠΏΠΎΠ»ΡΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Ρ ΡΡΠ΅ΠΉ, Π½ΠΎ Π½Π΅ ΡΠΈΡΡΡΠ΅ Π»ΠΎΠ³ΠΈΠ½Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½Π°Ρ, ΠΈΠ· Π½Π΅Π΅ Π½Π΅Π»ΡΠ·Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠΎΠ»Ρ ΠΈ Π»ΠΎΠ³ΠΈΠ½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ, ΠΏΠΎΠ»ΡΡΠΈΠ² Ρ ΡΡΠΈ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ·Π½Π°ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°ΡΠ°ΠΊΠ° ΠΏΠΎ Β«ΡΠ°Π΄ΡΠΆΠ½ΡΠΌΒ» ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ.
ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π·Π°ΡΠ°Π½Π΅Π΅ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Ρ ΡΡΠΈ Π΄Π»Ρ ΠΏΡΠΎΡΡΡΡ ΠΈ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Ρ ΡΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ Ρ ΡΡΠ°ΠΌΠΈ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ. ΠΠΎ ΡΡΡ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½Π° ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°: Π΅ΡΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ, ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΉ Ρ ΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠΎΠΆΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΌΠ°Π»ΠΎΠ²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΡΠΎ ΠΊΡΠΎ-ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, Π²ΠΎΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Π·Π° 2020 Π³ΠΎΠ΄ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ .
Π§ΡΠΎΠ±Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ Ρ Π΅ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Β«ΡΠΎΠ»ΡΒ».
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Β«ΡΠΎΠ»ΡΒ»? Β«Π‘ΠΎΠ»ΡΒ»- ΡΡΠΎ ΡΡΡΠΎΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Β«ΡΠΎΠ»ΠΈΒ» ΠΏΡΠΈ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΡΠΎ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΠΏΠ°ΡΠΎΠ»ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π½ΠΎΠ΅. ΠΠΎΠΏΡΡΡΠΈΠΌ, Π΅ΡΠ»ΠΈ ΠΠ»ΠΈΡΠ° ΠΈ ΠΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ qwerty. Π₯ΡΡ ΡΡΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Π±ΡΠ΄ΡΡ ΠΊΠ°ΡΠ΄ΠΈΠ½Π°Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±ΡΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Β«ΡΠΎΠ»ΡΒ».
Π ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ Π΅ΡΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΆΠ΅ ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΡΡ Π·Π°ΡΠ°Π½Π΅Π΅ Ρ ΡΡΠ΅ΠΉ. ΠΠ»Ρ ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΡΠ°ΠΉΡΠ΅ Β«crackstationΒ» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΠΌ ΡΠ°ΠΌΡΠΉ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ qwerty ΡΠ΅ΡΠ΅Π· Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ sha-256.
ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΡΠ°. ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΡΠ° Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π½Π° ΡΠ°ΠΉΡ Β«crackstationΒ» ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ qwerty. ΠΡΠΎ Π½Π΅ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΠ»ΠΈ ΠΈ Π²ΡΡΠΈΡΠ»ΠΈΠ»ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ° Π΅ΡΡΡ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Ρ ΡΠΆΠ΅ ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΡΠΌΠΈ Ρ ΡΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΈ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°ΡΠΎΠ»Ρ.
ΠΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Β«ΡΠΎΠ»ΠΈΒ» Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»Π½ΡΡ Π·Π°ΡΠΈΡΡ ΠΎΡ Π°ΡΠ°ΠΊ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠΎΠ². ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΡΠ° ΡΠ΅ΡΠ΅Π· Β«Π±ΡΡΡΡΠΎΡΡΒ» ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ. ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡ Π΅ΡΠ΅ ΠΈ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Β«ΡΠΎΠ»ΠΈΒ». ΠΠΎ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΠΊΠΎΡΠΎΡΡΡ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π ΠΊΠ°ΠΊ ΠΌΡ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅, ΡΠΊΠΎΡΠΎΡΡΡ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ, ΡΡΠΎΠ±Ρ Π·Π°ΡΠΈΡΠΈΡΡΡΡ ΠΎΡ Β«Π±ΡΡΡΡΠΎΡΡΠ°Β».
Π’Π°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠ΅ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ ΡΡ ΠΎΠ΄ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΠΌ Π½Π° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ: decrypt, sckrypt ΠΈΠ»ΠΈ argon2. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅ΠΉΡΡΠ°Π»ΠΈΠ·ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ Β«Π±ΡΡΡΡΠΎΡΡΒ» (Brute-force Attack). Π’Π°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Β«ΡΠΎΠ»ΠΈΒ», ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° cost. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ cost Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ Β«ΡΠ°Π΄ΡΠΆΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡΒ».
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ cost ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΊΠ»ΠΎΠ², ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π° ΠΈΡΡ ΠΎΠ΄Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ ΡΡΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π°ΡΠ°ΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅ΡΡ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ ΠΈ Π·Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΏΠ΅ΡΠ΅Π±ΡΠ°ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΠΈ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ Β«ΡΠΎΠ»ΠΈΒ».
Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΡΡΠ°Π½ΡΡ ΠΌΠΎΡΠ½Π΅Π΅ ΠΈ Π°ΡΠ°ΠΊΠΈ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° Π½Π° ΡΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΌΠΎΠ³ΡΡ Π±ΡΡΡΡΠ΅Π΅ Π΄ΠΎΡΡΠΈΠ³Π°ΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ΅Π»ΠΈ. ΠΠ»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ cost, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΊΠ»ΠΎΠ².
Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΈΠΊΠ»ΠΎΠ², ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ Π·Π°ΡΠΈΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡ dropbox. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ dropbox Π±Π΅ΡΡΡ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΎΡΡΡΡ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Β«ΡΠΎΠ»ΠΈΒ». Π Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ Ρ ΡΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠ½ΠΊΡΠΈΡ BCrypt Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Β«ΡΠΎΠ»ΠΈΒ» ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ cost Π²Π΅Π»ΠΈΡΠΈΠ½ΠΎΠΉ Π² 10 ΡΠΈΠΊΠ»ΠΎΠ². ΠΡΠΎ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΎΡ Π±ΡΡΡΡΠΎΡΡΠ° (Brute-force Attack). Π’Π°ΠΊ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ Π²ΡΡ ΡΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΈΡΡΡΠ΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ aes. ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΠΊΡΡΠ²Π°ΡΡ Π²ΡΠ΅ ΡΡΠΈ ΡΠ»ΠΎΠΈ Π·Π°ΡΠΈΡΡ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±ΡΠ°ΡΡΡΡ Π΄ΠΎ Π½ΡΠΆΠ½ΠΎΠΉ Π΅ΠΌΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΡΠΎ ΡΠ»Π°Π±ΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΡΡΠ·Π²ΠΈΠΌΡ. ΠΠ»ΠΈΠ½Π½ΡΠΉ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ
ΠΠ°ΡΠΎΠ»Ρ, ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΡΡΡΡ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ md5 Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ
ΡΠ΅ΠΌ ΠΏΠ°ΡΠΎΠ»Ρ ΠΈΠ· 6 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π½ΠΎ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ΅Π· ΡΡΠ½ΠΊΡΠΈΡ BCrypt Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ cost Π² 25 ΡΠΈΠΊΠ»ΠΎΠ².
Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΡΠΈΡΠ° ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΡΠ΅ΡΠ° Π³Π΄Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ½ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠ°Π½Π΅Π΅. ΠΡΠΈ ΠΌΠ°Π»Π΅ΠΉΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π΅Π³ΠΎ Ρ ΡΡ-ΡΡΠΌΠΌΠ° ΠΊΠ°ΡΠ΄ΠΈΠ½Π°Π»ΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ. ΠΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ? Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ: ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠΊΠ°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ ΡΠ°ΠΉΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠ΄ΠΎΠΌ ΡΠΎ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Ρ ΡΡ-ΡΡΠΌΠΌΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΠ Π½Π° ΡΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°Π²Π½ΠΈΡΡ Ρ ΡΡΠΈ ΠΈ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΉΠ»Ρ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΡΠ΅ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π°Π»ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ Π»ΡΠ΄ΡΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΎΠ½ Π½Π΅ Π±ΡΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½. ΠΠΎ Π·Π΄Π΅ΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΡΡ ΠΈΠ»ΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠΎ Π±ΡΡΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΎΠ½Π½Π°Ρ Π°ΡΠ°ΠΊΠ°, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π° ΡΠ°Π·Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ Ρ Π΅Ρ.
ΠΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΎΠ½Π½Π°Ρ Π°ΡΠ°ΠΊΠ°. ΠΡΠΈΠ²Π΅Π΄ΡΠΌ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠ²Π° ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Β«Π°Β» ΠΈ Β«Π±Β» ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΡ ΡΡΠΌΠΌΡ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΠ²Π° Ρ ΠΎΡΠ΅Ρ ΠΎΠ±ΠΌΠ°Π½ΡΡΡ ΠΠΎΠ±Π°, Π²ΡΠ΄Π°Π² ΡΠ²ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π·Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΠ»ΠΈΡΡ. ΠΠ²Π° ΠΎΡΡΡΠ»Π°Π΅Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΠ»ΠΈΡΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ Ρ ΡΡ ΠΈ ΠΎΡΡΡΠ»Π°Π΅Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡ ΠΠ²Π΅. ΠΠ²Π° ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Β«Π°Β» ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ Β«Π±Β» Π·Π°ΡΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΠΎΠ±Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π°Ρ, ΡΡΠΎ ΠΠ»ΠΈΡΠ° ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π»Π° ΡΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½Π°Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡ ΡΠ²Π΅ΡΡΠ΅Ρ Π»ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Β«Π±Β», ΠΠΎΠ± Π½Π΅ ΡΠ·Π½Π°Π΅Ρ ΠΎ ΠΏΠΎΠ΄ΠΌΠ΅Π½Π΅.
Π‘ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠ½ΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΉ md5 ΡΡΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ.
Π₯ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈ Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π΅, ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π΅ Π±ΠΈΡΠΊΠΎΠΈΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Π΅. Π ΡΡΠΌΠΌΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΡΡ ΡΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ ΡΡΠΈΡΡΠ΅ΡΡΡ ΠΈ ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Β«ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠ½ IDΒ». Β«Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠ½ IDΒ» ΡΡΠΎ Ρ ΡΡ-ΡΡΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΅Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π°. Π₯ΡΡΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈ Π² Π±Π»ΠΎΠΊΠ°Ρ Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π΅. ΠΠ°ΠΆΠ΄ΡΠΉ Π±Π»ΠΎΠΊ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π°, Π±ΠΈΡΠΊΠΎΠΈΠ½Π°, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ²ΠΎΠΉ Ρ ΡΡ ΠΈ Ρ ΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ Π±Π»ΠΎΠΊΠ°, ΡΡΠΎ ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Π² Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ BCrypt.
ΠΠΎΠ΄ΡΠ»Ρ bcrypt Π² PyPi ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ BCrypt, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΡΠ΅Π· pip:
pip install bcrypt
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ BCrypt Ρ ΠΏΠΎΠΌΠΎΡΡΡ pip, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ:
import bcrypt
ΠΠΎΠ·ΡΠΌΠ΅ΠΌ Β«PasswordnewΒ» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠ°ΡΠΎΠ»Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π΅Π³ΠΎ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ BCrypt:
pwd = ‘Passwordnew’ bytePwd = password.encode(‘utf-8’)
Π₯Π΅ΡΠΈΡΡΠ΅ΠΌ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ BCrypt:
# Generate salt mySalt = bcrypt.gensalt() # Hash password hash = bcrypt.hashpw(bytePwd, mySalt)
ΠΡΠΎΠ²Π΅ΡΠΈΠΌ, Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠΎΠ»Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
print(bcrypt.checkpw(password, hash)) # Output: True
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΄Π»Ρ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ Π±ΡΠ» ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ ΠΏΡΠΎΡΠ΅ΡΡ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Ρ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ BCrypt.
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
Π₯Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ — ΠΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡ
Π₯Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β (ΠΈΠ½ΠΎΠ³Π΄Π°Β Β«Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β»,Β Π°Π½Π³Π».Β hashing)Β β ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΒ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡΒ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ Π² Π²ΡΡ ΠΎΠ΄Π½ΡΡΒ Π±ΠΈΡΠΎΠ²ΡΡΒ ΡΡΡΠΎΠΊΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. Π’Π°ΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡΡΡΒ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈΒ ΠΈΠ»ΠΈΒ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΡΠ²ΡΡΡΠΊΠΈ, Π° ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π½Π°Π·ΡΠ²Π°ΡΡΒ Ρ Π΅ΡΠ΅ΠΌ,Β Ρ Π΅Ρ-ΠΊΠΎΠ΄ΠΎΠΌΒ ΠΈΠ»ΠΈΒ ΡΠ²ΠΎΠ΄ΠΊΠΎΠΉ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ(Π°Π½Π³Π».Β message digest). Π₯Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡΒ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΠΏΠΎΠΈΡΠΊΠ° Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ² Π² ΡΠ΅ΡΠΈΡΡ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π΄Π»Ρ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ΅Π»ΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΠΈΠ»ΠΈ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅, Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π·Π°ΡΠΈΡΡ (Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ, Π³Π΄Π΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΠΏΠ°ΡΠΎΠ»ΠΈ, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΌ ΠΏΠ°ΡΠΎΠ»Ρ), ΠΏΡΠΈ Π²ΡΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ (Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΠ°ΡΡΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π° Π΅Π³ΠΎ Ρ Π΅Ρ-ΠΎΠ±ΡΠ°Π·). Π ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ Ρ Π΅Ρ-ΠΊΠΎΠ΄ΠΎΠΌ Π½Π΅Ρ Π² ΡΠΈΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΒ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°; ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Ρ ΡΠ°Π·Π½ΡΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ, Π½ΠΎ Π΄Π°ΡΡΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ Ρ Π΅Ρ-ΠΊΠΎΠ΄ΡΒ β ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅Β ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ. ΠΠ΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΈΠ³ΡΠ°Π΅Ρ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½ΡΡ ΡΠΎΠ»Ρ Π² ΠΎΡΠ΅Π½ΠΊΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΉ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ (ΡΠ°Π·ΡΡΠ΄Π½ΠΎΡΡΡ,Β Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ,Β ΠΊΡΠΈΠΏΡΠΎΡΡΠΎΠΉΠΊΠΎΡΡΡΒ ΠΈΒ Ρ.Β ΠΏ.). ΠΡΠ±ΠΎΡ ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΎΠΉ ΡΠ΅ΡΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΡΠ»ΡΠΆΠΈΡΡΒ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ°Β ΠΈΠ»ΠΈΒ CRC. ΠΡΡΠΎΡΠΈΡΠΠΎΠ½Π°Π»ΡΠ΄ ΠΠ½ΡΡΒ ΠΎΡΠ½ΠΎΡΠΈΡ ΠΏΠ΅ΡΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΈΠ΄Π΅Ρ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΡ IBMΒ Π₯Π°Π½ΡΡ ΠΠ΅ΡΠ΅ΡΡ ΠΡΠ½ΡΒ (Π½Π΅ΠΌ.Β Hans Peter Luhn), ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ²ΡΠ΅ΠΌΡ Ρ Π΅Ρ-ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ½Π²Π°ΡΠ΅ 1953 Π³ΠΎΠ΄Π°. Π 1956 Π³ΠΎΠ΄ΡΒ ΠΡΠ½ΠΎΠ»ΡΠ΄ ΠΡΠΌΠΈΒ (Π°Π½Π³Π».Β Arnold Dumey) Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ Β«Computers and automationΒ» ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ» ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ²ΠΎΠΉ, ΠΊΠ°ΠΊΠΎΠΉ Π΅Ρ Π·Π½Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΡΠ΅ΠΉΡΠ°Ρ. ΠΡΠΌΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π» Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Β«ΠΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ»ΠΎΠ²Π°ΡΡΒ», Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Ρ Π΅Ρ-Π°Π΄ΡΠ΅ΡΠ° ΠΎΡΡΠ°ΡΠΎΠΊ Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ.[1] ΠΠ΅ΡΠ²ΠΎΠΉ ΡΠ΅ΡΡΡΠ·Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠΎΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ Ρ ΠΏΠΎΠΈΡΠΊΠΎΠΌ Π² Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°Ρ , Π±ΡΠ»Π° ΡΡΠ°ΡΡΡΒ Π£ΡΡΠ»ΠΈ ΠΠΈΡΠ΅ΡΡΠΎΠ½Π°Β (Π°Π½Π³Π».Β W. Wesley Peterson) Π²Β IBM Journal of Research and DevelopmentΒ 1957 Π³ΠΎΠ΄Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ» ΠΎΡΠΊΡΡΡΡΡ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·Π°Π» Π½Π° ΡΡ ΡΠ΄ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ. Π‘ΠΏΡΡΡΡ ΡΠ΅ΡΡΡ Π»Π΅Ρ Π±ΡΠ»Π° ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° ΡΠ°Π±ΠΎΡΠ°Β ΠΠ΅ΡΠ½Π΅ΡΠ° ΠΡΡ Π³ΠΎΠ»ΡΡΠ°Β (Π½Π΅ΠΌ.Β Werner Buchholz), Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΎ ΠΎΠ±ΡΠΈΡΠ½ΠΎΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΉ. Π ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π»Π΅Ρ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΎΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ Π±ΡΠ»ΠΎ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π·Π½Π°ΡΠΈΠΌΡΡ ΡΠ°Π±ΠΎΡ. Π 1967 Π³ΠΎΠ΄Ρ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎ Π² ΠΊΠ½ΠΈΠ³Π΅ Π₯Π΅ΡΠ±Π΅ΡΡΠ° Π₯Π΅Π»Π»Π΅ΡΠΌΠ°Π½Π° Β«ΠΡΠΈΠ½ΡΠΈΠΏΡ ΡΠΈΡΡΠΎΠ²ΡΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΒ». Π 1968 Π³ΠΎΠ΄ΡΒ Π ΠΎΠ±Π΅ΡΡ ΠΠΎΡΡΠΈΡΒ (Π°Π½Π³Π».Β Robert Morris) ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π²Β Communications of the ACMΒ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ±Π·ΠΎΡ ΠΏΠΎ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠ° ΡΠ°Π±ΠΎΡΠ° ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ, Π²Π²ΠΎΠ΄ΡΡΠ΅ΠΉ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΎ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π² Π½Π°ΡΡΠ½ΡΠΉ ΠΎΠ±ΠΎΡΠΎΡ ΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠΈΠ²ΡΠ΅ΠΉ ΡΠ°Π½Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²ΡΠΈΠΉΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΆΠ°ΡΠ³ΠΎΠ½Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΡΠ΅ΡΠΌΠΈΠ½ Β«Ρ Π΅ΡΒ». ΠΠΎ Π½Π°ΡΠ°Π»Π° 1990-Ρ Π³ΠΎΠ΄ΠΎΠ² Π² ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΠΎΠΉ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ° ΡΠ΅ΡΠΌΠΈΠ½Ρ Β«Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β» Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΠΌΒ ΠΠ½Π΄ΡΠ΅Ρ ΠΡΡΠΎΠ²Π°Β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΎΡΡ ΡΠ»ΠΎΠ²ΠΎΒ Β«ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°Β», Π° Π΄Π»Ρ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΡΠ΅ΡΠΌΠΈΠ½ «ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ» (ΠΡΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Β«ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡΒ» Ρ 1956 Π³ΠΎΠ΄Π°, Π² ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΠΎΠΌ ΠΈΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠ½ΠΈΠ³ΠΈΒ ΠΠΈΡΡΠ°Β Β«ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Β» 1989 Π³ΠΎΠ΄Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½ Β«ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°Β»). ΠΡΠ΅Π΄Π»Π°Π³Π°Π»ΠΎΡΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΡΡΠΊΠΈΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌΒ Β«ΠΎΠΊΡΠΎΡΠΊΠ°Β». ΠΠ΄Π½Π°ΠΊΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π½Π΅ ΠΏΡΠΈΠΆΠΈΠ»ΡΡ, ΠΈ Π² ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΠΎΠΉ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ΅ΡΠΌΠΈΠ½ Β«Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β».[3] ΠΠΈΠ΄Ρ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΉΠ₯ΠΎΡΠΎΡΠ°Ρ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡ Π΄Π²ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ:
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΡΡΠΈ, ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ»ΡΡΠ΅ΠΉΒ , Π° Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡΒ Β ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ Π±ΠΎΠ»Π΅Π΅Β Β ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ: Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Β«ΠΏΠ»ΠΎΡ ΠΎΠΉΒ» Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΒ , ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅ΡΡΡΠΈΠ·Π½Π°ΡΠ½ΠΎΠΌΡΒ Π½Π°ΡΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠΈΡΠ»ΡΒ Β ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠΈ ΡΠΈΡΡΡ Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ Π΄Π²Π°Π΄ΡΠ°ΡΠΈΠ·Π½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ° ΡΠΈΡΠ»Π°Β . ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ Π΅Ρ-ΠΊΠΎΠ΄ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Β«000Β» ΠΈ Β«999Β», Π½ΠΎ Π΄Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π»ΠΈΡΡ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π½ΡΠ»Π΅ΠΉ ΡΠ»Π΅Π²Π° ΠΈΠ»ΠΈ ΡΠΏΡΠ°Π²Π°.[3] ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π±Π°Π·ΠΈΡΡΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ. Π₯Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° Π΄Π΅Π»Π΅Π½ΠΈΠΈΠΠ΅ΡΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Ρ Π΅ΡΠ° ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π°Β , Π³Π΄Π΅Β Β — ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Ρ Π΅ΡΠ΅ΠΉ: ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΏΡΠΈ ΡΡΡΠ½ΠΎΠΌΒ Β Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Β ΡΡΠ½ΠΊΡΠΈΠΈΒ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ½ΡΠΌ, ΠΏΡΠΈ ΡΡΡΠ½ΠΎΠΌΒ , ΠΈ Π½Π΅ΡΡΡΠ½ΡΠΌΒ β ΠΏΡΠΈ Π½Π΅ΡΡΡΠ½ΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°ΠΉΠ»Π°Ρ . Π’Π°ΠΊΠΆΠ΅ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Β Β ΡΡΠ΅ΠΏΠ΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π΅Ρ-ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΈΡΡ ΡΠΈΡΠ»Π°Β , ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΏΡΠ°Π²Π°, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π±ΠΎΠ»ΡΡΠΎΠΌΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡΒ ΠΏΡΠΎΡΡΠΎΠ΅Β Β β Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΡΠΎΡ Π²ΡΠ±ΠΎΡ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡΠ΅Π»Π΅Π½. ΠΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π΅ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π½Π° Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π° ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π²Π°. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅Β Β ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ΅ΠΏΠ΅Π½ΡΡ Π΄Π²ΠΎΠΉΠΊΠΈ, Π° Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ () ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠΎΠ². Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Ρ Π΅Ρ-ΠΊΠΎΠ΄Π° Π±Π΅ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΡΡΠΈΠ΅Π½ΡΠΎΠ² ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡΒ Β Π½Π° Π·Π°ΡΠ°Π½Π΅Π΅ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌΒ Β ΡΡΠ΅ΠΏΠ΅Π½ΠΈΒ : ΠΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ Π²ΡΠ±ΠΎΡΠ΅Β Β ΡΠ°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΊΠ»ΡΡΠ°ΠΌΠΈ.[3] ΠΡΠ»ΡΡΠΈΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½Π°Ρ ΡΡ Π΅ΠΌΠ° Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΠΡΠΎΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΡΡΠΎΠΈΡ Π² Π²ΡΠ±ΠΎΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ΅Π»ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡΒ , Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΡΒ , Π³Π΄Π΅Β Β β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ Β IBM PCΒ ). Π’ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·ΡΡΡ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΈΠ΄Π°: Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Ρ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ,Β Β ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅ΠΏΠ΅Π½ΡΡ Π΄Π²ΠΎΠΉΠΊΠΈ ΠΈΒ Β Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· ΡΡΠ°ΡΡΠΈΡ Π±ΠΈΡΠΎΠ² ΠΏΡΠ°Π²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡΒ . Π‘ΡΠ΅Π΄ΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΡΡΠΈΡ Π΄Π²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ Π²ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΎ, ΡΡΠΎ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ Π½Π΅ΡΠ»ΡΡΠ°ΠΉΠ½Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉΒ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΡΒ (Π΄ΠΎΠΏΡΡΡΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠΌΡΠ½ Β«ΠΠΠ―1Β», Β«ΠΠΠ―2Β», Β«ΠΠΠ―3Β»). ΠΡΠ»ΡΡΠΈΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΡ Π² ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Ρ Π΅Ρ-Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΡΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠ΅ΠΉ.[3] ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π°ΡΠΈΠ°ΡΠΈΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β Π€ΠΈΠ±ΠΎΠ½Π°ΡΡΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ Β Π·ΠΎΠ»ΠΎΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Β Β Π·Π΄Π΅ΡΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΠΊΒ Β ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΒ Π₯Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½ΡΠΡΡΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ ΠΈ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ»ΡΡΠΈ, ΡΠΎΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠ»ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΠΎΠ²Π° Π² ΠΎΠ΄Π½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»ΡΒ Β ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Β«ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΈΠ»ΠΈΒ». ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΠΏΠΎ ΡΠ°ΠΊΠΎΠΌΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ ΠΠΈΡΡΠΎΠ½Π°. Π₯Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠΈΡΡΠΎΠ½Π°Β (Π°Π½Π³Π».Β Pearson hashing)Β β Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΠΠΈΡΠ΅ΡΠΎΠΌ ΠΠΈΡΡΠΎΠ½ΠΎΠΌ (Π°Π½Π³Π».Β Peter Pearson) Π΄Π»ΡΒ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ²Β Ρ 8-Π±ΠΈΡΠ½ΡΠΌΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΠΌΠΈ, Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΡΡΡΡΠΎΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Ρ Π΅Ρ-ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ. ΠΠ° Π²Ρ ΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ»ΠΎΠ²ΠΎΒ , ΡΠΎΡΡΠΎΡΡΠ΅Π΅ ΠΈΠ·Β Β ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 1 Π±Π°ΠΉΡ, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 0 Π΄ΠΎ 255. ΠΡΠΈΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ Π΅Ρ-ΠΊΠΎΠ΄Π° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄ ΡΡΡΠΎΠΊΡΒ Β ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΎΠΊΒ
Π‘ΡΠ΅Π΄ΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ:
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ,Β Β ΡΠΎΡΡΠΎΡΡΠΈΡ ΠΈΠ·Β Β ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (), ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ΅ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΉ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ (Π°Π½Π³Π».Β Perfect hash function) Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊΠ°ΡΒ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»ΡΡ ΠΈΠ· Π½Π°Π±ΠΎΡΠ°Β Β Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΒ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π»Β Π±Π΅Π·Β ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ. Π ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ΡΡΠΎΒ ΠΈΠ½ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅Β ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ΅ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΊΠ»ΡΡΡ, Π±Π΅Π· ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠ»ΡΡΠ΅. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ (ΠΈΠ»ΠΈ ΡΠΊΠΎΡΠ΅Π΅ k-ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ) Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π±ΡΡΡΡΠΎΠΉ ΠΏΠ°ΠΌΡΡΡΡ, Π³Π΄Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ Π΅ΡΠ΅ΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Ρ ΡΠ°Π½ΡΡΠΈΠΌΠΈΡΡ Π² Π±ΠΎΠ»ΡΡΠΎΠΉ, Π½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΈΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ Π±Π»ΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠΌ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π½Π°ΠΌ Π΄Π°Π½Π½ΡΠ΅, Ρ ΡΠ°Π½ΡΡΠΈΠ΅ΡΡ Π² ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Π·Π° ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΏΡΠΎΡ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Β Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠ°Ρ . Π’Π°ΠΊΠΆΠ΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ΅ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π½Π° Π³ΡΠ°ΡΠ°Ρ , Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅Β Π³ΡΠ°ΡΠ°Β Π½Π΅ ΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌΒ (Π°Π½Π³Π».Β Universal hashing) Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ ΠΎΠ΄Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ, Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ±ΠΎΡ ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° ΠΏΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΌΡΒ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π½ΠΈΠ·ΠΊΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ. Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡ ΠΈ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΊΠ»ΡΡΠΈ ΠΈΠ·Β ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°Β Β Π² ΡΠΈΡΠ»Π°Β . ΠΠ° Π²Ρ ΠΎΠ΄Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ Β Β ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡΡΒ , ΠΏΡΠΈΡΠ΅ΠΌ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ Π·Π°ΡΠ°Π½Π΅Π΅. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅Π»ΡΡ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΡΠΈΡΠ»Π°Β ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ, ΡΠ΅Π³ΠΎ ΡΡΡΠ΄Π½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠ· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ°, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎΠΌΒ . |
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ | Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ PHP
ΠΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 24 ΡΠ°ΡΠ° Π½Π°Ρ ΠΏΠΎΡΠ΅ΡΠΈΠ»ΠΈ 7457 ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΈ 661 ΡΠΎΠ±ΠΎΡ. Π‘Π΅ΠΉΡΠ°Ρ ΠΈΡΡΡ 165 ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² …
ΠΠ΅ΡΠ½ΡΡΡΡΡ ΠΊ: Π§ΠΠΠ
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΠ°Π·ΡΡΡΠ½ΡΡΡΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ, ΡΡΠΎΡΡΠΈΠ΅ Π·Π° Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Π² ΡΠ΅Π»ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
- ΠΠΎΡΠ΅ΠΌΡ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ?
- ΠΠΎΡΠ΅ΠΌΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Ρ ΡΡΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ md5 ΠΈ sha1 Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ?
- ΠΡΠ»ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Ρ ΡΡΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ, ΠΊΠ°ΠΊ ΠΆΠ΅ Ρ ΡΠΎΠ³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ?
- Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΠ»Ρ?
- ΠΠ°ΠΊ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ»Ρ?
- ΠΠΎΡΠ΅ΠΌΡ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ?
Π₯ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ΅Π³ΠΎ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠ΅Π· Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠ°ΡΠΎΠ»ΠΈ, Ρ ΡΠ°Π½ΡΡΠΈΠ΅ΡΡ Π² Π±Π°Π·Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΊΡΠ°Π΄Π΅Π½Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Π°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π±ΡΠ»Π° ΡΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠΎΠ²Π°Π½Π°, Π° Π·Π°ΡΠ΅ΠΌ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΈ Π°ΠΊΠΊΠ°ΡΠ½ΡΠΎΠ² Π²Π°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ , Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ.
ΠΡΠΈΠΌΠ΅Π½ΡΡ Ρ ΡΡΠΈΡΡΡΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΏΠ°ΡΠΎΠ»ΡΠΌ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΡ Π² ΡΠ²ΠΎΠ΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΡΠ°Π·Π³Π°Π΄ΡΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ Π°ΡΠ°ΠΊΡΡΡΠ΅Π³ΠΎ Π²Π°ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ ΡΡΠ° Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΌ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ.
ΠΠ°ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π²Π°ΡΠ΅ΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π° Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
- ΠΠΎΡΠ΅ΠΌΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Ρ ΡΡΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ md5() ΠΈ sha1() Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ?
Π’Π°ΠΊΠΈΠ΅ Ρ ΡΡΠΈΡΡΡΡΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΊΠ°ΠΊ MD5, SHA1 ΠΈ SHA256 Π±ΡΠ»ΠΈ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΡΠΌΠΈ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ. ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠ°Π»ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π²ΡΡΡΠ½ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ «Π³ΡΡΠ±ΠΎΠΉ ΡΠΈΠ»Ρ» Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΡ Π²Π²ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π°Π½Π½ΡΡ .
ΠΠ·-Π·Π° ΡΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ «ΠΎΠ±ΡΠ°ΡΠΈΡΡ» ΡΡΠΈ Ρ ΡΡΠΈΡΡΡΡΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π΄Π»Ρ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ.
- ΠΡΠ»ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Ρ ΡΡΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ, ΠΊΠ°ΠΊ ΠΆΠ΅ Ρ ΡΠΎΠ³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ?
ΠΡΠΈ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° Π²Π°ΠΆΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ: ΡΡΠΎ ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ ΡΠΎΠ»Ρ. Π§Π΅ΠΌ Π²ΡΡΠ΅ ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²Π·Π»ΠΎΠΌΠ° Π΅Π³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ «Π³ΡΡΠ±ΠΎΠΉ ΡΠΈΠ»Ρ».
PHP 5.5 ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ API Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Ρ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ Β»Β PHP Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ Ρ PHP 5.3.7.
ΠΡΡΠ³ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ crypt(), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² PHP 5.3 ΠΈ Π½ΠΎΠ²Π΅Π΅. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ, ΡΡΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ Π²Π°ΠΌΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄ΠΎΡΡΡΠΏΠ΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ PHP ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, Π΄Π°ΠΆΠ΅ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΈΠ· Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ.
ΠΡΠΈ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Blowfish, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² API Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΠ΅ΠΌ MD5 ΠΈΠ»ΠΈ SHA1, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π³ΠΈΠ±ΠΎΠΊ.
Π£ΡΡΠΈΡΠ΅, ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ crypt() Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠ°ΡΠΎΠ»Ρ, ΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ΅ΡΠ΅ΡΡ ΡΠ΅Π±Ρ ΠΎΡ Π°ΡΠ°ΠΊ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ PHP == ΠΈ ===, Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΡ strcmp() Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΠΊΠΎΠ²ΡΠΌΠΈ. Π€ΡΠ½ΠΊΡΠΈΡ ΠΆΠ΅ password_verify() ΠΊΠ°ΠΊ ΡΠ°Π· Π΄Π΅Π»Π°Π΅Ρ ΡΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ. ΠΠ°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ API Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ.
- Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΠ»Ρ?
ΠΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΎΠ»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°Π·Π³Π°Π΄Π°ΡΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Π·Π°ΡΠ°Π½Π΅Π΅ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΏΠ°Ρ Π²Π²ΠΎΠ΄-Ρ ΡΡ, ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ «ΡΠ°Π΄ΡΠΆΠ½Π°Ρ» ΡΠ°Π±Π»ΠΈΡΠ°.
ΠΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΠΎΠ»Ρ — ΡΡΠΎ ΠΊΡΡΠΎΡΠ΅ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π²Π°ΡΠΈ Ρ ΡΡΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΌΠΈ ΠΊ Π²Π·Π»ΠΎΠΌΡ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΎΠ±ΡΠΈΡΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ Π·Π°ΡΠ°Π½Π΅Π΅ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΡ Ρ ΡΡΠ΅ΠΉ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΌ Π²Π²ΠΎΠ΄ΠΎΠΌ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ»ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΠΏΠΎΠΈΡΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ Ρ ΡΡΠ° Π² ΡΠ°ΠΊΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ ΠΌΠ°Π»ΠΎΠ²Π΅ΡΠΎΡΡΠ½ΡΠΌ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ.
password_hash() ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΎΠ»Ρ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π΅ Π±ΡΠ»Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π°, ΠΈ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎ Π½Π°ΠΈΠ»ΡΡΡΠΈΠΉ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ.
- ΠΠ°ΠΊ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ»Ρ?
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ password_hash() ΠΈΠ»ΠΈ crypt(), Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»Ρ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ ΡΡΠ°. ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΠΊΠ°ΠΊ Π΅ΡΡΡ Π² Π²Π°ΡΠ΅ΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Ρ ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ, ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈ password_verify() ΠΈΠ»ΠΈ crypt() ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ.
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΎΡΠΌΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ crypt() ΠΈΠ»ΠΈ password_hash(). ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ, ΠΎΠ½ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΏΠΎΠ»Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅ ΠΈ ΡΠΎΠ»ΠΈ, ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Π΄Π»Ρ Π±ΡΠ΄ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠ°ΡΠΎΠ»Ρ.
ΠΠ΅ΡΠ½ΡΡΡΡΡ ΠΊ: Π§ΠΠΠ
Π₯Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ Π² C | Π’ΠΈΠΏΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ²
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π΅ΡΡΡ ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΎ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ (Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ° ΠΈ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ). ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Β«ΠΏΠΎΠΈΡΠΊΒ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ. Π§ΡΠΎΠ±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠ΅ΠΉ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΠ΅ΠΌΡ O (1), Π° Π² Ρ ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π·Π°ΠΉΠΌΠ΅Ρ Π²ΡΠ΅ΠΌΡ O (n).
Π₯ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Ρ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΡΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°Π΄Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΌΠ΅Π½ΡΡΠΈΠΌ ΠΊΠ»ΡΡΠΎΠΌ Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ. Π ΠΎΠ±ΡΠ΅ΠΌ, Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΊΠ»ΡΡΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠ°Π±Π»ΠΈΡΡ, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΠΊΠ°ΠΊ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ°.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ?
Π₯Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΠΊΠ»ΡΡΠ°ΠΌ ΠΊΠ°ΠΊ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π΄ΡΠ΅ΡΠ° Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅.
Π’ΠΈΠΏΡ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ Π C
Π’ΠΈΠΏΡ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΠ±ΡΡΡΠ½ΡΡΡΡΡ Π½ΠΈΠΆΠ΅:
1. ΠΠ΅ΡΠΎΠ΄ Π΄Π΅Π»Π΅Π½ΠΈΡ
Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΎΡΡΠ°ΡΠΊΠ° ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ: ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ Π² Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ, ΡΠ°Π²Π½Ρ 42,78,89,64, ΠΈ Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ°Π²Π½ΡΠΌ 10.
Π₯ΡΡ (ΠΊΠ»ΡΡ) = ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ % ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°Π±Π»ΠΈΡΡ;
2 = 42 % 10;
8 = 78 % 10;
9 = 89 % 10;
4 = 64 % 10;
Π’Π°Π±Π»ΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
2. ΠΠ΅ΡΠΎΠ΄ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ°
Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ΅Π΄Π½ΡΡ ΡΠ°ΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°.
ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅: 210, 350, 99 890 ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ 100.
210* 210 = 44100, ΠΈΠ½Π΄Π΅ΠΊΡ = 1, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ΅Π΄Π½ΡΡ ΡΠ°ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° (44 1 00) ΡΠ°Π²Π½Π° 1.
350* 350 = 122500, ΠΈΠ½Π΄Π΅ΠΊΡ = 25 ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ΅Π΄Π½ΡΡ ΡΠ°ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° (12 25 00) ΡΠ°Π²Π½Π° 25.
99* 99 = 9801, ΠΈΠ½Π΄Π΅ΠΊΡ = 80 ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ΅Π΄Π½ΡΡ ΡΠ°ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° (9 80 1) ΡΠ°Π²Π½Π° 80.
890* 890 = 792100, ΠΈΠ½Π΄Π΅ΠΊΡ = 21, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ΅Π΄Π½ΡΡ ΡΠ°ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° (79 21 00) ΡΠ°Π²Π½Π° 21.
3. ΠΠ΅ΡΠΎΠ΄ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΈΡΡ
Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π² ΡΠ°Π±Π»ΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ Π΅Ρ-ΠΊΠ»ΡΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΎΡΡΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
Π Π°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ: 23576623, 34687734.
- Ρ Π΅Ρ (ΠΊΠ»ΡΡ) = 235+766+23 = 1024
- Ρ Π΅Ρ-ΠΊΠ»ΡΡ) = 34+68+77+34 = 213
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π² ΡΡΠΈΡ ΡΠΈΠΏΠ°Ρ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΈΡΠ»Π° ΠΎΡ 1 Π΄ΠΎ 100 ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ = 10. ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ = 23, 12, 32
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 23 % 10 = 3;
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 12 % 10 = 2 ;
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 32 % 10 = 2 ;
ΠΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ±Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° 12 ΠΈ 32 ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° 2-Π΅ ΠΌΠ΅ΡΡΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅, Π³Π΄Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠ±Π° Π² ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΠΌΠ΅ΡΡΠΎ, ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΊΠ°ΠΊ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡ. Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΉ.
Π’ΠΈΠΏΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΠΈΠΏΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ:
1. Π¦Π΅ΠΏΠΎΡΠΊΠ°
Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, ΠΎΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ΅ΠΏΠΎΡΠΊΡ Π±Π»ΠΎΠΊΠΎΠ² Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ Π΄Π²Π΅ Π·Π°ΠΏΠΈΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ, ΠΏΠΎΠ»Ρ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΊΠ°ΠΊ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ.
ΠΡΠΈΠΌΠ΅Ρ: 23, 12, 32 Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΡΠ°Π±Π»ΠΈΡΡ 10.
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 23 % 10 = 3;
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 12 % 10 = 2 ;
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 32 % 10 =2 ;
2. ΠΡΠΊΡΡΡΠ°Ρ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΡ
- ΠΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Π·ΠΎΠ½Π΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ. ΠΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡ, Π΄Π²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ Π² ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅, Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΊΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΡΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Π²ΡΠΎΡΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. ΠΡΠΎ ΡΠ½ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅; Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ ΠΏΡΡΡΡΡ Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅ΡΠ΅Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ.
ΠΡΠΈΠΌΠ΅Ρ: 23, 12, 32 Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΡΠ°Π±Π»ΠΈΡΡ 10
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 23 % 10 = 3;
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 12 % 10 =2 ;
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 32 % 10 =2 ;
ΠΠ° ΡΡΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ 12 ΠΈ 32 ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ Π² ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ Π·Π°ΠΏΠΈΡΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 2, Π½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΎΠ½ΠΈ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ.
- ΠΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ Π·ΠΎΠ½Π΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ Ρ Ρ Π΅Ρ-ΠΊΠ»ΡΡΠΎΠΌ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Ρ ΡΡ (ΠΊΠ»ΡΡ) = (Ρ Π΅Ρ (ΠΊΠ»ΡΡ) + x * x) % ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°Π±Π»ΠΈΡΡ (Π³Π΄Π΅ x = 0, 1, 2β¦).
ΠΡΠΈΠΌΠ΅Ρ: 23, 12, 32 Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΡΠ°Π±Π»ΠΈΡΡ 10
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 23 % 10 = 3;
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 12 % 10 =2 ;
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 32 % 10 =2 ;
ΠΠ΄Π΅ΡΡ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ 23 ΠΈ 12 ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»Π΅Π³ΠΊΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ, Π½ΠΎ 32 Π½Π΅ ΠΌΠΎΠ³ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ½ΠΎΠ²Π° 12 ΠΈ 32 ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ Π·Π°ΠΏΠΈΡΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Π² ΡΠ°Π±Π»ΠΈΡΠ΅, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ ΡΡ (ΠΊΠ»ΡΡ) = (32 + 1*1) % 10 = 3. ΠΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π°ΠΏΠΈΡΡ ΡΠ°Π±Π»ΠΈΡΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 3 ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² 23, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x Π½Π° 1. Π₯ΡΡ (ΠΊΠ»ΡΡ) = (32 + 2 * 2) % 10 = 6. ΠΡΠ°ΠΊ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ 32 Π² Π·Π°ΠΏΠΈΡΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 6 Π² ΡΠ°Π±Π»ΠΈΡΠ΅.
- ΠΠ²ΠΎΠΉΠ½ΠΎΠ΅ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ 2 Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ. ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄Π΅Π»Π΅Π½ΠΈΡ. ΠΡΠΎΡΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡ Π΄Π²ΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ; ΠΎΠ½ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°Π²Π΅Π½ 0, ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ.
- 1 (ΠΊΠ»ΡΡ) = ΠΊΠ»ΡΡ % ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°Π±Π»ΠΈΡΡ.
- 2 (ΠΊΠ»ΡΡ) = p β (ΠΊΠ»ΡΡ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ p), Π³Π΄Π΅ p β ΠΏΡΠΎΡΡΡΠ΅ ΡΠΈΡΠ»Π° < ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°Π±Π»ΠΈΡΡ.
ΠΡΠΈΠΌΠ΅Ρ: 23, 12, 32 Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΡΠ°Π±Π»ΠΈΡΡ 10
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 23 % 10 = 3;
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 12 % 10 =2 ;
Π₯ΡΡ (ΠΊΠ»ΡΡ) = 32 % 10 =2 ;
ΠΠ΄Π΅ΡΡ ΡΠ½ΠΎΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ 32 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ hash3 (ΠΊΠ»ΡΡ) = 5 β (32 % 5) = 3. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, 32 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡ 5 Π² ΡΠ°Π±Π»ΠΈΡΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΡΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΡΡΠ³Π½ΡΡΡ ΡΠ΅ΡΠ΅Π· 3 Π·Π°ΠΏΠΈΡΠΈ. ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π΅Π³ΠΎ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Β Π₯Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΠΆΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠΎΠΈΡΠΊΠ° Π΄Π°Π½Π½ΡΡ , ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ ΠΈ Π±ΡΡΡΡΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ°ΡΡ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Π»ΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ°.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠ΅ ΡΡΠ°ΡΡΠΈ
ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² C. ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠ»ΠΈ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ, ΡΠΈΠΏΡ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΉ Π² C ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ Π² Π΄Π΅ΡΠ°Π»ΡΡ . ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π½Π°ΡΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠ΅ ΡΡΠ°ΡΡΠΈ, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅:
- Π₯Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π‘Π£ΠΠ
- ΠΡΠΎΡΠ΅ΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
- Π₯Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ Π² Java
- Π₯Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ Π² PHP
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ Π² C | ΠΠ΅Π½Π½Π΅Ρ ΠΡΡΠΊΠ΅Π½Π΅Π½
ΠΡΠ»ΠΈ Π²Ρ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Python ΠΈΠ»ΠΈ Ruby, Π²Ρ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ ΡΠ»ΠΎΠ²Π°ΡΠΈ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ Π² ΡΡΠΈΡ ΡΠΈΠΏΠ°Ρ Π΄Π°Π½Π½ΡΡ . ΠΠ°ΡΡΠΈΠ² Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΠ΅ΡΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΡΠ΅ΡΠΈΠ΅ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π° ΡΠ»ΠΎΠ²Π°ΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Ρ ΠΏΠ°ΡΠ½ΡΠΌΠΈ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ. Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅ ΠΌΡ ΠΏΠΎΡΡΡΠΎΠΈΠΌ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ° , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ . ΠΠ°ΠΊ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Python, Ρ Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ, Π² C Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ , Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² Π΄Π»ΠΈΠ½ΠΎΠΉ n , Π³Π΄Π΅ n β ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Π½Π°ΡΠ΅ΠΉ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅ . ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π΄Π²Π° Π°ΡΡΠΈΠ±ΡΡΠ°: ΠΊΠ»ΡΡ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°ΡΡΠΈΠ±ΡΡΠ° ΠΊΠ»ΡΡΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ .
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΌΡ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠ΅ΠΌΡΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ΄Π΅ΡΡ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΡΠ΅ΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π½Π°ΡΠΈΡ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ° : ht_create(), ht_put(), ht_get(), ΠΈ ht_free() . ΠΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Ρ ΡΡΠ° ΡΠ°Π±Π»ΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π·Π΄Π΅ΡΡ.
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π²ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ . W e Π½Π°Π·ΠΎΠ²Π΅Ρ ΡΡΠΈ Π΄Π²Π΅ ΡΡΡΡΠΊΡΡΡΡ List ΠΈ HashTable . List ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ , ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π°ΡΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅: ΠΊΠ»ΡΡ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ . Π£ Π½Π΅Π³ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ next Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° List (Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π½Π°Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ next ΠΎΠ±Π»Π΅Π³ΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ). ΠΡΠΎΡΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° HashTable ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°ΠΌΡ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ° .
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² Π½Π°ΡΠΈ ΡΡΡΡΠΊΡΡΡΡ, ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ ht_create() , ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ HashTable Π΄Π»ΠΈΠ½Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π½Π°ΡΡ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ , Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π΅Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠΏΠΈΡΠΊΠ° . Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ , Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΡΠΎ ΠΏΠΎΡΠ»ΡΠΆΠΈΡ Π΄Π²ΠΎΡΠΊΠΎΠΉ ΡΠ΅Π»ΠΈ: Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΠ°Π½Π΅Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π²ΡΠ΅Π³ΠΎ ΠΊΠ»ΡΡΠ° 9.0206 .
ΠΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ ht_put() , ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² Π½Π°ΡΠ΅ΠΉ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅ , Π²ΡΠ΄Π΅Π»ΡΡ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° List Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ node ΠΈ Π½Π°Π·Π½Π°ΡΠ°Ρ ΡΡΡΠΎΠΊΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ»ΡΡΡ . ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ , r ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ·Π΅Π» , Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ node_handler() , ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ. ΠΡ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π²ΡΡΠ°Π²Π»ΡΠ»Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠ°ΡΡΠΈΠ²Π°, Π½ΠΎ ΠΎΠ½Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π°Π½Π½ΡΠ΅, Ρ ΡΠ°Π½ΡΡΠΈΠ΅ΡΡ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ β ΡΠ»ΡΡΠ°ΠΉ, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΊΠ°ΠΊ 9. 0205 ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ . Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ 90Β 205 90Β 206 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡ ΠΈΡ ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅. Π’Π΅ΠΏΠ΅ΡΡ Π² ΠΈΠ³ΡΡ Π²ΡΡΡΠΏΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ next Π½Π°ΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ List , ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠΊΠ°Π·ΡΠ²Π°Π» Π½Π° ΡΠ°Π½Π΅Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π²ΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ . Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΠΈΡΠΊΠ° Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΈΠ· 90Β 205 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ° 90Β 206 Π² ΡΡΠΎΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° NULL.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ ht_get() , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ , ΠΊΠ°ΠΊ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΠΎΠ²Π°ΡΠ΅ Python. ΠΡΠΎ Π²ΠΎΠ·ΡΠΌΠ΅Ρ Π½Π°ΡΡ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ Ρ ΠΊΠ»ΡΡΠΎΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΠΈΡΠΊΠ° Ρ ΠΊΠ»ΡΡΠΎΠΌ . ΠΡΠ»ΠΈ ΠΎΠ½ Π½Π°ΠΉΠ΄Π΅Π½, ΡΠΎ ΠΎΠ½ Π»ΡΠ±Π΅Π·Π½ΠΎ Π²Π΅ΡΠ½Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° .
ΠΠ°ΡΠ° ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΠ΅Π»Ρ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠ°, Π½ΠΎ Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π΅ΡΠ΅ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°. Π Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΠΌΡ Π²ΡΠ΄Π΅Π»ΠΈΠ»ΠΈ 72 Π±Π°ΠΉΡΠ° ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π΅ Π·Π°Π±ΡΠ΄Π΅ΠΌ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΡΡΡ ΠΏΠ°ΠΌΡΡΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠ΅ΡΠ΅ΠΊ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΊΠΎΠ΄ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠ°ΠΉΠ»Ρ ΡΡΠ΅Π±Π½ΠΈΠΊΠ°, ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³. Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΈ, ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ». ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΎΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ valgrind, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΡ. ΠΡΠΈ ΡΠ°ΠΉΠ»Ρ Π±ΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ubuntu 14.04.
$ git clone https://github.com/bennettbuchanan/holbertonschool-low_level_programming$ cd holbertonschool-low_level_programming/example_hash_table/$ gcc -Wall -Wextra -Werror -pedantic main.c ht_put.c ht_create.c hash.c ht_get. c ht_free.c$ valgrind ./a.out
ΠΠ° Π²ΡΡ ΠΎΠ΄Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π±ΡΠΊΠ²Ρ C, ΠΈ valgrind ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π½Π°ΠΌ, ΡΡΠΎ ΡΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ C β ΡΡΠΎ Π²Π΅ΡΠ΅Π»ΠΎ . Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π·Π° Π½Π°ΠΌΠΈ!
Get-FileHash (Microsoft.PowerShell.Utility) β PowerShell | Microsoft Π£Π·Π½Π°ΠΉΡΠ΅
ΠΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠ²ΡΠ·Ρ Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ
Π’Π²ΠΈΡΡΠ΅Ρ LinkedIn Π€Π΅ΠΉΡΠ±ΡΠΊ ΠΠ». Π°Π΄ΡΠ΅Ρ
- β ΠΏΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ
- ΠΠΎΠ΄ΡΠ»Ρ:
- Microsoft.PowerShell.Π£ΡΠΈΠ»ΠΈΡΠ°
ΠΡΡΠΈΡΠ»ΡΠ΅Ρ Ρ Π΅Ρ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°ΠΉΠ»Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ Π΅Ρ-Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
Get-FileΠ₯ΡΡ [-ΠΡΡΡ] <Π‘ΡΡΠΎΠΊΠ°[]> [[-ΠΠ»Π³ΠΎΡΠΈΡΠΌ] ] [ ]
Get-FileΠ₯ΡΡ [-LiteralPath] <Π‘ΡΡΠΎΠΊΠ°[]> [[-ΠΠ»Π³ΠΎΡΠΈΡΠΌ] ] [ ]
Get-FileΠ₯ΡΡ [-InputStream] <ΠΏΠΎΡΠΎΠΊ> [[-ΠΠ»Π³ΠΎΡΠΈΡΠΌ] ] [ ]
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ Get-FileHash
Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ Ρ
Π΅Ρ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°ΠΉΠ»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ
ΡΡ-Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°. Π₯ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΡΡΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ ΡΠ°ΠΉΠ»Π°. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ
ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° ΠΏΠΎ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ, Ρ
Π΅Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ ΡΠ°ΠΉΠ»Π°. ΠΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° ΠΈ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ
Π΅Ρ-Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°ΠΆΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π²
ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Ρ
Π΅Ρ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°.
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ Π΅Ρ-Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ β ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° Π½Π΅ Π±ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ. Π₯ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ MD5 ΠΈ SHA1, Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΌ ΠΎΡ Π°ΡΠ°ΠΊ, ΡΠ΅Π»Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° β Π»ΠΈΠ±ΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ, Π»ΠΈΠ±ΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠ°Π½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠΏΡΡΠΊΠΈ β ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ Π΅Ρ-Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΈΠΌΠ΅ΡΡ Π»ΠΈ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ ΡΠ°ΠΉΠ»Π° ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Ρ ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ Get-FileHash
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ SHA256, Ρ
ΠΎΡΡ Π»ΡΠ±ΠΎΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Ρ
Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ,
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ.
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΡΠΈΠΌΠ΅Ρ 1. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Ρ ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°ΠΉΠ»Π°
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ Get-FileHash
Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ
ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ /etc/apt/sources.list
ΡΠ°ΠΉΠ». ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Ρ
ΡΡ-Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, SHA256 . ΠΡΡ
ΠΎΠ΄
ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΡΠΌΠ°ΡΠΎΠ² 9ΠΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ 0388 Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° Π² Π²ΠΈΠ΄Π΅ ΡΠΏΠΈΡΠΊΠ°.
Get-FileHash /etc/apt/sources.list | Π‘ΠΏΠΈΡΠΎΠΊ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΠΠ»Π³ΠΎΡΠΈΡΠΌ: SHA256 Π₯ΡΡ: 3CBCFDDEC145E3382D592266BE193E5BE53443138EE6AB6CA09FF20DF609E268 ΠΡΡΡ: /etc/apt/sources.list
ΠΡΠΈΠΌΠ΅Ρ 2. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Ρ Π΅Ρ-Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°ΠΉΠ»Π° ISO
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ Get-FileHash
ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ SHA384 Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ
ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΡ
Π΄Π»Ρ ΡΠ°ΠΉΠ»Π° ISO, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π·Π°Π³ΡΡΠ·ΠΈΠ» ΠΈΠ· ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΡΠ²ΠΎΠ΄ Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² Format-List
ΠΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ Π΄Π»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° Π² Π²ΠΈΠ΄Π΅ ΡΠΏΠΈΡΠΊΠ°.
Get-FileHash C:\Users\user1\Downloads\Contoso8_1_ENT.iso -ΠΠ»Π³ΠΎΡΠΈΡΠΌ SHA384 | Π‘ΠΏΠΈΡΠΎΠΊ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΠΠ»Π³ΠΎΡΠΈΡΠΌ: SHA384 Π₯ΡΡ: 20AB1C2EE19FC96A7C66E33917D191A24E3CE9DAC99DB7C786ACCE31E559144FEAFC695C58E508E2EBBC9D3C96F21FA3 ΠΡΡΡ: C:\Users\user1\Downloads\Contoso8_1_ENT.iso
ΠΡΠΈΠΌΠ΅Ρ 3. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Ρ Π΅Ρ-Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ System.Net.WebClient Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈΠ·
Π‘ΡΡΠ°Π½ΠΈΡΠ° Π²ΡΠΏΡΡΠΊΠ° Powershell. Π Π΅Π»ΠΈΠ·
ΡΡΡΠ°Π½ΠΈΡΠ° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΠ΅Ρ Ρ
ΡΡ SHA256 ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ
Π΅ΡΠ°
Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΌΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ Ρ Get-FileHash
.
$wc = [System.Net.WebClient]::new() $pkgurl = 'https://github.com/PowerShell/PowerShell/releases/download/v6.2.4/powershell_6.2.4-1.debian.9_amd64.deb' $publishedHash = '8E28E54D601F0751922DE24632C1E716B4684876255CF82304A9B19E89A9CCAC' $FileHash = Get-FileHash-InputStream($wc. OpenRead($pkgurl)) $FileHash.Hash -eq $publishedHash True
ΠΡΠΈΠΌΠ΅Ρ 4. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Ρ ΡΡΠ° ΡΡΡΠΎΠΊΠΈ
PowerShell Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ
ΡΡΠ° ΡΡΡΠΎΠΊΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ
ΡΡΡΠΎΠΊΡ Π² ΠΏΠΎΡΠΎΠΊ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ InputStream ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Get-FileHash
Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Ρ
Π΅Ρ-Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
$stringAsStream = [System.IO.MemoryStream]::new() $writer = [System.IO.StreamWriter]::new($stringAsStream) $writer.write("ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ") $ΠΏΠΈΡΠ°ΡΠ΅Π»Ρ.Flush() $stringAsStream.Position = 0 Get-FileHash -InputStream $stringAsStream | Π₯Π΅Ρ Select-Object Π₯ΡΡ ---- 64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
-ΠΠ»Π³ΠΎΡΠΈΡΠΌ
-InputStream
-LiteralPath
-Path
ΠΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
Π‘ΡΡΠΎΠΊΠ°
ΠΠΎΠΌΠ°Π½Π΄Π»Π΅ΡΡ Get-FileHash
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΡΠΎΠΊΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΏΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ.
ΠΡΠ²ΠΎΠ΄Ρ
Microsoft. Powershell.Utility.FileHash
Get-FileHash
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΏΡΡΡ ΠΊ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ Ρ
ΡΡ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ
Π΅ΡΠ°.
- Π‘ΠΏΠΈΡΠΎΠΊ ΡΠΎΡΠΌΠ°ΡΠΎΠ²
ΠΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠ²ΡΠ·Ρ
ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΎΡΠ·ΡΠ² Π΄Π»Ρ
ΠΡΠΎΡ ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ°
ΠΡΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ΅ ΠΎΡΠ·ΡΠ²Ρ ΠΎ ΡΡΡΠ°Π½ΠΈΡΠ΅
Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡ β Cprogramming.com
ΠΡΠΈΠΊ Π‘Ρ
Π₯ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ, ΡΡΡΡΠΊΡΡΡΠ°, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΊΠ°ΠΊ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ»ΠΈ ΠΊΠ°ΡΡΠ°. ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π² C++ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ ΠΊΠ°ΡΡΡ STL Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ½Π°ΡΠ½ΡΡ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π², Π½ΠΎ ΡΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ Π²Π°Ρ Ρ ΡΠ΅ΠΎΡΠΈΠ΅ΠΉ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΠ°ΡΡΠΈΠ²Ρ Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΠΈ ΠΌΠ°ΡΡΠΈΠ²Ρ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ Π±ΠΎΠ»ΡΡΠΈΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, ΠΊΠ°ΠΊ C, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ. Π ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ C (ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ) Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ. Π§ΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ 50 ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΈΒ», Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊ Π½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΈ[50];
ΠΠ΄Π½Π°ΠΊΠΎ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΡΠ·Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ Β«ΠΊΠ»ΡΡΠΎΠΌΒ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΡΠΌ, ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ Π΄ΠΎ Π½ΠΎΠΌΠ΅ΡΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π°ΠΏΠΈΡΠΈ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ° Β«ΠΠΆΠΎΠ½ ΠΡΠ°ΡΠ½Β» ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
. ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΈ["ΠΡΠ°ΡΠ½, ΠΠΆΠΎΠ½"];
ΠΠ΄Π½Π° ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΎΡΠΌ ΠΌΠ°ΡΡΠΈΠ²Π° Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ. Π Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΊΠ»ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²ΠΌΠ΅ΡΡΠΎ Π½ΠΎΠΌΠ΅ΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠ°. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° Π² ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ. ΠΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π₯Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ
Π₯Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅ΠΌ ΡΠ³ΠΎΠ΄Π½ΠΎ. ΠΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½Π° Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΊΠΎΠ΄ΠΈΡΡΠ΅ΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π½ΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠ»ΡΡΠ° ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π½Π°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΡΡ ΠΎΠ΄Π½Π° Π²Π°ΠΆΠ½Π°Ρ Π²Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠΏΡΡΠΊΠ°ΡΡ ΠΈΠ· Π²ΠΈΠ΄Ρ. ΡΡΠΎ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π΅ΠΉ Π΄Π°Π΅ΡΡΡ ΡΠΎΡ ΠΆΠ΅ ΠΊΠ»ΡΡ.
ΠΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΈΠ· 200 Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ Π»ΡΠ΄Π΅ΠΉ. ΡΠ°ΠΌΠΈΠ»ΠΈΠΈ. Π₯Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ° Π±ΡΠ»Π° Π±Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΉ Π΄Π»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° Π²Π΅ΡΠ΅ΠΉ, ΡΠ°ΠΊ ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π°ΠΏΠΈΡΡΠΌ Ρ ΡΠ°ΠΌΠΈΠ»ΠΈΡΠΌΠΈ Π»ΡΠ΄Π΅ΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ΅ΠΉ.
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ°Π²Π°ΠΉΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΠΈΠ· 260 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΎΠ±Ρ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΡ Π±ΡΠΊΠ²Ρ Π°Π»ΡΠ°Π²ΠΈΡΠ° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ ΠΎΠΊΠΎΠ»ΠΎ 10 ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π±ΡΠΊΠ²Π°ΠΌΠΈ ΠΈ ΡΠΈΡΡΠ°ΠΌΠΈ:
Π --> 0 Π --> 1 Π‘ --> 2 Π --> 3 ... ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅ Π΄ΠΎ Z --> 25.
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π±ΡΠΊΠ²Ρ ΡΠ°ΠΌΠΈΠ»ΠΈΠΈ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ Π½Π°Ρ 260 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΡ Π±ΡΠΊΠ²Ρ ΡΠ°ΠΌΠΈΠ»ΠΈΠΈ Π½Π° 10. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ»ΡΡ, ΠΊΠ°ΠΊ Β«Π‘ΠΌΠΈΡΒ», ΠΊΠ»ΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ Π² ΠΈΠ½Π΄Π΅ΠΊΡ 180 (S β ΡΡΠΎ 19-Ρ Π±ΡΠΊΠ²Π° ΠΈΠΌΠ΅Π½ΠΈ). Π°Π»ΡΠ°Π²ΠΈΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ S --> 18 ΠΈ 18 * 10 = 180).
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅ΡΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π²ΡΠ΅ΠΌΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ°Π»ΠΎ. Π‘Π²ΡΠ·Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ Π±ΡΡΡΡΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΡΠΊΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΏΠ°ΡΡ ΠΊΠ»ΡΡ-ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
Π‘ΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ
ΠΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°ΠΌΠΈΠ»ΠΈΠΈ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π±ΡΠΊΠ²ΠΎΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Β«ΠΠ΅Π±ΡΡΠ΅ΡΒ» ΠΈ Β«Π£ΠΈΡΠ½ΠΈΒ» Π±ΡΠ΄ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΠΎΠΌΡ Π½ΠΎΠΌΠ΅ΡΡ, 22. ΠΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π° ΠΊΠ»ΡΡΠ° ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΠΌΠ΅ΡΡΠΎ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠ΅ΠΉ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ Π²ΡΡΠ°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ, ΡΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΡΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ ΠΏΠΎΡΡΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌΠΈ, Π½ΠΎ ΡΠΎΠ³Π΄Π° ΡΡΠΎ Π»ΠΈΡΠ°Π΅Ρ ΡΠΌΡΡΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΠ½Π° Π±ΡΡΡΡΠ°Ρ ΠΈ ΠΌΠ°Π»Π΅Π½ΡΠΊΠ°Ρ.
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ Ρ ΠΎΡΠΊΡΡΡΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠΊΡΡΡΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π·Π°ΠΊΡΡΡΠΎΠ³ΠΎ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΠΊΠ°ΠΆΠ΅ΠΌ Β«WhitneyΒ», ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΡΠ΅, ΡΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«ΠΠ΅Π±ΡΡΠ΅ΡΒ»), Π²Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ Β«ΠΠ΅Π±ΡΡΠ΅ΡΠ°Β»). ΠΡΠ»ΠΈ ΠΎΠ½ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½, Π²Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΏΡΡΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², Π²ΡΠ΅ ΡΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΠ»ΠΈΡΡ!)
... 220 Β«ΠΠ΅Π»ΡΠΉΒ» | <-- ### Π‘Π’ΠΠΠΠΠΠΠΠΠΠ ### : ΠΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ. 221 Β«ΠΠ΅Π±ΡΡΠ΅ΡΒ» | <-- ### COLLISION ### : Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ. 222 | ΠΠ°Π°Π°, ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ. ΠΡΡΠ°Π²ΡΡΠ΅ ΡΡΠ΄Π°. 223 | ...
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π²ΡΡΠ°Π²ΠΊΠΈ, Π½Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. Π£ Π²Π°Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ Π²Ρ Π½Π°ΡΠ»ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½, Π° Π½Π΅ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± β ΠΏΡΠΎΡΡΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΊΠ»ΡΡΠΈ. (ΠΡΡΡ Π»ΠΈ Ρ ΡΡΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΈΠΌΡ "Whitney"? ΠΡΡΡ Π»ΠΈ Ρ ΡΡΠΎΠΉ?) ΠΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π½Π°ΡΠ»ΠΈ, Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½ΠΈΡ , ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΠΉΠ΄Π΅ΡΠ΅ Π΄ΠΎ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΏΡΡΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ (ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π½Π΅Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅).
ΠΠ²ΡΡΠΈΡ ΠΏΡΠΎΡΡΠΎ, ΠΏΡΠ°Π²Π΄Π°? ΠΡ, ΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌ. Π§ΡΠΎ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ, ΡΡΠΎ Π²Ρ ΡΠ±Π΅Π³Π°Π΅ΡΠ΅ Π·Π° ΠΊΠΎΠ½Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π°?
ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ Π²ΡΡΠ°Π²ΠΈΡΡ "ΠΠΎΡΠ±Ρ" ΠΈ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΈΠ·-Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ, ΡΡΠΎ ΡΠΎΠ³Π΄Π°? ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
... 258 Β«Π£ΠΈΡΠ½ΠΈΒ» | <-- ΠΠ΅Ρ, Π½Π΅ ΠΏΡΡΡΠΎ 259 Β«ΠΠ΅Π½ΠΎΒ» | ΠΠ΅Ρ, Π½Π΅ ΠΏΡΡΡΠΎΠΉ ---------------- <-- ΠΠΌΠΌΠΌ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ?
ΠΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ½ΠΎΠ²Π° Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ Π½Π°ΡΠ°Π»Ρ. ΠΡΠ»ΠΈ ΠΏΡΡΡΡΡ ΠΌΠ΅ΡΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π΅Ρ, ΡΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ΅ΡΡΠ° Π² Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠ»ΠΈ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ², ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ Π½Π°ΡΠ΅ΠΉ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΈΠ»ΠΈ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΌΡ Ρ ΡΡΠΈΠΌ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ), ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΏΠΎΠΊΡΡΠ²Π°Π» ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ½ΠΎΠ²Π°, Π½ΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅ΡΡΠΎ. (ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΡΡΠ°Π²ΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΊΠΎΠΏΠΈΠΈ O (n) ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΡΡΠΎΡΡΡΡΡ, Π½ΠΎ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΡΡ n Π²ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΡΠ°Π²ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, O (1). (ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ, ΠΊΠ°ΠΊ "O(n") ΠΈ "ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ" ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, Π²Π·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° Π‘Π΅ΡΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ Cprogramming.com ΠΎΠ± Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.) ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΈ ΠΏΠ»ΠΎΡ ΠΎ β ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡΠ° Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ.
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΎΠΉ
ΠΡΠΎΡΠ°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ Ρ Π΅Ρ-ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² Ρ ΡΡ-ΠΈΠ½Π΄Π΅ΠΊΡΠ΅. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° β Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Ρ Π΅ΡΠΈΡΡΡΡΠΈΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈ Ρ Π΅Ρ-ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡΡ .
ΠΠ΄Π½Π° ΠΏΡΠΈΡΡΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π°Π±ΠΎΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΡΡΠΈΡΡΡΡΡΡ "ΡΡΠ΄ΠΎΠΌ" Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ, ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ. ΠΡΠΈ ΠΎΡΠΊΡΡΡΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΡΡΠΈΡΡΡΡ ΠΏΠΎΡΡΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Ρ Π²Π°Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π² ΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ Ρ ΡΡΠ°. ΠΡΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ Π΄ΡΡΠ³ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²Π»ΠΈΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ.
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ
ΠΠΎΠΎΠ±ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Π²Ρ Π±Ρ Π½Π΅ Ρ ΠΎΡΠ΅Π»ΠΈ, ΡΡΠΎΠ±Ρ Π²Π°ΡΠ° Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π΅Ρ ΠΏΠΎΠΈΡΠΊ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΡΡΠ΅. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅, Ρ ΠΎΡΠΊΡΡΡΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΏΠΎΠΈΡΠΊ, ΠΏΠΎΠΊΠ° Π²Ρ Π½Π΅ Π½Π°ΡΠΊΠ½Π΅ΡΠ΅ΡΡ Π½Π° ΠΏΡΡΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ ΠΈΠ»ΠΈ Π½Π΅ Π²Π΅ΡΠ½Π΅ΡΠ΅ΡΡ ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΊΠ΅ β Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ ΠΏΠΎΠΈΡΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ O( ΠΏ.), ΡΡΠΎ ΡΠΆΠ°ΡΠ½ΠΎ. Π Π΅Π°Π»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· 10 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Ρ 7 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°Π²Π΅Π½ 0,7. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, 0.7, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°.
ΠΡΠ±ΠΎΡ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Ρ Π²Π°Ρ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ, ΡΠ΅ΠΌ Ρ ΡΠΆΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π°ΡΠ΅ΠΉ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ Π±ΡΠ΄Π΅Ρ. ΠΠΌΠ΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Π²Π°ΡΠ΅ΠΉ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΠ΅Π΄Π½Π΅Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠ° - ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ, ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ O (1). (Π€ΠΎΠΊΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΡΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°ΡΡΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π°ΡΠ½Π΅ΡΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠ°ΡΡΠΈΠ².) ΠΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΡΡΠΈΡΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠ³Π΄Π° Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π½Π°ΡΠ°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π²Π°Ρ ΠΏΠΎΠΈΡΠΊ Ρ ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅Ρ ΠΎΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌΡ. Π²ΡΠ΅ΠΌΡ ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, Π΅ΡΠ»ΠΈ Π±Ρ Π²Π°ΡΠ° Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π»Π° Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° 0, ΠΏΠΎΠΌΠ΅ΡΠ°Ρ ΠΈΡ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π°. Π’ΠΎΠ³Π΄Π° ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°.
ΠΡΠ±ΠΎΡ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ². ΠΈ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°. ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π΅ Π½ΡΠΆΠ΅Π½ Π°Π»Π³ΠΎΡΠΈΡΠΌ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΡΠΎ ΡΠΌΠΎΡΡΠΈΡ Π½Π° ΠΏΠ΅ΡΠ²ΡΡ Π±ΡΠΊΠ²Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π±ΡΠΊΠ²Ρ Π°Π»ΡΠ°Π²ΠΈΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π΅ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ - Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠΌΠ΅Π½, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠ½ΠΈΡΠ΅ Ρ S, ΡΠ΅ΠΌ Ρ Z. ΠΡ ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π²Π°ΡΠΈ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ»ΠΈ Π±ΡΡΡΡΠΎ - Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΅ΡΡΡΡ Π²ΡΡ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΎΡ Ρ ΡΡΠ° table, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΠ΅ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ. ΡΡΠΎ Π΄Π΅Π»ΠΈΠΊΠ°ΡΠ½ΡΠΉ ΠΎΡΡΠ°ΡΠΎΠΊ ΡΡΠ΅Π΄ΡΡΠ². ΠΠ»Ρ ΠΎΠ΄Π½ΠΎΠΉ Ρ ΠΎΡΠΎΡΠ΅ΠΉ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΡΠΎΡ Ρ Π΅Ρ-Π°Π»Π³ΠΎΡΠΈΡΠΌ.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΡ ΠΏΠ΅ΡΠ²ΡΡ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ! ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅. ΡΡΠΎ Π½Π΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎ, Π° ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π΅Π½.
Π‘ΡΠ°ΡΡΠΈ ΠΏΠΎ ΡΠ΅ΠΌΠ΅
Π‘Π²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ
ΠΠ°ΡΡΠ° STL, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²
Zero Hash ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°Π΅Ρ 35 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ΅ΡΠΈΠΈ C, Π²ΠΎΠ·Π³Π»Π°Π²Π»ΡΠ΅ΠΌΠΎΠΉ
Zero Hash ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°Π΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΎΡ Point72 Ventures Π‘ΡΠΈΠ²Π΅Π½Π° ΠΠΎΡΠ½Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡ NYCA Partners, DriveWealth ΠΈ Π²Π΅Π΄ΡΡΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-Π°Π½Π³Π΅Π»ΠΎΠ² FinTech
| ΠΡΡΠΎΡΠ½ΠΈΠΊ: ΠΡΠ»Π΅Π²ΠΎΠΉ Ρ ΡΡ ΠΡΠ»Π΅Π²ΠΎΠΉ Ρ ΡΡ
Π§ΠΠΠΠΠ, 30 ΡΠ΅Π½ΡΡΠ±ΡΡ 2021 Π³. (GLOBE NEWSWIRE) β Zero Hash, Π²Π΅Π΄ΡΡΠ°Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, Π·Π°Π½ΠΈΠΌΠ°ΡΡΠ°ΡΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ ΡΠΈΡΡΠΎΠ²ΡΡ
Π°ΠΊΡΠΈΠ²ΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π³ΠΎΡΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΠΏΠΎΠΊΡΠΏΠ°ΡΡ, ΠΏΡΠΎΠ΄Π°Π²Π°ΡΡ, ΠΏΠΎΠ»ΡΡΠ°ΡΡ, ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ, Π·Π°ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈ Π²ΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π°ΡΡ ΡΠΈΡΡΠΎΠ²ΡΠ΅ Π°ΠΊΡΠΈΠ²Ρ, ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΎΠ±ΡΡΠ²ΠΈΠ»Π° ΠΎ 35 Π΄ΠΎΠ»Π»Π°ΡΠ°Ρ
Π‘Π¨Π. ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π² Π½ΠΎΠ²ΠΎΠΌ ΡΠΈΠ½Π°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΡΠΈΠΈ C. ΠΠ½Π²Π΅ΡΡΠΈΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΡΠ½Π΄ Π²ΠΎΠ·Π³Π»Π°Π²ΠΈΠ» Point72 Ventures Π²ΠΌΠ΅ΡΡΠ΅ Ρ NYCA Partners, DriveWealth ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ. Π ΡΠ°ΡΠ½Π΄Π΅ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ½ΡΠ»ΠΈ ΡΡΠ°ΡΡΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ
Π±ΠΈΠ·Π½Π΅Ρ-Π°Π½Π³Π΅Π»ΠΎΠ², Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΠΌΠΌΠ°Π΄ ΠΡ
ΡΠ½Π΄ (ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π³Π΅Π½Π΅ΡΠ°Π»ΡΠ½ΡΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡ Mercury), ΠΠ°Π»ΠΏΠ΅Ρ ΠΠ°ΠΏΠ°Π΄ΠΈΠ° (ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π³Π΅Π½Π΅ΡΠ°Π»ΡΠ½ΡΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡ Deserve), ΠΡΠ°Π½ ΠΠ»ΠΎΡ
(Π³Π΅Π½Π΅ΡΠ°Π»ΡΠ½ΡΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡ ΠΈ ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»Ρ Digit) ΠΈ ΠΠΆΠ΅ΠΉΡΠΎΠ½ ΠΠ°ΡΠ΄Π½Π΅Ρ (ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π³Π΅Π½Π΅ΡΠ°Π»ΡΠ½ΡΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡ Marqeta). .
Β«Zero Hash ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½ΠΎΠ²ΡΡ ΡΠΈΠ½ΡΠ΅Ρ -Π²Π΅ΡΡΠΈΠΊΠ°Π»Ρ Β«ΡΠΈΡΡΠΎΠ²ΡΠ΅ Π°ΠΊΡΠΈΠ²Ρ ΠΊΠ°ΠΊ ΡΡΠ»ΡΠ³Π°Β». Zero Hash β ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½Π°Ρ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° B2B, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»ΡΠ±ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Π±ΡΡΡΡΠΎ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΡΡΠΎΠ²ΡΠ΅ Π°ΠΊΡΠΈΠ²Ρ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΎΠΏΡΡΒ», β ΡΠΊΠ°Π·Π°Π» ΠΠ΄Π²Π°ΡΠ΄ ΠΡΠ΄ΡΠΎΡΠ΄, ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π³Π΅Π½Π΅ΡΠ°Π»ΡΠ½ΡΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡ. Β«ΠΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΠΌ ΡΠΎΡΠ³ΠΎΠ²Π»Ρ ΡΠΈΡΡΠΎΠ²ΡΠΌΠΈ Π°ΠΊΡΠΈΠ²Π°ΠΌΠΈ ΠΈ ΠΈΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π΅Π½ΠΈΠΉ Ρ ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΠΎΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡ ΠΎΠ΄Π½ΠΎΡΡΡ Π·Π° ΡΡΠ΅Ρ ΡΡΠ°Π²ΠΎΠΊ ΠΈ DeFi. Zero Hash Π±Π΅ΡΠ΅Ρ Π½Π° ΡΠ΅Π±Ρ Π²ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΈ Π½ΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΠΎΠ΅ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Ρ ΡΠΈΡΡΠΎΠ²ΡΠΌΠΈ Π°ΠΊΡΠΈΠ²Π°ΠΌΠΈΒ».
Zero Hash ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠΈΡ Π½Π΅ΠΎΠ±Π°Π½ΠΊΠΎΠ² (Π²ΠΊΠ»ΡΡΠ°Ρ MoneyLion ΠΈ Wirex) ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ Π±ΡΠΎΠΊΠ΅ΡΠΎΠ²-Π΄ΠΈΠ»Π΅ΡΠΎΠ² (Π²ΠΊΠ»ΡΡΠ°Ρ deliciousworks ΠΈ TradeStation). Zero Hash ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΈΠ· ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠΈΡ Π±ΡΠ΅Π½Π΄ΠΎΠ² Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΡ ΡΡΠ»ΡΠ³, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΈΡ Π±ΡΠ΄ΡΡΠΈΠ΅ ΠΊΡΠΈΠΏΡΠΎΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΏΠΎΡΡΠΈ ΡΠ΄Π²ΠΎΠΈΠ»Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² Ρ Π½Π°ΡΠ°Π»Π° 2021 Π³ΠΎΠ΄Π°, Π° Π½Π΅Π΄Π°Π²Π½ΠΎ Π΄ΠΎΡΡΠΈΠ³Π»Π° ΠΏΡΠΈΠ±ΡΠ»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠ»Π΅Π²ΠΎΠΉ Ρ Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΠΎΡ Π²ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΎΠ½ΡΠ΅ΠΉΠ½-ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π² ΠΌΠΈΡΠ΅. ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΡΠΊΡ ΠΎΡ ΡΠ°ΡΠ½Π΄Π° Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ², Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ DeFi ΠΈ NFT. ΠΠ»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΏΠΈΡΠ°Π»Π° ΡΠ°ΡΡΠΈΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡΡ ΠΏΠΎ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΌΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³Ρ, ΠΏΡΠΎΠ΄ΡΠΊΡΠ°ΠΌ ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΠΈ. ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π° ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΠ²ΠΎΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ²Π΅ΡΡΠΈΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ΅Π½ΠΈΡ.
Β«Zero Hash ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»Π° ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠ½ΡΠ΅Ρ - ΠΈ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠΌ ΡΡΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΠΌ Π±Π΅ΡΠΏΡΠ΅ΠΏΡΡΡΡΠ²Π΅Π½Π½ΠΎ Π²Π½Π΅Π΄ΡΡΡΡ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΡ ΠΈ ΠΎΠΏΡΡ Π² ΡΠ²ΠΎΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌΒ», β ΡΠΊΠ°Π·Π°Π» ΠΠ΄Π°ΠΌ ΠΠ°ΡΡΠΎΠ½, ΠΏΠ°ΡΡΠ½Π΅Ρ Point72 Ventures. Β«ΠΡ ΡΡΠΈΡΠ°Π΅ΠΌ, ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Crypto API Zero Hash, ΠΏΠΎΠΌΠΎΠ³ΡΡ ΡΡΠ³ΡΠ°ΡΡ Π²Π°ΠΆΠ½ΡΡ ΡΠΎΠ»Ρ Π² ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠΎΠ²ΡΡ Π°ΠΊΡΠΈΠ²ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΠ΅ ΡΠ΅ΡΠ΅Π· ΡΠΈΠ½ΡΠ΅Ρ -ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π±ΡΠ΅Π½Π΄Ρ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΡ ΡΡΠ»ΡΠ³, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΈ ΠΊΠΎΡΠΎΡΡΠΌ Π΄ΠΎΠ²Π΅ΡΡΡΡΒ».
Π Zero Hash:
ΠΠΈΡΡΠΈΡ Zero HashΒ β ΡΠ°ΡΡΠΈΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½ΠΎΠ²Π°ΡΠΎΡΠΎΠ², ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ 2.0. Zero Hash ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ΅ Π³ΠΎΡΠΎΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠΈΡΡΠΎΠ²ΡΠ΅ Π°ΠΊΡΠΈΠ²Ρ ΠΈ Π²Π»Π°Π΄Π΅ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Π½ΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΡ ΠΈΠ·Π΄Π΅ΡΠΆΠ΅ΠΊ ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠ΅ΠΌΠ° (Π²ΠΎΠΏΡΠΎΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠ΅ΠΊ API). Zero Hash ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠΏΡΡΠ° ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ². Π ΡΠΈΡΠ»ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Zero Hash Π²Ρ ΠΎΠ΄ΡΡ Π½Π΅ΠΎΠ±Π°Π½ΠΊΠΈ, Π±ΡΠΎΠΊΠ΅ΡΡΠΊΠΎ-Π΄ΠΈΠ»Π΅ΡΡΠΊΠΈΠ΅ ΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΡΠ΅ Π³ΡΡΠΏΠΏΡ.
Zero Hash Holdings Ltd. β ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ C-Corp ΡΡΠ°ΡΠ° ΠΠ΅Π»Π°Π²ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π²Π»Π°Π΄Π΅Π΅Ρ Zero Hash LLC ΠΈ Zero Hash Liquidity Services LLC.
Zero Hash LLC, Π΄ΠΎΡΠ΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Zero Hash Holdings Ltd., ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π² FinCen ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ ΠΏΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ Π΄Π΅Π½Π΅ΠΆΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π³ΡΠ»ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Π΄Π΅Π½Π΅ΠΆΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ², ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² 51 ΡΡΠΈΡΠ΄ΠΈΠΊΡΠΈΠΈ Π‘Π¨Π. Zero Hash ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ Π²Π°Π»ΡΡΡ ΠΎΡ NYDFS. Π ΠΠ°Π½Π°Π΄Π΅ Zero Hash LLC Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π° Π² FINTRAC ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ Π΄Π΅Π½Π΅ΠΆΠ½ΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ.
Π Point72 Ventures:
Point72 VenturesΒ β ΡΡΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π²Π΅Π½ΡΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°ΠΏΠΈΡΠ°Π»Π°, Π²ΠΎΠ·Π³Π»Π°Π²Π»ΡΠ΅ΠΌΠ°Ρ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΊΡΠΏΠ΅ΡΡΠ°ΠΌΠΈ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΎΠ±Π»Π°Π΄Π°ΡΡΠΈΠΌΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ ΠΊΠ°ΠΏΠΈΡΠ°Π»ΠΎΠΌ ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΡΠΌΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ°ΡΠ½Π΄ΠΎΠ² Π½Π° Π²ΡΠ΅Ρ ΡΡΠ°ΠΏΠ°Ρ ΡΠΎΡΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΎΡ ΠΈΠ΄Π΅ΠΈ Π΄ΠΎ IPO. ΠΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ Π² ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΠΎ ΡΠΌΠ΅Π»ΡΠΌΠΈ ΠΈΠ΄Π΅ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π½ΠΎΠ²Π΅ΠΉΡΠΈΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΠ°Π·Π½ΡΡ ΠΎΡΡΠ°ΡΠ»ΡΡ . Point72 Ventures ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠΏΡΡΡ ΠΈ ΠΈΠ΄Π΅ΡΠΌ, ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°Π»Π°Π½ΡΠ°ΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ. Point72 Ventures Ρ ΠΎΡΠΈΡΠ°ΠΌΠΈ Π² Π‘Π¨Π ΠΈ ΠΠ²ΡΠΎΠΏΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΡΠ΅ΡΠ½Π΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Point72, Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π‘ΡΠΈΠ²Π΅Π½ΠΎΠΌ Π. ΠΠΎΡΠ½ΠΎΠΌ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Β p72.vc .
ΠΠΎΠ½ΡΠ°ΠΊΡΡ ΠΏΡΠ΅ΡΡΡ:
Π½ΡΠ»Π΅Π²ΠΎΠΉ Ρ
ΡΡ
ΠΠ΄Π²Π°ΡΠ΄ ΠΡΠ΄ΡΠΎΡΠ΄
(855) 744-7333 Ext: 102
[email protected]
. -2052
[email protected]
ΠΠ΅ΡΠΊΠΈ
Π’ΠΎΡΠΊΠ°72 NYCA DriveWealth Π²Π΅Π½ΡΡΡΠ½ΡΠΉ ΠΊΠ°ΠΏΠΈΡΠ°Π» ΡΡΠ½ΠΎΠΊΠ Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±ΡΡΡΡΠΎΠ³ΠΎ Ρ Π΅ΡΠ° MD5 Π² ΡΠ±ΠΎΡΠΊΠ΅ x86
Π Π°Π΄ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ° Ρ Ρ ΠΎΡΠ΅Π» ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠΎΠ³Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΠΈ x86 MD5 Π΄Π»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ. Π― Π½Π°ΡΠ°Π» Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ Π½Π°ΠΈΠ²Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ» ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ ΡΠ΄Π΅Π»Π°Π» ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΏΠ΅ΡΠ½ΡΠΉ ΡΡΡΠΊ Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΠ» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΠ/Ρ ΡΠΊΠΎΡΠΎΡΡΠΈ, Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΡΠΈ ΡΠΎΡΠ½ΠΈ ΠΏΠΎΠΏΡΡΠΎΠΊ (ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΊΠΎΠ»ΠΎ 20 Π±ΡΠ»ΠΈ ΡΡΠΏΠ΅ΡΠ½ΡΠΌΠΈ) ΠΎΠ±ΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ» ΠΎΡΠ΅Π»ΠΎΠΌΠ»ΡΡΡΠΈΠΌ 59.% ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ.
ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄
ΠΠΎΠ΄ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ:
Π’ΡΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΆΠ°ΡΠΈΡ MD5:
- Π ΡΠ±ΠΎΡΠΊΠ΅ x86, Π½Π°ΠΈΠ²Π½ΠΎ (md5-naive-x86.S).
- Π ΡΠ±ΠΎΡΠΊΠ΅ x86, ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠΈΡΠ½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ (md5-fast-x86.S).
- Π C, Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ x86 (md5.c).
ΠΠΎΠ»Π½Π°Ρ Ρ Π΅Ρ-ΡΡΠ½ΠΊΡΠΈΡ MD5 (Π½Π° C), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ Π²ΠΎΡΡΠ°. ΠΡΠΎ Π½Π΅ Π½Π°Π³ΡΡΠΆΠ°Π΅Ρ Π¦Π, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΡΠΆΠ°ΡΠΈΡ.
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ΅ΡΡ ΡΠΊΠΎΡΠΎΡΡΠΈ.
Π€Π°ΠΉΠ»ΠΎΠ²:
- md5-test.c
- md5.c
- md5-Π½Π°ΠΈΠ²Π½ΡΠΉ-x86.S
- md5-Π±ΡΡΡΡΠΎ-x86.S
- md5-Π±ΡΡΡΡΠΎ-x8664.S
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ Π΅Π³ΠΎ Π² Linux Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄:
-
ΠΊΡΠ±.ΡΠΌ md5-test.c md5.c -o md5-test
(x86, x86-64) -
cc md5-test.c md5-naive-x86.S -o md5-test
(ΡΠΎΠ»ΡΠΊΠΎ x86) -
cc md5-test.c md5-fast-x86.S -o md5-test
(ΡΠΎΠ»ΡΠΊΠΎ x86) -
cc md5-test.c md5-fast-x8664.S -o md5-test
(ΡΠΎΠ»ΡΠΊΠΎ x86-64)
ΠΠ°ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ ./md5-test
.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΎΠ²
ΠΠΎΠ΄ | Π‘Π±ΠΎΡΠ½ΠΈΠΊ | Π‘ΠΊΠΎΡΠΎΡΡΡ Π½Π° x86 | Π‘ΠΊΠΎΡΠΎΡΡΡ Π½Π° x86-64 |
---|---|---|---|
C | GCC -O0 | 122Β MiB/s | 123Β MiB/s |
C | GCC -O1 | 379Β MiB/s | 390Β MiB/s |
C | GCC -O2 | 387Β MiB/s | 389Β MiB/s |
C | GCC -O3 | 387Β MiB/s | 389Β MiB/s |
C | GCC -O1 -fomit-frame-pointer | 382Β MiB/s | |
C | GCC -O2 -fomit-frame-pointer | 389Β MiB/s | |
C | GCC - O3 -fomit-frame-pointer | 390Β MiB/s | |
Assembly (naive) | GCC -O0 | 270Β MiB/s | |
Assembly (fast) | GCC -O1 | 430Β ΠΠΈΠ/Ρ | |
Assembly (fast) | GCC -O2 | 427Β MiB/s | |
Assembly (OpenSSL [0] ) | GCC -O0 | 410Β MiB/s |
ΠΠ° ΠΎΠ±Π΅ΠΈΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΌΠΎΠΉ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 1,10 ΡΠ°Π·Π° Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΌΠΎΠΉ ΠΊΠΎΠ΄ C, Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ GCC. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠΎΠ΄ C ΠΈ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΎΠΏΡΠΈΡΠΌΠΈ, ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π½Π° ΠΎΠ±Π΅ΠΈΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°Ρ .
ΠΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΎΠ² ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: Π¦Π = Intel Core 2 Quad Q6600 2,40Β ΠΠΡ (ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ), ΠΠ‘ = Ubuntu 10.04 (32-ΡΠ°Π·ΡΡΠ΄Π½Π°Ρ ΠΈ 64-ΡΠ°Π·ΡΡΠ΄Π½Π°Ρ), ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ = GCC 4.4.3.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ
ΠΠΎΠΉ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π½Π°ΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠΆΠ΅ Π±ΡΠ» ΡΠ°Π·Π²Π΅ΡΠ½ΡΡ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠΎΠ΅ΠΉ ΡΠ΅Π»ΡΡ Π±ΡΠ»Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ, Π±ΡΠ»ΠΎ Π±Ρ Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠ²ΡΠ·Π°Π½Π° Ρ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠΌΠΈ ΡΠ°ΡΡ ΠΎΠ΄Π°ΠΌΠΈ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π°ΠΌΠΈ.
Π― Π±ΡΠ» ΡΠ΄ΠΈΠ²Π»Π΅Π½, ΡΠ²ΠΈΠ΄Π΅Π², ΡΡΠΎ ΠΌΠΎΠΉ Π½Π°ΠΈΠ²Π½ΡΠΉ ΠΊΠΎΠ΄ x86 ΡΠ°Π±ΠΎΡΠ°Π» Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ ΠΊΠΎΠ΄, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ GCC, ΠΈ ΡΡΠΎ ΠΌΠΎΠΉ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²ΡΡΡΠ½ΡΡ ΠΊΠΎΠ΄ Π±ΡΠ» Π½Π΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Π»ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ GCC.
ΠΠ½ΠΎΠ³Π΄Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠΌΡ ΠΊΠΎΠ΄Ρ. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΡΠ΄Π΅Π»Π°Π» Π³ΡΠ°ΡΠΈΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠΌ ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌΠΈ ΡΡΠΏΠ΅ΡΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΡ ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠΏΠ΅ΡΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
ΠΠ»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ LEA Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π΄Π²ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ β ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΈΠ΅ΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Ρ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΡΠΌ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ΠΌ.
Π£ ΠΌΠ΅Π½Ρ Π±ΡΠ»ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (4 Π΄Π»Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ MD5, 2 Π΄Π»Ρ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π·Π° ΡΠ°ΡΠ½Π΄, 1 Π΄Π»Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π±Π»ΠΎΠΊΠΎΠ² ΠΈ 1 Π΄Π»Ρ ΡΡΠ΅ΠΊΠ°), ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΎ ΠΊΠΎΠ΄ ΠΊΠΎΡΠΎΡΠ΅ ΠΈ ΠΡΡΡΡΠ΅Π΅. ΠΠ΄Π½Π°ΠΊΠΎ Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΠ΅Π³ΠΈΡΡΡ EBP ΠΎΠ±ΡΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
ΠΠ±Π΅ ΠΌΠΎΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ MD5 Π΄Π»Ρ x86 ΠΈ C ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° C Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠ΅Π³ΠΎΡΡ ΠΊΠΎΠ΄Π°.
ΠΠΎΠ΄ x86-64: ΠΡΠ΅ ΡΠ°ΠΉΠ»Ρ C ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° x86-64. Π― Π²Π½Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΊ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎ Π²ΡΠ·ΠΎΠ²Π°Ρ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ 32-Π±ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΠΈΡΠ»Π°ΠΌΠΈ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ.