рдореЗрдЧрд╛ рдХреНрд▓рд╛рдЙрдб рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд░рдЦреЗрдВ

рдирд┐рдВрджрдиреАрдп рдПрдордИрдЬреАрдП рд╕реЗрд╡рд╛ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж, рдХреБрдЫ рд╣рдж рддрдХ, рдЗрд╕рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдереЛрдбрд╝реА рдКрдм рдЧрдИ рдФрд░ рд╢рд╛рдВрдд рд╣реЛ рдЧрдИред рдЖрдЬ, рд╕реЗрд╡рд╛ рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдЬреАрддреА рд╣реИ рдФрд░ рдХрд┐рд╕реА рдиреЗ рднреА рдЗрд╕реЗ рдирд╣реАрдВ рддреЛрдбрд╝рд╛ред рд╕рднреА рд╡рд╛рд░реНрддрд╛рд▓рд╛рдкреЛрдВ рдореЗрдВ рд╕реЗ, рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рдмреНрдж "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди" (UCE, рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝реА), рдЬреЛ MEGA рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ, рдЪреВрдХ рдЧрдпрд╛ рдерд╛ред "рдорд┐рд╕реНрдб" рд╢рдмреНрдж рд╕реЗ рдореЗрд░рд╛ рддрд╛рддреНрдкрд░реНрдп рдЗрд╕ рддрдереНрдп рд╕реЗ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЙрди рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдЗрдВрдЬрди рд╣реИ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ MEGA рд╕реЗрд╡рд╛ рдХрд╛ рдЕрд░реНрде рдХреЗрд╡рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЙрдирдХреА рд╕рднреА рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЙрд╕реА рд╕рдордп, рд╕реЗрд╡рд╛ рдХреЗ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдмрд╛рддреЗрдВ рд╣реБрдИрдВ рдХрд┐ рдпрд╣ рдЕрд╕реНрдерд┐рд░ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рд╕рдм рдХреБрдЫ рдЦрд░рд╛рдм рд╣реИ рдФрд░ рд╣рдо рд╕рднреА рдорд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдПрдлрдПрд╕рдмреА рд╣рдорд╛рд░реА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ ред рдЗрд╕рдиреЗ рдореБрдЭреЗ "рдпреВрд╕реАрдИ" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдФрд░ рд╕реЗрд╡рд╛ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддрдВрддреНрд░реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдпрд╛ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдореЗрдЧрд╛ рдореЗрдЧрд╛ рдХреЛрдб рдХреЗ рджреЛ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЬрд╛рджреВ рдХреЛ рд╣рд▓ рдХрд░реВрдБрдЧрд╛ рдФрд░ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдФрд░ рдЪрд┐рдВрддрд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреЛ рдХреИрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рджреЛ-рдХрд╛рд░рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЙрдб-рдЖрдзрд╛рд░рд┐рдд рдлрд╝рд╛рдЗрд▓ рд╕рдВрдЧреНрд░рд╣рдг рд╕реЗрд╡рд╛ рдорд┐рд▓рддреА рд╣реИред

рдореЗрдЧрд╛, рдпреВрд╕реАрдИ рдФрд░ рдСрд▓-рдСрд▓-рдСрд▓

рддреЛ, рдЖрдЗрдП рдЙрди рддрдХрдиреАрдХреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рд╢реБрд░реВ рдХрд░реЗрдВ, рдЬрд┐рди рдкрд░ рд╕реЗрд╡рд╛ рдХрд╛ рдЧреНрд░рд╛рд╣рдХ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреИрд╕реЗ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВ, рдкреНрд░рдорд╛рдгрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВ, рдкрд╛рд╕рд╡рд░реНрдб рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб / рдбрд╛рдЙрдирд▓реЛрдбред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╕реЗрд╡рд╛ рдХрд╛ рдкреВрд░рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣рд┐рд╕реНрд╕рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд▓реЛрдб рдХрд┐рдП рдЧрдП SHA-256 рдЪреЗрдХрд╕рдо рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЛрдб рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдбрд╛рдЙрдирд▓реЛрдб рд╕реНрд╡рдпрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЪреЗрдХрд╕рдо рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рдПрдХ рдмреАрдПрд▓рдУрдмреА рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Js-files source рдХреЛрдб рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдереЗ рдФрд░ рдХрднреА-рдХрднреА рдЕрдЬреАрдм рдореЛрддреА рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ, рдЕрд░реНрдерд╣реАрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдФрд░ рдмрд╕ рдЕрдЬреАрдм рдЪрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдоред







