เบ„เบงเบฒเบกเบญเปˆเบญเบ™เปเบญเปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš SHA-3 algorithm

ะ’ ั€ะตะฐะปะธะทะฐั†ะธะธ ะบั€ะธะฟั‚ะพะณั€ะฐั„ะธั‡ะตัะบะพะน ั…ััˆ-ั„ัƒะฝะบั†ะธะธ SHA-3 (Keccak), ะฟั€ะตะดะปะฐะณะฐะตะผะพะน ะฒ ะฟะฐะบะตั‚ะต XKCP (eXtended Keccak Code Package), ะฒั‹ัะฒะปะตะฝะฐ ัƒัะทะฒะธะผะพัั‚ัŒ (CVE-2022-37454), ะบะพั‚ะพั€ะฐั ะผะพะถะตั‚ ะฟั€ะธะฒะตัั‚ะธ ะบ ะฟะตั€ะตะฟะพะปะฝะตะฝะธัŽ ะฑัƒั„ะตั€ะฐ ะฒ ะฟั€ะพั†ะตััะต ะพะฑั€ะฐะฑะพั‚ะบะธ ะพะฟั€ะตะดะตะปั‘ะฝะฝะพ ะพั„ะพั€ะผะปะตะฝะฝั‹ั… ะดะฐะฝะฝั‹ั…. ะŸั€ะพะฑะปะตะผะฐ ะฒั‹ะทะฒะฐะฝะฐ ะพัˆะธะฑะบะพะน ะฒ ะบะพะดะต ะบะพะฝะบั€ะตั‚ะฝะพะน ั€ะตะฐะปะธะทะฐั†ะธะธ SHA-3, ะฐ ะฝะต ัƒัะทะฒะธะผะพัั‚ัŒัŽ ะฒ ัะฐะผะพะผ ะฐะปะณะพั€ะธั‚ะผะต. ะŸะฐะบะตั‚ XKCP ะฟั€ะตะฟะพะดะฝะพัะธั‚ัั ะบะฐะบ ะพั„ะธั†ะธะฐะปัŒะฝะฐั ั€ะตะฐะปะธะทะฐั†ะธั SHA-3, ั€ะฐะทะฒะธะฒะฐะตั‚ัั ะฟั€ะธ ัƒั‡ะฐัั‚ะธะธ ะบะพะผะฐะฝะดั‹ ั€ะฐะทั€ะฐะฑะพั‚ั‡ะธะบะพะฒ Keccak ะธ ะธัะฟะพะปัŒะทัƒะตั‚ัั ะฒ ะบะฐั‡ะตัั‚ะฒะต ะพัะฝะพะฒั‹ ะฒ ั„ัƒะฝะบั†ะธัั… ะดะปั ั€ะฐะฑะพั‚ั‹ ั SHA-3 ะฒ ั€ะฐะทะปะธั‡ะฝั‹ั… ัะทั‹ะบะฐั… ะฟั€ะพะณั€ะฐะผะผะธั€ะพะฒะฐะฝะธั (ะฝะฐะฟั€ะธะผะตั€, ะบะพะด XKCP ะธัะฟะพะปัŒะทัƒะตั‚ัั ะฒ Python-ะผะพะดัƒะปะต hashlib, Ruby-ะฟะฐะบะตั‚ะต digest-sha3 ะธ PHP-ั„ัƒะฝะบั†ะธัั… hash_*).

