рд╣рд╛рд▓ рд╣реА рдореЗрдВ,
рдПрдХ рд▓реЗрдЦ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд┐рдЯрдХреЙрдЗрди рдХреЛ рдЖрдЙрдЯ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЪрд▓рд╛ рдЧрдпрд╛, рдФрд░ рдореИрдВ рдЗрд╕ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рдкрд░рд┐рдгрд╛рдо рд╕реЗ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореИрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдлрд▓ рдирд╣реАрдВ рдорд╛рдирддрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдмрд┐рдЯрдХреЙрдЗрди рдХреЛ рдмрд╕ рд▓реЗрдиреЗ рдФрд░ рдХреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╢рд╛ рдХрд░рдирд╛ рдмреЗрд╡рдХреВрдлреА рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдХреНрдпреЛрдВрдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЕрднреА рднреА рдХреБрдЫ рд╕рдлрд▓рддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХреА рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рд╣рдмрд░ рдХреЗ рдкрд╛рдардХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рд╡рд┐рдЪрд╛рд░
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдХреБрдЫ рдХрд╛рд░реНрдп рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдРрд╕реА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ "рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЕрд╕рдВрднрд╡" рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддрд╛ рд╣реИред
рдХреИрдорд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджрд┐рдпрд╛
рдПрдХреНрд╕ = рдП рдореЛрдб рдмреА
рдХреЛрдИ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдпрд╣ рдХрд╛рд░реНрдп рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдмрд╣реБрдд рд╣реА рд╣рд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдареАрдХ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдпрд╣ рдЕрдирдВрдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗ (рдП, рдмреА) рджреЗрддрд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо "рдмреА" рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рд╕рдорд╛рдзрд╛рди рд╕рдВрднрд╡ рд╕рдВрдЦреНрдпрд╛ "рдП" рдХреА рдЕрдирдВрдд рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдЧреАред рдХрд╛рдлреА рдирд╣реАрдВ рдЬреЛ рд╣рдо рдЪрд╛рд╣реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдпрд╣ рднреА рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдХрд┐ рд╣рдо рдПрдХ рдкрд░реА рдХрдерд╛ рдореЗрдВ рдереЗ? рдпрд╣ рдХреБрдЫ рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдПрдХ рд╕рдореАрдХрд░рдг рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИ - рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕рдореАрдХрд░рдг рдПрдХ рд╕реЗрдЯ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЗрди рд╕реЗрдЯреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рдереЛрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕реЗ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╕рдореАрдХрд░рдг рдХреЛ рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рджреЗрдЦрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐, рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛, рдЖрдк рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ sha256 рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдмрд╕ рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВрдЧреЗ, рдмреЗрд╢рдХ, рд╢-256 рдХреЗ рд╕рд╛рде рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рддреБрдЪреНрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рдеред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд┐рдЯ рдЪрд░ рд╣реИрдВ a, b, cред рдЖрдкрдХреЛ рдпрд╣ рднреА рдмрддрд╛ рджреЗрдВ рдХрд┐ рдП рдФрд░ рдмреА рд▓реЗрдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ 0 рдорд┐рд▓рд╛, рдФрд░ рдмрд┐рдЯ "рд╕реА" рд╕реВрддреНрд░ рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓рд┐рдпрд╛ред рдЖрдЗрдП рдЗрд╕ рд╕реВрддреНрд░ рдХреЛ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ "рдЦреЛрдиреЗ" рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдСрдкрд░реЗрд╢рди рдФрд░ рд╣рдореЗрдВ рдЕрдВрдд рдореЗрдВ рд╢реВрдиреНрдп рджреЗрддрд╛ рд╣реИ, рдЕрдЧрд░ рдЗрд╕рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рд╡рд╛рд▓реЗ рдСрдкрд░реЗрдВрдб рдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╢реВрдиреНрдп рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдмреАрд╕реА рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдп, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдСрдкрд░реЗрдВрдб "рдП" рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдХреЛ рдПрдХ рд░реЗрдЧреАрдЬрд╝ 0 ** рдХреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрд╣рд╛рдБ рддрд╛рд░рд╛рдВрдХрди рдХрд╛ рдЕрд░реНрде рд╣реИ 0 рдпрд╛ 1. рдЪрд░ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рди, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдСрдкрд░реЗрдВрдб "b" рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдХреЛ regexp * 0 * рдХреА рд╕реВрдЪреА рд╕реЗ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рдПрдХ рд╕реВрдЪреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмрдбрд╝реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ regexp рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рд░реЗрдЧреЗрдХреНрд╕рдкреА рдХреЗ рджреНрд╡рд╛рд░рд╛, рдореИрдВ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдЫрдВрдЯреЗ рд╣реБрдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рддрд╛рд░рд╛рдВрдХрди рдХрд╛ рдорддрд▓рдм рд╕рдВрдмрдВрдзрд┐рдд рдмрд┐рдЯ рдХреЗ рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рд╕реЗ рд╣реИред
рдЬрдм рд╣рдо рдЗрдирдкреБрдЯреНрд╕ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд╛рд░реНрдХрд┐рдХ "I" рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрд╡рдХ regexp рдХреЛ рдмрд╛рдИрдВ рдУрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд╕рд╛рде рджрд╛рдПрдВ рдЗрдирдкреБрдЯ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдп рдореЗрдВ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдЖрд╕рд╛рди рд╣реИ - рдХреЗрд╡рд▓ рдПрдХ regexp рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред "рдФрд░" рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ 0 рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдмрд╕ рджрд╛рдИрдВ рдУрд░ рдмрд╛рдИрдВ рд╕реВрдЪреА рдХреЛ рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВред рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВрдиреЗ рдЪрд┐рддреНрд░ рдореЗрдВ рдЗрд╕реЗ рдПрдХ рдЧреНрд░рд╛рдл рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛:

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгред рдкрд░рд┐рдгрд╛рдо f рдХреЛ рдиреАрдЪреЗ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рддрдХ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЕрдВрддрд┐рдо рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдиреЗ рддрдХ, рдиреЛрдбреНрд╕ рдкрд░ рджреНрд╡рд┐рднрд╛рдЬрди рдХрд░рддреЗ рд╣реБрдП, рддреАрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдЙрдЧрддрд╛ рд╣реИред рдЕрдВрддрд┐рдо рдЪрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЪрд░ (рдЗрд╕ рдЪрд░ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реИред рдЪрд░ "a" рдХреЗ рд▓рд┐рдП рдпрд╣ 0 ** рд╣реИ, рдЪрд░ "b" рдХреЗ рд▓рд┐рдП рдпрд╣ * 0 * рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рд╕рднреА рддрд╛рд░рд╛рдВрдХрди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ, рдЪрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдиреЗ рд╡рд╛рд▓реА рдПрдл рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕реВрдЪреА рдЕрдиреНрдп рд╕рдорд╛рди рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдиреЛрдбреНрд╕ рдореЗрдВ рд╕рдВрдпреЛрдЬрди рдХрд░рддреЗ рд╣реБрдП, рдиреАрдЪреЗ рдЬрд╛рддреА рд╣реИред рдореИрдВрдиреЗ "рдЧ" рдЪрд░ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдХрд┐ рдЬреЛ рдЪрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗрддреЗ рд╣реИрдВ рд╡реЗ рд╣рдореЗрдВ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдореВрд▓ рд░реВрдк рдореЗрдВ рдиреАрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рд╕реВрдЪреА рдорд┐рд▓реА, рдЬрд┐рд╕рдореЗрдВ рджреЛ regexps рд╢рд╛рдорд┐рд▓ рдереЗред рдкреНрд░рддреНрдпреЗрдХ regexp рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдиреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕ regexp рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЙрддреНрддрд░ рд╣реИред
рдмреЗрд╢рдХ, рдпрджрд┐ рд╕реВрдЪреА рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрддреНрд╡ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд▓рдЧрд╛рддрд╛рд░ regexps рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╣ рдХреНрд╖рдг рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреБрдХреВрд▓рди рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдо рд╣реЛрдЧрд╛ред
рдЕрдм рдПрдХ рд╣реА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ f = 1 рдХреЗ рд▓рд┐рдПред рд╣рдореЗрдВ рдПрдХ = 1 **, рдмреА = * 1 * рдорд┐рд▓рддрд╛ рд╣реИред рдПрд╕реЛрд╕рд┐рдПрд╢рди рдХрд╛ рдирд┐рдпрдо, рдЕрдЧрд░ "рдФрд░" рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ 1 рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред рд╣рдореЗрдВ рдирдП regexp рдХреА рд╕реВрдЪреА рдмрдирд╛рддреЗ рд╕рдордп, рджрд╛рдПрдВ рдФрд░ рдмрд╛рдПрдВ рднрд╛рдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕реБрд╕рдВрдЧрдд regexp рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдВрддрд┐рдо рдирд┐рдпрдо рдорд┐рд▓реЗ:

Regexps рдХреЛ рдмрд┐рдЯ рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рджрд╛рдИрдВ рдУрд░ рдФрд░ рдмрд╛рдИрдВ рдУрд░ рдмрд┐рдЯреНрд╕ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рд╕рдмрд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рди рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдпрджрд┐ рд╣рдо рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рдмрд┐рдЯреНрд╕ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ regexp рдХреА рдЗрд╕ рдЬреЛрдбрд╝реА рдХреЛ рддреНрдпрд╛рдЧ рджреЗрдВред
рдЗрд╕ рдирд┐рдпрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрдирдкреБрдЯ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдЪрд╛рд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред "OR" рдФрд░ "NOT" рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рдорд╛рди рдирд┐рдпрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

рдпрд╣рд╛рдБ рдпрд╣ рднреА рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ "NOT" рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рд╣рдо regex рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ f рдХреЗ рд╕рд╛рде, рдЗрд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рд░рд╣реЗ рд╣реИрдВред "рдирд╣реАрдВ" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ regexps рдХреА рд╕реВрдЪреА рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдФрд░ рд╡реНрдпреБрддреНрдХреНрд░рдо рдХреЗ рдмрд┐рдирд╛ рдЧреБрдЬрд░рддреА рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, Sha256 рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдЧреНрд░рд╛рдл рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рд╕рдВрджреЗрд╢ рдХреЛ рдмрд┐рдЯреНрд╕ рдореЗрдВ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрди рдмрд┐рдЯреНрд╕ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЦрд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдЙрд▓рдЯреЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╡рд╛рдкрд╕ рдХрд░реЗрдВрдЧреЗред
рдЕрдиреБрдХреВрд▓рди
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рдереЗред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкрд╛рддреНрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╡реНрдпрд░реНрде рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдмрд┐рдЯрд╡рд╛рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрд╕ рдФрд░ рдЕрд╕реЗрдВрдмрд▓рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЧрддрд┐ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ - рдЙрди рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЬреЛ рд╣рдо рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рджреМрд░рд╛рди, рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдФрд░ рдЧреИрд░-рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА regexps рдЕрдХреНрд╕рд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрднреА-рдХрднреА, рджреЛ рд░реЗрдЧреЗрдХреНрд╕ рдХреЛ рдПрдХ рдирдП рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдЧреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдЕрдзреАрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 000100 рдФрд░ 001100 рдХреЛ 00 * 100 рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдирд┐рдпрдо рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реИ - рдХреЗрд╡рд▓ рдПрдХ рдмрд┐рдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрдореЗрдп рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдирд╡ рдирд┐рд░реНрдорд┐рдд regexp рдЕрдкрдиреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЪрд░ рдорд╛рдиреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, * 0 рдХреЛ 0 * рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ ** рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ ** 11 рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рди рддреЛ рдкрд╣рд▓реЗ рдФрд░ рди рд╣реА рджреВрд╕рд░реЗ regexp рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдиреЛрдбреНрд╕ рдореЗрдВ рд╣рдо рдХреИрд╢ рдХрд░реЗрдВрдЧреЗ - рд╣рдо рдЙрдиреНрд╣реЗрдВ рдиреАрдЪреЗ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдл рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдЧрд┐рдирддреЗ рд╣реИрдВред
рдкреНрд░рдпреЛрдЧ
рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдзрд╛рд░рдгрд╛рдПрдБ рдмрдирд╛рдИрдВ
- рдореВрд▓ рд╕рдВрджреЗрд╢ 56 рдмрд╛рдЗрдЯреНрд╕ (рдмрд┐рдЯрдХреЙрдЗрди рдХреЗ рд▓рд┐рдП) рд╕реЗ рдХрдо рд╣реИ, рд╣рдо рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдРрд╕рд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рд╕рд░рд▓реАрдХрд░рдг рдХреЛ рдордирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ);
- рд╣рдо рд╕рднреА рдореВрд▓ рд╕рдВрджреЗрд╢ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ 8 рдмрд┐рдЯреНрд╕ рдХреЛ рдЫреЛрдбрд╝рдХрд░ред
рдмреЗрд╢рдХ, рдпрд╣ рдПрдХ рдлрд╡реНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ 8 рдЕрдЬреНрдЮрд╛рдд рдмрд┐рдЯреНрд╕ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрдкреВрд░реНрдг рдЦреЛрдЬ рджреНрд╡рд╛рд░рд╛ рдЙрдиреНрд╣реЗрдВ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЫреЛрдЯреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рдзрд┐ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдареАрдХ рдерд╛ред рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдХреНрд╖рд░ T рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕реЗ sha-256 "рдЖрд▓рд╕реА рдХреБрддреНрддреЗ рдкрд░ рддреНрд╡рд░рд┐рдд рднреВрд░реЗ рд▓реЛрдордбрд╝реА рдХреВрджрддрд╛ рд╣реИ", рдФрд░ рдЕрдХреНрд╖рд░ T рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЗрд╕ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреЗ рд╕рднреА рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдмрдбрд╝реЗ рдЕрдЬреНрдЮрд╛рдд рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рд╕рд┐рд░реНрдл рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЕрдм рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдореГрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рд╕рднреА рдкрддреНрд░реЛрдВ рдХреЛ рдЕрдЬреНрдЮрд╛рдд рдорд╛рдирдирд╛ тАЛтАЛрдЕрд╕рдВрднрд╡ рд╣реИ - рдкрд░реНрдпрд╛рдкреНрдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд╣реАрдВ рд╣реИред T T рдЕрдХреНрд╖рд░ рдХреА рдЧрдгрдирд╛ 3Hz Phenom рдкрд░ 82 рд╕реЗрдХрдВрдб рд╣реИред рдмреЗрд╢рдХ, рд╕рднреА рдЕрдЬреНрдЮрд╛рдд рдмрд┐рдЯреНрд╕ (256 рдорд╛рди) рдХреА рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рдЧрдгрдирд╛ рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рдЕрдВрд╢ рд▓реЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рдХреЛрдИ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд▓рд╛рдн рднреА рдирд╣реАрдВ рд╣реИред
рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдЕрдВрдХрди рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╡рд┐рдзрд┐ рдкреНрд░рддреНрдпрдХреНрд╖ рдЧрдгрдирд╛ рд╕реЗ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред
рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд▓рд┐рдВрдХ рдЬреЛ рдЕрдХреНрд╖рд░ рдХреЛ рдкрд╛рддрд╛ рд╣реИ:
https://github.com/chabapok/sha256unroll