рд╕рд╛рдЗрдЯ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЫреЛрдЯреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИред рдХреЛрдб рд╕реНрд╡рдпрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рдмрд┐рдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реИрдкрд┐рдВрдЧ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ: рд╕рд╛рдЗрдЯ рддреАрди рд╕реМ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдФрд░ 8000 рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддреА рд╣реИред рд╕рд╛рдЗрдЯ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рд╕рдордЭрдирд╛ рдФрд░ рдЙрд╕рдХрд╛ рдХреЛрдб рдмрджрд▓рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рдерд╛ред

рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ, MEGA jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдЕрдм рдпрд╣ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рд╣реИ), Ext JS рдФрд░ SJCL ред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдПрдИрдПрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд╕рд╛рде рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдХреЛрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред SJCL рднрдВрдбрд╛рд░рдг рдХреБрдВрдЬреА рдФрд░ рдЕрдиреНрдп рдмрд╛рдЗрдЯ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░рд╛рд░реВрдк рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рдирд┐рдпрдорд┐рдд рд╕рд░рдгреА рдореЗрдВ рдХреЗрд╡рд▓ рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдкреАрдЫрд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЙрдиреНрд╣реЗрдВ a32 рдирд╛рдордХ рдПрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ "рд╕рдВрдХреБрдЪрд┐рдд" рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ 32-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЫреЛрдЯреА рд▓рдВрдмрд╛рдИ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рд╕рд░рдгреА рдХреЗ рд╣рд░ 4 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдПрдХ рдХреЗрд▓ рдЗрдВрдЯ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдЗрдЯ рдХреЛрдб рдореЗрдВ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ {a32 array, string, base64 string} рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдореБрдЦреНрдп рдЬрд╛рдирдХрд╛рд░реА

рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЙрд╕ рдЬрд╛рдирдХрд╛рд░реА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рдЬреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рдЕрдзреАрди рд╣реИ, рдЕрд░реНрдерд╛рддреН:

рдХреЛрдб рдХреЗ рдХрд░реАрдм

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



рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрдВрдЬреАрдХрд░рдг

рдкрдВрдЬреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдпрдВ рд╣реА рднреНрд░рд╛рдордХ рд╣реИ, рдкреНрд░рд╢реНрдирд╛рд╡рд▓реА рднрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЧреБрдЪреНрдЫрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо api_createuser рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:

 //      - function api_createuser(ctx, invitecode, invitename, uh) { var i; var ssc = Array(4); // session self challenge, will be used to verify password var req, res; if (!ctx.passwordkey) { ctx.passwordkey = Array(4); for (i = 4; i--;) ctx.passwordkey[i] = rand(0x100000000); } if (!u_k) api_create_u_k(); //   - u_k for (i = 4; i--;) ssc[i] = rand(0x100000000); //     if (d) console.log("api_createuser - masterkey: " + u_k + " passwordkey: " + ctx.passwordkey); //  -         ( k) //  ts    ssc     req = { a: 'up', k: a32_to_base64(encrypt_key(new sjcl.cipher.aes(ctx.passwordkey), u_k)), ts: base64urlencode(a32_to_str(ssc) + a32_to_str(encrypt_key(new sjcl.cipher.aes(u_k), ssc))) }; if (invitecode) { req.uh = uh; req.ic = invitecode; req.name = invitename; } if (d) console.log("Storing key: " + req.k); api_req([req], ctx); } 

рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рддреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:
 // encrypt/decrypt 4- or 8-element 32-bit integer array function encrypt_key(cipher, a) { if (a.length == 4) return cipher.encrypt(a); var x = []; for (var i = 0; i < a.length; i += 4) x = x.concat(cipher.encrypt([a[i], a[i + 1], a[i + 2], a[i + 3]])); return x; } 

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ:

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди

рдЕрдм рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
  1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ
  2. рдпрджрд┐ рдкрд╣рд▓реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрджрдо рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдФрд░ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдмрдирд╛рдП рдЧрдП рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрдиреБрдХреНрд░рдо ( ssc ) рд╕рд░реНрд╡рд░ рд╕реЗ рдЖрддреЗ рд╣реИрдВ
  3. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдкрд╛рд╕рд╡рд░реНрдб рдкрд░ рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
  4. рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрдиреБрдХреНрд░рдо рдХреЛ рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдкрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ - рдпрд╣ рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЗ рд▓рд┐рдП, рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди api_getsid2 :

 //  -      function api_getsid2(res, ctx) { var t, k; var r = false; if (typeof res == 'object') { //  sjcl-aes    var aes = new sjcl.cipher.aes(ctx.passwordkey); //       -... if (typeof res[0].k == 'string') { k = base64_to_a32(res[0].k); if (k.length == 4) { // ...    k = decrypt_key(aes, k); //  - sjcl-aes,  - aes = new sjcl.cipher.aes(k); //    ssc    if (typeof res[0].tsid == 'string') { t = base64urldecode(res[0].tsid); //           //    - ,          if (a32_to_str(encrypt_key(aes, str_to_a32(t.substr(0, 16)))) == t.substr(-16)) r = [k, res[0].tsid]; } //     RSA-,      else if (typeof res[0].csid == 'string') { var t = mpi2b(base64urldecode(res[0].csid)); var privk = a32_to_str(decrypt_key(aes, base64_to_a32(res[0].privk))); var rsa_privk = Array(4); // decompose private key for (var i = 0; i < 4; i++) { var l = ((privk.charCodeAt(0) * 256 + privk.charCodeAt(1) + 7) >> 3) + 2; rsa_privk[i] = mpi2b(privk.substr(0, l)); if (typeof rsa_privk[i] == 'number') break; privk = privk.substr(l); } // check format if (i == 4 && privk.length < 16) { // TODO: check remaining padding for added early wrong password detection likelihood r = [k, base64urlencode(crypto_rsadecrypt(t, rsa_privk).substr(0, 43)), rsa_privk]; } } } } } ctx.result(ctx, r); } 