ะŸะพ ะทะฐัะฒะปะตะฝะธัŽ ะธััะปะตะดะพะฒะฐั‚ะตะปั, ะฒั‹ัะฒะธะฒัˆะตะณะพ ะฟั€ะพะฑะปะตะผัƒ, ะตะผัƒ ัƒะดะฐะปะพััŒ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ัƒัะทะฒะธะผะพัั‚ัŒ ะดะปั ะฝะฐั€ัƒัˆะตะฝะธั ะบั€ะธะฟั‚ะพะณั€ะฐั„ะธั‡ะตัะบะธั… ัะฒะพะนัั‚ะฒ ั…ััˆ-ั„ัƒะฝะบั†ะธะธ ะธ ะฝะฐั…ะพะถะดะตะฝะธั ะฟะตั€ะฒะพะณะพ ะธ ะฒั‚ะพั€ะพะณะพ ะฟั€ะพะพะฑั€ะฐะทะฐ, ะฐ ั‚ะฐะบะถะต ะพะฟั€ะตะดะตะปะตะฝะธั ะบะพะปะปะธะทะธะน. ะšั€ะพะผะต ั‚ะพะณะพ, ะทะฐัะฒะปะตะฝะพ ะพ ัะพะทะดะฐะฝะธะธ ะฟั€ะพั‚ะพั‚ะธะฟะฐ ัะบัะฟะปะพะธั‚ะฐ, ะฟะพะทะฒะพะปััŽั‰ะตะณะพ ะดะพะฑะธั‚ัŒัั ะฒั‹ะฟะพะปะฝะตะฝะธั ะบะพะดะฐ ะฟั€ะธ ะฒั‹ั‡ะธัะปะตะฝะธะธ ั…ััˆะฐ ัะฟะตั†ะธะฐะปัŒะฝะพ ะพั„ะพั€ะผะปะตะฝะฝะพะณะพ ั„ะฐะนะปะฐ. ะŸะพั‚ะตะฝั†ะธะฐะปัŒะฝะพ ัƒัะทะฒะธะผะพัั‚ัŒ ั‚ะฐะบะถะต ะผะพะถะตั‚ ะฑั‹ั‚ัŒ ะธัะฟะพะปัŒะทะพะฒะฐะฝะฐ ะดะปั ะฐั‚ะฐะบ ะฝะฐ ะฐะปะณะพั€ะธั‚ะผั‹ ะฟั€ะพะฒะตั€ะบะธ ั†ะธั„ั€ะพะฒั‹ั… ะฟะพะดะฟะธัะตะน, ะธัะฟะพะปัŒะทัƒัŽั‰ะธั… SHA-3 (ะฝะฐะฟั€ะธะผะตั€, Ed448). ะŸะพะดั€ะพะฑะฝะพัั‚ะธ ะผะตั‚ะพะดะพะฒ ะฟั€ะพะฒะตะดะตะฝะธั ะฐั‚ะฐะบ ะฟะปะฐะฝะธั€ัƒะตั‚ัั ะพะฟัƒะฑะปะธะบะพะฒะฐั‚ัŒ ะฟะพะทะดะฝะตะต, ะฟะพัะปะต ะฟะพะฒัะตะผะตัั‚ะฝะพะณะพ ัƒัั‚ั€ะฐะฝะตะฝะธั ัƒัะทะฒะธะผะพัั‚ะธ.

ะะฐัะบะพะปัŒะบะพ ัƒัะทะฒะธะผะพัั‚ัŒ ะทะฐั‚ั€ะฐะณะธะฒะฐะตั‚ ััƒั‰ะตัั‚ะฒัƒัŽั‰ะธะต ะฟั€ะธะปะพะถะตะฝะธั ะฝะฐ ะฟั€ะฐะบั‚ะธะบะต ะฟะพะบะฐ ะฝะต ััะฝะพ, ั‚ะฐะบ ะบะฐะบ ะดะปั ะฟั€ะพัะฒะปะตะฝะธั ะฟั€ะพะฑะปะตะผั‹ ะฒ ะบะพะดะต ะดะพะปะถะฝะพ ะฟั€ะธะผะตะฝัั‚ัŒัั ั†ะธะบะปะธั‡ะฝะพะต ะฒั‹ั‡ะธัะปะตะฝะธะต ั…ััˆะฐ ะฑะปะพะบะฐะผะธ ะธ ะพะดะธะฝ ะธะท ะพะฑั€ะฐะฑะฐั‚ั‹ะฒะฐะตะผั‹ั… ะฑะปะพะบะพะฒ ะดะพะปะถะตะฝ ะธะผะตั‚ัŒ ั€ะฐะทะผะตั€ ะพะบะพะปะพ 4 ะ“ะ‘ (ะฝะต ะผะตะฝะตะต 2^32 โ€” 200 ะฑะฐะนั‚). ะŸั€ะธ ะพะฑั€ะฐะฑะพั‚ะบะต ะฒั…ะพะดะฝั‹ั… ะดะฐะฝะฝั‹ั… ั€ะฐะทะพะผ (ะฑะตะท ะฟะพัะปะตะดะพะฒะฐั‚ะตะปัŒะฝะพะณะพ ะฒั‹ั‡ะธัะปะตะฝะธั ั…ััˆะฐ ั‡ะฐัั‚ัะผะธ) ะฟั€ะพะฑะปะตะผะฐ ะฝะต ะฟั€ะพัะฒะปัะตั‚ัั. ะ’ ะบะฐั‡ะตัั‚ะฒะต ะฝะฐะธะฑะพะปะตะต ะฟั€ะพัั‚ะพะณะพ ะผะตั‚ะพะดะฐ ะทะฐั‰ะธั‚ั‹ ะฟั€ะตะดะปะฐะณะฐะตั‚ัั ะพะณั€ะฐะฝะธั‡ะธั‚ัŒ ะผะฐะบัะธะผะฐะปัŒะฝั‹ะน ั€ะฐะทะผะตั€ ะดะฐะฝะฝั‹ั…, ัƒั‡ะฐัั‚ะฒัƒัŽั‰ะธั… ะฒ ะพะดะฝะพะน ะธั‚ะตั€ะฐั†ะธะธ ะฒั‹ั‡ะธัะปะตะฝะธั ั…ััˆะฐ.