рдкрдВрдЬреАрдХрд░рдг / рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

 //    function changepw(currentpw, newpw, ctx) { var pw_aes = new sjcl.cipher.aes(prepare_key_pw(newpw)); api_req([{ a: 'up', currk: a32_to_base64(encrypt_key(new sjcl.cipher.aes(prepare_key_pw(currentpw)), u_k)), k: a32_to_base64(encrypt_key(pw_aes, u_k)), uh: stringhash(u_attr['email'].toLowerCase(), pw_aes) }], ctx); } 

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХреЛрдб рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддрд╛ рд╣реИ: рд╣рдо рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗ рдкреНрд░рд╛рдкреНрдд рджреЛ рдХреБрдВрдЬреА рдкрд░ рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддреЗ рд╣реИрдВред рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдкрд╛рд╕рд╡рд░реНрдб рдиреЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рдирдП рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдореИрдВ prepare_key_pw рдлрдВрдХреНрд╢рди рдкрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬреЛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рд╕рднреА рдСрдкрд░реЗрд╢рдиреЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рдерд╛ред рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ a32 рдРрд░реЗ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреБрдВрдЬреА рд╡реНрдпреБрддреНрдкрддреНрддрд┐ рдСрдкрд░реЗрд╢рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд░рдирд╛ рд╣реИ:

 // convert user-supplied password array function prepare_key(a) { var i, j, r; var aes = []; var pkey = [0x93C467E3, 0x7DB0C7A4, 0xD1BE3F81, 0x0152CB56]; for (j = 0; j < a.length; j += 4) { key = [0, 0, 0, 0]; for (i = 0; i < 4; i++) if (i + j < a.length) key[i] = a[i + j]; aes.push(new sjcl.cipher.aes(key)); } for (r = 65536; r--;) for (j = 0; j < aes.length; j++) pkey = aes[j].encrypt(pkey); return pkey; } 

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реА рд╢рд┐рдХрд╛рдпрддреЗрдВ рдкреИрджрд╛ рдХреАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╣реЛрдордЧреНрд░реЛрди рдПрд▓реНрдЧреЛрд░рд┐рдердо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрди рдХреЗ рджреМрд░рд╛рди, рд╕реЗрд╡рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдХреЛрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рджреЗрдЦрд╛ред рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреБрдВрдЬреА рд╕реЗ рдПрдХ рдЕрд╡рд┐рднрд╛рдЬреНрдп рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░рдВрддрд░ рдХреБрдВрдЬреА рдкрд░ рдкреНрд░реЗрд╖рд┐рдд рдкрд╛рд╕рд╡рд░реНрдб 65536 рдмрд╛рд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реЗрд╡рд╛ рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ рдореМрдЬреВрджрд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, PBKDF2) рдПрдХ рд░рд╣рд╕реНрдп рдмрдирд╛ рд╣реБрдЖ рд╣реИред

рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЗрд╕ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдореИрдВ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реВрдВ, рдЗрд╕ рдЫрд╡рд┐ рдХреА рд▓рдВрдмреА рд╕рдордЭ рдорд╕реНрддрд┐рд╖реНрдХ рдХреЗ рд▓рд┐рдП рдЦрддрд░рдирд╛рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдиреАрдЪреЗ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдерд╛, рдЕрдкрд▓реЛрдб рдХреЗ рджреМрд░рд╛рди, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП 6 32-рдмрд┐рдЯ рдирдВрдмрд░реЛрдВ рд╕реЗ рдЕрдкрдирд╛ рд░реИрдВрдбрдо рдХреА-рдПрд░реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рд░рдгреА рдХреЗ рдкрд╣рд▓реЗ рдЪрд╛рд░ рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдВрддрд┐рдо рджреЛ - рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЪреЗрдХрд╕рдо рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рд╕рд░рдгреА ul_key рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА JSON-serialized string ul_KeyNonce рдореЗрдВ рджрд░реНрдЬ рдХреА рдЧрдИ рд╣реИред

рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╕реНрд╡рдпрдВ рд╡реЗрдм рд╡рд░реНрдХрд░ (рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ) рдпрд╛ рдХреЗрд╡рд▓ рдкреГрд╖реНрда рдХреЗ рдореБрдЦреНрдп рдХреЛрдб рдХреЗ рдЕрдВрджрд░ рд╣реЛрддрд╛ рд╣реИред рдЬрдм рдлрд╝рд╛рдЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, рддреЛ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдлрд┐рд▓рд╣рд╛рд▓, рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдорддрд▓рдм рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╣реИ), ul_key рдФрд░ рдлрд╝рд╛рдЗрд▓ рдЪреЗрдХрд╕рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирдпрд╛ ul_key рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреБрдВрдЬреА рддрдм рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдкрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИред рдЗрди рд╕рднреА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП initupload3 рдФрд░ api_completeupload2 рдлрд╝рдВрдХреНрд╢рди рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред ul_chunkcomplete рдХреБрдВрдЬреА ul_chunkcomplete рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ filekey рд╣реИ, рдиреАрдЪреЗ рдореИрдВ рдЗрд╕рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рджреВрдВрдЧрд╛ред

 //   :         function initupload3() { // ...  =) //      // ul_key    , // ul_keyNonce   Web Worker    //         ul_key = Array(6); for (i = 6; i--;) ul_key[i] = rand(0x100000000); ul_keyNonce = JSON.stringify(ul_key); ul_macs = []; // ...     ,     ... //  sjcl-aes     ul_key ul_aes = new sjcl.cipher.aes([ul_key[0], ul_key[1], ul_key[2], ul_key[3]]); // ... //    : //    ,    onUploadStart(ul_queue_num); ul_dispatch_chain(); } //       function ul_chunkcomplete(slot,pos,response) { // ... var t = []; // ul_macs -     ,   worker' for (p in ul_macs) t.push(p); //     ,      -   t.sort(function(a,b) { return parseInt(a)-parseInt(b) }); for (var i = 0; i < t.length; i++) t[i] = ul_macs[t[i]]; //  condenseMacs   //  ""       4  var mac = condenseMacs(t,ul_key); ul_settimeout(-1); //             //           var filekey = [ul_key[0]^ul_key[4],ul_key[1]^ul_key[5],ul_key[2]^mac[0]^mac[1],ul_key[3]^mac[2]^mac[3],ul_key[4],ul_key[5],mac[0]^mac[1],mac[2]^mac[3]]; // ... } //   :           function api_completeupload2(ctx, ut) { var p; if (ctx.path && ctx.path != ctx.n && (p = ctx.path.indexOf('/')) > 0) { var pc = ctx.path.substr(0, p); ctx.path = ctx.path.substr(p + 1); fm_requestfolderid(ut, pc, ctx); } else { //     ,   ul_key    // ctx.k == filekey a = { n: ctx.n }; if (d) console.log(ctx.k); var ea = enc_attr(a, ctx.k); if (d) console.log(ea); //      -   var req = { a: 'p', t: ut, n: [{ h: ctx.t, t: 0, a: ab_to_base64(ea[0]), //  k: a32_to_base64(encrypt_key(u_k_aes, ctx.k)), // == AES_encrypt(u_k, filekey) fa: ctx.fa }] }; if (ut) { // a target has been supplied: encrypt to all relevant shares var sn = fm_getsharenodes(ut); if (sn.length) { req.cr = crypto_makecr([ctx.k], sn, false); req.cr[1][0] = ctx.t; } } api_req([req], ctx.ctx); } } 

рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдмрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдлрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд▓рдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдмреНрдпрд╛рдЬ рдХреА рд╣реЛ рд╕рдХрддреА рд╣реИ рд╡рд╣ рд╕рд░реНрд╡рд░ рд╕реЗ рдЖрдП рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб ul_key рд╕реЗ ul_key рдХреБрдВрдЬреА ul_key рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реА рд╣реИред

рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд╕рдордп, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реА рдмрд╛рд░ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реЗрд╡рд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд╣ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ (рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╣рд╛рдВ рдерд╛)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдлрд╝рд╛рдЗрд▓ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ рдЙрдирдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛред рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЕрдЧрд▓рд╛ рдмрдВрдбрд▓ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ loadfm_callback рдФрд░ process_f_f рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд░реБрдЪрд┐ рдХреЗ рд╣реИрдВред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдореНрди рдПрд▓реНрдЧреЛрд░рд┐рдердо рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
  1. рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ ( loadfm_callback ), рдЬрд╣рд╛рдВ JSON рдХреЛ рд╕рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ
  2. рдПрдХ рд╕рд░рдгреА рд╕рд░рдгреА рдмрдирд╛рдПрдБ рдЬрд┐рд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд░рдЦреЗрдВ
  3. рдЪрд▓рд╛рдПрдБ (рдкреБрдирд░рд╛рд╡рд░реНрддреА) рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП process_f_f рдлрд╝рдВрдХреНрд╢рди
  4. рдХреБрдВрдЬреА рд╡рд╛рд▓реА рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдХреБрдВрдЬреА рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ ( crypto_processkey рдлрд╝рдВрдХреНрд╢рди) рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлрд╝рд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ рд╕рд░рдгреА рдореЗрдВ рд╡рд╛рдкрд╕ рд╕рд╣реЗрдЬреЗрдВ
  5. рдЙрд╕рдХреЗ рдмрд╛рдж, process_f_f рдЪрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ (рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ process_f_f )

рдиреАрдЪреЗ рдореИрдВ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдЕрдВрд╢ рдкреНрд░рджрд╛рди рдХрд░реВрдВрдЧрд╛

 // callback  - function loadfm_callback(json, res) { // ... //  JSON     json = json[0]; if (d) console.log(json); if (d) console.log(json); if (json.u) process_u(json.u, false); if (json.ok) process_ok(json.ok); if (json.s) { for (i in json.s) { if (u_sharekeys[json.s[i].h]) { sharingData.push({ id: json.s[i].h + '_' + json.s[i].u, userid: json.s[i].u, folderid: json.s[i].h, rights: json.s[i].r, date: json.s[i].ts }); sharednodes[json.s[i].h] = true; } } } // ...   ... //          farray[fi] = new Object; farray[fi].f = json.f; //   , callback    //        process_f(fi, false, callback); fi++; } //  ,         //   process_f function process_f_f(fid) { //    -       farray if (!farray[fid].f[farray[fid].i]) { if (farray[fid].ap) FileStore.suspendEvents(); //    FileStore FileStore.loadData(farray[fid].mdata, true); if (farray[fid].ap) FileStore.resumeEvents(); if (d) console.log('call reqmissingkeys:'); crypto_reqmissingkeys(); if (farray[fid].callback) farray[fid].callback.fn(farray[fid].callback); return false; } var f = farray[fid].f[farray[fid].i]; f.attrs = fa; if (f.sk) u_sharekeys[fh] = crypto_process_sharekey(fh, f.sk); //        ,    if ((ft !== 2) && (ft !== 3) && (ft !== 4) && (fk)) { crypto_processkey(u_handle, u_k_aes, f); //     u_nodekeys[fh] = f.key; if ((typeof f.name !== 'undefined') && (fp == InboxID)) InboxCount++; } else { if (fa) { if (!missingkeys[fh]) { missingkeys[fh] = true; newmissingkeys = true; } } fk = ''; f.name = ''; } if (ft == 2) RootID = fh; else if (ft == 3) InboxID = fh; else if (ft == 4) TrashbinID = fh; else if ((ft < 2) || (ft == 5)) { //      } else { //      FileStore farray[fid].mdata.push({ id: fhreplace(/[^az^AZ^0-9^_^-]/g, ""), name: f.name, size: fs, type: filetype(f.name, ft), icon: fileicon(f.name, icontype), parentid: fp, folder: ft, owner: fu, date: f.ts, attrs: f.attrs, key: f.key, r: fr, su: f.su, fa: f.fa, }); if (fp == TrashbinID) trashbinfull = true; if (((ft) && (farray[fid].ap)) || (fp == InboxID)) refreshtree = true; } farray[fid].i++; //   (,   -    ) timeoutcount++; if (!(timeoutcount & 63)) { //     63  -     setTimeout("process_f_f(" + fid + ")", 1); timeoutcount2++; } //  -     else process_f_f(fid); } //       function crypto_processkey(me, master_aes, file) { var id, key, k, n; if (!file.k) { if (!keycache[file.h]) return; file.k = keycache[file.h]; } id = me; // do I own the file? (user key is guaranteed to be first in .k) //     "<file handle>:<key>/<share key>" var p = file.k.indexOf(id + ':'); //  ,      if (p) { // I don't - do I have a suitable sharekey? for (id in u_sharekeys) { p = file.k.indexOf(id + ':'); if (p >= 0 && (!p || file.k.charAt(p - 1) == '/')) break; p = -1; } } //        if (p >= 0) { delete keycache[file.h]; //  -    var pp = file.k.indexOf('/', p); if (pp < 0) pp = file.k.length; p += id.length + 1; key = file.k.substr(p, pp - p); // we have found a suitable key: decrypt! if (key.length < 46) { // short keys: AES k = base64_to_a32(key); // check for permitted key lengths (4 == folder, 8 == file) if (k.length == 4 || k.length == 8) { //     -,      k = decrypt_key(id == me ? master_aes : new sjcl.cipher.aes(u_sharekeys[id]), k); } else { if (d) console.log("Received invalid key length (" + k.length + "): " + file.h); return; } } else { // long keys: RSA if (u_privk) { var t = mpi2b(base64urldecode(key)); if (t) k = str_to_a32(crypto_rsadecrypt(t, u_privk).substr(0, file.t ? 16 : 32)); else { if (d) console.log("Corrupt key for node " + file.h); return; } } else { if (d) console.log("Received RSA key, but have no public key published: " + file.h); return; } } //    var ab = base64_to_ab(file.a); //          var o = dec_attr(ab, k); if (typeof o == 'object') { if (typeof on == 'string') { if (file.h) { u_nodekeys[file.h] = k; if (key.length >= 46) rsa2aes[file.h] = a32_to_str(encrypt_key(u_k_aes, k)); } //        -      file.key = k; file.name = on; } } } else { if (d) console.log("Received no suitable key: " + file.h); if (!missingkeys[file.h]) { newmissingkeys = true; missingkeys[file.h] = true; } keycache[file.h] = file.k; } } 

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрджрд░реНрдн рд╕реЗ ul_key рд╕реНрд░реЛрдд рдХреБрдВрдЬреА рдХрд╛ рдореВрд▓реНрдп рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 dl_keyNonce = JSON.stringify([dl_key[0]^dl_key[4],dl_key[1]^dl_key[5],dl_key[2]^dl_key[6],dl_key[3]^dl_key[7],dl_key[4],dl_key[5]]); 