ะฃัะทะฒะธะผะพัั‚ัŒ ะฒั‹ะทะฒะฐะฝะฐ ะพัˆะธะฑะบะพะน ะฟั€ะธ ะฑะปะพั‡ะฝะพะน ะพะฑั€ะฐะฑะพั‚ะบะต ะฒั…ะพะดะฝั‹ั… ะดะฐะฝะฝั‹ั…. ะ˜ะท-ะทะฐ ะฝะตะบะพั€ั€ะตะบั‚ะฝะพะณะพ ัั€ะฐะฒะฝะตะฝะธั ะทะฝะฐั‡ะตะฝะธะน ั ั‚ะธะฟะพะผ ยซintยป ะพะฟั€ะตะดะตะปัะตั‚ัั ะฝะตะฒะตั€ะฝั‹ะน ั€ะฐะทะผะตั€ ะพะถะธะดะฐัŽั‰ะธั… ะพะฑั€ะฐะฑะพั‚ะบะธ ะดะฐะฝะฝั‹ั…, ั‡ั‚ะพ ะฟั€ะธะฒะพะดะธั‚ ะบ ะทะฐะฟะธัะธ ั…ะฒะพัั‚ะฐ ะทะฐ ะฟั€ะตะดะตะปั‹ ะฒั‹ะดะตะปะตะฝะฝะพะณะพ ะฑัƒั„ะตั€ะฐ. ะ’ ั‡ะฐัั‚ะฝะพัั‚ะธ, ะฟั€ะธ ัั€ะฐะฒะฝะตะฝะธะธ ะธัะฟะพะปัŒะทะพะฒะฐะปะพััŒ ะฒั‹ั€ะฐะถะตะฝะธะต ยซpartialBlock + instance->byteIOIndexยป, ะบะพั‚ะพั€ะพะต ะฟั€ะธ ะฑะพะปัŒัˆะธั… ะทะฝะฐั‡ะตะฝะธัั… ัะพัั‚ะฐะฒะฝั‹ั… ั‡ะฐัั‚ะตะน ะฟั€ะธะฒะพะดะธะปะพ ะบ ั†ะตะปะพั‡ะธัะปะตะฝะฝะพะผัƒ ะฟะตั€ะตะฟะพะปะฝะตะฝะธัŽ. ะšั€ะพะผะต ั‚ะพะณะพ, ะฒ ะบะพะดะต ะฟั€ะธััƒั‚ัั‚ะฒะพะฒะฐะปะพ ะฝะตะฒะตั€ะฝะพะต ะฟั€ะธะฒะตะดะตะฝะธะต ั‚ะธะฟะพะฒ ยซ(unsigned int)(dataByteLen โ€” i)ยป, ะฟั€ะธะฒะพะดะธะฒัˆะตะต ะบ ะฟะตั€ะตะฟะพะปะฝะตะฝะธัŽ ะฝะฐ ัะธัั‚ะตะผะฐั… ั 64-ั€ะฐะทั€ัะดะฝั‹ะผ ั‚ะธะฟะพะผ size_t.

ะŸั€ะธะผะตั€ ะบะพะดะฐ, ะฟั€ะธะฒะพะดัั‰ะตะณะพ ะบ ะฟะตั€ะตะฟะพะปะฝะตะฝะธัŽ: import hashlib h = hashlib.sha3_224() m1 = bยป\x00โ€ณ * 1; m2 = bยป\x00โ€ณ * 4294967295; h.update(m1) h.update(m2) print(h.hexdigest())

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™