рдпрд╣ рд░реВрдкрд╛рдВрддрд░рдг startdownload рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ dl_key == filekey ul_chunkcomplete рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╣реИ рдФрд░ рдХреБрдЫ рд╕рд░рд▓ рдореЙрдбреБрд▓реЛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ рдХрд┐ dl_keyNonce рдЪрд░, рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рдЙрддреНрдкрдиреНрди ul_key рдорд╛рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛ред рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдкрд░ рдЕрдиреБрднрд╛рдЧ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдлреЛрдЯреЛ рдореЗрдВ рдмреНрд▓реИрдХрдмреЛрд░реНрдб рдХреЗ рдирд┐рдЪрд▓реЗ рдмрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рдпрд╣ рдЪрд┐рддреНрд░рдг рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ "рдЕрдзрд┐рднрд╛рд░"

рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдЙрдкрд░реЛрдХреНрдд рд╕рд┐рджреНрдзрд╛рдВрдд рдмрд╣реБрдд рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВ, рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрднреА рднреА рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕реЗрд╡рд╛ рдХреЗ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдЧрд╛, рдЙрдирдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ред рдЕрд░реНрдерд╛рддреН, рдореИрдВрдиреЗ GOST 28147-89 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЧреИрд░-рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдпреЛрдЧреНрдп рдХреБрдВрдЬреА рдкрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА (рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреБрдВрдЬреА) рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕ рдкрд░ рдПрдХ рдмреЛрдирд╕ рднреА рд╕реЗрд╡рд╛ рдкрд░ рджреЛ-рдХрд╛рд░рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рд╕рдорд╛рд╡реЗрд╢ рд╣реЛрдЧрд╛ред
рддреЛ, рдЗрд╕ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЯреЛрдХрди рдФрд░ рдЙрд╕рдХреЗ рдкрд┐рди рдХреЛрдб рдХреЗ рдмрд┐рдирд╛ рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдХрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдпрд╣ рджреЗрдЧрд╛:
  1. рд╕реЗрд╡рд╛ рдкрд░ рджреЛ-рдХрд╛рд░рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг (рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рд╣реБрдП рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдХреЗ рдмрд┐рдирд╛, api_getsid2 рдлрд╝рдВрдХреНрд╢рди "рд╡рд┐рдлрд▓" рд╣реЛрдЧрд╛)
  2. рдЯреЛрдХрди рдХреЗ рдмрд┐рдирд╛, рдЪрд╛рд▓реВ рдЦрд╛рддрд╛ рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓рдирд╛ рднреА рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛

рдЕрдЧрд▓рд╛ рдХрджрдо рдлрд╝рд╛рдЗрд▓ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА (рдЙрд░реНрдл ul_key ) рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреБрдВрдЬреА ( ul_key ) рдХреЛ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдХреБрдВрдЬреА рдкрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдХрднреА рднреА рд╕рд░реНрд╡рд░ рдХреЛ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ, рдЬрд╣рд╛рдВ api_completeupload2 рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ api_completeupload2 рдЬрд╛рдПрдЧрд╛ред рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЦреБрд▓реЗ рдлрд╝рд╛рдЗрд▓ рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЬрд╛рдПрдВрдЧреАред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реБрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рдХреЛ рд╕реНрдХреЗрдЪ рдХрд┐рдпрд╛:



рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣рд╛рдВ рдореИрдВрдиреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рдореБрд╢реНрдХрд┐рд▓ рддрд░реАрдХрд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╣ рд╕рд░реНрд╡рд░ рд╕реЗ рдЖрдИ рдлрд╝рд╛рдЗрд▓ рдХреБрдВрдЬреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реЛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдЬрд╛рдирддрд╛ рд╣реЛред рдЗрд╕рд▓рд┐рдП, рдпрд╣рд╛рдВ рдЖрдк рд╕реЗрд╡рд╛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП ul_key (рдпрд╛ dl_key) рдХреБрдВрдЬреА рдЯреЛрдХрди рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд ul_keyNonce рдХреБрдВрдЬреА рдорд╛рди (рд╕рдорд╛рди dl_keyNonce) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рдпреБрдХреНрдд рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдБ

рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпреВрдПрд╕рдмреА рдЯреЛрдХрди рд░реЙрдЯреЛрдХрди рдИрдбреАрдПрд╕ (рд░реБрддреЛрдХрди рд╡реЗрдм рднреА рдЙрдкрдпреБрдХреНрдд рд╣реИ) рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд▓рдЧ-рдЗрди "рд░реВрддреЛрдХрди рд╡реЗрдм рдкреАрдХреЗрдЖрдИ рд╕рдВрд╕реНрдХрд░рдг" рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рд▓реЗрдЦ рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рд╣реИ Rutoken WEB PKI рд╕рдВрд╕реНрдХрд░рдг рдФрд░ RBS рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╢реАрд▓реНрдб рдФрд░ рддрд▓рд╡рд╛рд░ред рд▓рд╛рдЧреВ рд╕рдорд╛рдзрд╛рди ред

рдЗрди рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ, GOST 28147-89 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рдЬреБрдбрд╝ рдЧрдИ рд╣реИред GOST 28147-89 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдкреНрд▓рдЧрдЗрди рдХрд╛ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдкреНрд▓рдЧрдЗрди рдХреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдкреАрдПрдо рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВред
рдкреНрд▓рдЧрдЗрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ, рд╕рдордорд┐рдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрди рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реЛрддрд╛ рд╣реИ:
 encrypt(deviceId, keyLabel, data, resultCallback, errorCallback) тЖТ {string} 

рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рд▓реЗрддрд╛ рд╣реИ:
рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ decrypt рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдХреБрдВрдЬреА рд▓реЗрдмрд▓ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ (рдбрд┐рдХреНрд░рд┐рдкреНрдЯ) рдХреЗ рд▓рд┐рдП рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдмрд▓ рдПрдХ рдордирдорд╛рдирд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ рдФрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреБрдВрдЬреА рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рджреЛ рдореБрдЦреНрдп рдЬреЛрдбрд╝реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ: рдПрдХ рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рджреВрд╕рд░рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлрд╝рд╛рдЗрд▓ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЬрд┐рд╕ рдХреБрдВрдЬреА рдкрд░ рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЧрдИ рд╣реИ, рдЙрд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдмрд░рд╛рдмрд░ рдПрдХ рд▓реЗрдмрд▓ рд╣реИ (рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ e-mail||, рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛)ред рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдХреБрдВрдЬреА рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рдмрд░рд╛рдмрд░ рдПрдХ рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдпрд╣рд╛рдВ рдпрд╣ рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рд╕реЗ рдПрдХ рд╣реИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рднреА рд╣реИ)ред

рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд┐рдХрд╛рд╕

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

рд╕рдорд╛рдкреНрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдпрд╣ рдХреНрд░реЙрд╕рд░рд╛рдЗрдб рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ , рдЬреЛ рддреАрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ (рдХреНрд░реЛрдо, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ IE) рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд░реЛрдо рдпрд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдкрд╣рд▓реЗ рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рднреЛрдЬ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛрдб рд╕рд░рд▓ рд╣реИ: рдпрд╣ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рд╕реЗрд╡рд╛ рдкреГрд╖реНрда рдкрд░ рд╣реИрдВ рдФрд░ рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреБрдЫ рд╕рдВрд╡рд╛рдж рдЬреЛрдбрд╝рдХрд░ рдкреГрд╖реНрда рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреА рд╣реИрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреА рд╣реИрдВ:рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдореИрдВ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдХрд╛рд░реНрдпрд╢реАрд▓ рдЦрд╛рддреЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрджрд┐ рдХреЛрдИ рднреА рдЗрд╕ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
  1. рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реБрддреЛрдХрди рдИрдбреАрдПрд╕ (рдпрд╛ рд░реБрдЯреЛрдХрди рд╡реЗрдм) рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ
  2. рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
  3. рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЕрдХреНрд╖рдо рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ
  4. рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рдХреНрд╖рдо рдХрд░реЗрдВ
  5. рдЕрдХрд╛рдЙрдВрдЯ рдкреЗрдЬ рдкрд░ рдЬрд╛рдПрдВ
  6. "рд▓рд┐рдВрдХ рдЯреЛрдХрди" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
  7. рд╡рд░реНрддрдорд╛рди рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рдСрдкрд░реЗрд╢рди рдХрд░реЗрдВ
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмреБрдХрдорд╛рд░реНрдХрд▓реЗрдЯ (рдХреНрд░реЛрдо, рд╕рдлрд╛рд░реА, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 javascript:(function(){if(document.getElementById('cryptorutokenjs')){alert('  ');return}function loadRemoteScript(url){var script=document.createElement('script');script.type="text/javascript";script.src=url;document.head.appendChild(script)}function loadRemoteStyle(url){var style=document.createElement('link');style.rel='stylesheet';style.type="text/css";style.href=url;document.head.appendChild(style)}loadRemoteStyle("https://mega-crypto.googlecode.com/git/mega.css");loadRemoteScript("https://mega-crypto.googlecode.com/git/util.js");loadRemoteScript("https://mega-crypto.googlecode.com/git/rutoken-extra.js");loadRemoteScript("https://mega-crypto.googlecode.com/git/rutoken-crypto.js");loadRemoteScript("https://mega-crypto.googlecode.com/git/mega.js")})(); 

рдХрд╛рд░реНрдп рдкреНрд░рджрд░реНрд╢рди

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рд╛рдЗрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
  1. рд╕реЗрд╡рд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдмрдВрдзрдХ рдкреГрд╖реНрда рдЦреЛрд▓реЗрдВ



  2. рд╣рдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдпрд╛ рдмреБрдХрдорд╛рд░реНрдХрд▓реЗрдЯ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдЯреЛрдХрди рдкрд┐рди рджрд░реНрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛



  3. рд╣рдо рдЦрд╛рддреЗ рдХреЗ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЦрд╛рддреЗ рдореЗрдВ рдЯреЛрдХрди рдмрд╛рдВрдзрддреЗ рд╣реИрдВ





рддрдм рдЖрдк рд╕реЗрд╡рд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЛ-рдХрд╛рд░рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд┐рд░ рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
  1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░реЗрдВ

  2. рдкрд┐рди рджрд░реНрдЬ рдХрд░реЗрдВ



  3. ...

  4. рд▓рд╛рдн!


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдирд┐рдореНрди рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИ:
  1. рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЙрдЧрд┐рди-рдкрд╛рд╕рд╡рд░реНрдб рдЬреЛрдбрд╝реА рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
  2. рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╕рд╣реА рд╣реИрдВ, рддреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдЖрддреА рд╣реИ
  3. рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд┐рди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  4. рдпрджрд┐ рдкрд┐рди рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдорд╛рд╕реНрдЯрд░ рдХреБрдВрдЬреА рдХреЛ рдЯреЛрдХрди рд╕реЗ рдХреБрдВрдЬреА рдкрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп

рдпрд╣рд╛рдВ рдореИрдВ "рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП ..." рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдмрдирд╛рдиреЗ рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдЦрд░рд╛рдм рдХрд░рдиреЗ рдХреА рджрд┐рд▓рдЪрд╕реНрдкрддрд╛ рдХреЛ рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреА рдУрд░ рдореБрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдХрд┐рд╕реА рднреА рд╡реЗрдм рд╕реЗрд╡рд╛ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдП: рдХреНрдпрд╛ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рднрдВрдбрд╛рд░рдг, рдореЗрд▓ рдпрд╛ рд╕рд░рд▓ рдЪреИрдЯ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, VKO GOST R 34.10-2001 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ CMS рдкреНрд░рд╛рд░реВрдк рдФрд░ рдХреБрдВрдЬреА рд╡рд┐рдирд┐рдордп рддрдВрддреНрд░ рдореЗрдВ рд╕рдВрджреЗрд╢ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рдореЗрд▓ рд╕реЗрд╡рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдореЗрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдкрдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИред

рдкреБрдирд╢реНрдЪ: рд╣рдо рдкрд╣рд▓реЗ рдкрд╛рдВрдЪ рд▓реЛрдЧреЛрдВ рдХреЛ (рдорд╛рд╕реНрдХреЛ рд╕реЗ) рдЯреЛрдХрди рджреНрд╡рд╛рд░рд╛ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗ рд╕рдХрддреЗ рд╣реИрдВ - рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореЗрдВ рд▓рд┐рдЦреЗрдВред

Source: https://habr.com/ru/post/In176513/


All Articles