рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдЬрдХреЛрдм рдЬреЗрдирдХреЛрд╡ рджреНрд╡рд╛рд░рд╛ рджреВрд╕рд░реЗ рд▓реЗрдЦ "рдЬрд╛рд╡рд╛ рд╕рд┐рдлрд░" рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЛ рд╢реБрд░реБрдЖрддреА рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛:
- рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА
- рд╕рд┐рдлрд╝рд░
- MessageDigest
- рдореИрдХ
- рд╣рд╕реНрддрд╛рдХреНрд╖рд░
- keypair
- Keygenerator
- KeyPairGenerator
- KeyStore
- keytool
- рдкреНрд░рдорд╛рдгрдкрддреНрд░
- CertificateFactory
- CertPath
рдЬрд╛рд╡рд╛ рд╕рд┐рдлрд░ (рд╕рд┐рдлрд░)
рдЬрд╛рд╡рд╛ рд╕рд┐рдлрд░ рдХреНрд▓рд╛рд╕ ( javax.crypto.Cipher ) рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИред "рд╕рд┐рдлрд░" рд╢рдмреНрдж рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рд╢рдмреНрдж рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рдХреЛ рд╕рд┐рдлрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдПрдирдХреНрд░рд┐рдкреНрдЯрд░ / рдбрд┐рдХреНрд░рд┐рдкреНрдЯрд░ рдпрд╛ рдХреБрдЫ рдФрд░ред рдЬрд╛рд╡рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рд┐рдлрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЕрдзреНрдпрд╛рдп рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдлрд░ рд╡рд░реНрдЧ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕рд┐рдлрд░ рдХреНрд░рд┐рдПрд╢рди
рд╕рд┐рдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ getInstance () рдкрджреНрдзрддрд┐ рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рд┐рдкрд╣рд░ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдПрдХ рдЬрд╛рд╡рд╛ рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
Cipher cipher = Cipher.getInstance("AES");
рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдПрдИрдПрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рдлрд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИред
рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдореЛрдб
рдХреБрдЫ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╡рд┐рднрд┐рдиреНрди рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдореЛрдб рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╡рд┐рд╡рд░рдг рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдореЛрдб рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдореЛрдб рдХрднреА-рдХрднреА рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рдореБрдЦреНрдп рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореЛрдб рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ "рдкрд░рд┐рд╡рд░реНрдзрди" рдХреЗ рд░реВрдк рдореЗрдВред рдпрд╣рд╛рдБ рдХреБрдЫ рдкреНрд░рд╕рд┐рджреНрдз рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдореЛрдб рд╣реИрдВ:
- EBC - рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдХреЛрдбрдмреБрдХ (рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдХреЛрдбрдмреБрдХ рдореЛрдб )
- рд╕реАрдмреАрд╕реА - рд╕рд┐рдлрд░ рдмреНрд▓реЙрдХ рдЪреЗрдирд┐рдВрдЧ
- CFB - рд╕рд┐рдлрд░ рдлреАрдбрдмреИрдХ (рд╕рд┐рдлрд░ рдлреАрдбрдмреИрдХ рдореЛрдб )
- рдУрдПрдлрдмреА - рдЖрдЙрдЯрдкреБрдЯ рдлреАрдбрдмреИрдХ
- CTR - рдХрд╛рдЙрдВрдЯрд░ (рдХрд╛рдЙрдВрдЯрд░ рдореЛрдб )
рд╕рд┐рдлрд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдк рдЗрд╕рдХреЗ рдореЛрдб рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдирд╛рдо рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдмреНрд▓реЙрдХ рдпреБрдЧреНрдорди рдореЛрдб - рд╕рд┐рдлрд░ рдмреНрд▓реЙрдХ рдЪреЗрдирд┐рдВрдЧ (рд╕реАрдмреАрд╕реА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдИрдПрд╕ рд╕рд┐рдлрд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
рдЪреВрдВрдХрд┐ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдпреБрдЧреНрдорди рдореЛрдб рдХреЗ рд▓рд┐рдП "рдкреЗрдбрд┐рдВрдЧ рд╕реНрдХреАрдо" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдердо рдирд╛рдо рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреИрдбрд┐рдВрдЧ рд╕реНрдХреАрдо ( PKCS5Padding ) рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдЬрд╛рдирдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рднреА рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдореЛрдб рдЬрд╛рд╡рд╛ рдПрд╕рдбреАрдХреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рджрд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЖрд╡рд╢реНрдпрдХ рдореЛрдб рдФрд░ рднрд░рдг рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдмрд░реНрд╕реА рдХреИрд╕рд▓ред
рд╕рд┐рдлрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди
рдПрдХ рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕реЗ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ init () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╕рд┐рдлрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Init () рд╡рд┐рдзрд┐ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддреА рд╣реИ:
- рд╢рд╛рд╕рди
- рдХреБрдВрдЬреА
рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдореЛрдб рдореЗрдВ рдПрдХ рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЖрд░рдореНрдн рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
Key key = ...
рдФрд░ рдпрд╣рд╛рдБ рдкрд╣рд▓реЗ рд╕реЗ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдореЛрдб рдореЗрдВ рдПрдХ рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
Key key = ...
рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди
рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрди рджреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдЕрджреНрдпрддрди () рдФрд░ doFinal () рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХрдИ рдУрд╡рд░рд░рд╛рдЗрдб рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рдмреНрд▓реЙрдХ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ doFinal () рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
byte[] plainText = "abcdefghijklmnopqrstuvwxyz".getBytes("UTF-8"); byte[] cipherText = cipher.doFinal(plainText);
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдб рдбреЗрдЯрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рдЧрднрдЧ рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИред рдмрд╕ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдореЛрдб рдореЗрдВ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдБ рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдПрдХ рдмреНрд▓реЙрдХ рдХрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
byte[] plainText = cipher.doFinal(cipherText);
рдпрджрд┐ рдЖрдкрдХреЛ рдХрдИ рдмреНрд▓реЙрдХ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдПрдХ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдЕрдкрдбреЗрдЯ () рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде doFinal () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХрдИ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
byte[] data1 = "abcdefghijklmnopqrstuvwxyz".getBytes("UTF-8"); byte[] data2 = "zyxwvutsrqponmlkjihgfedcba".getBytes("UTF-8"); byte[] data3 = "01234567890123456789012345".getBytes("UTF-8"); byte[] cipherText1 = cipher.update(data1); byte[] cipherText2 = cipher.update(data2); byte[] cipherText3 = cipher.doFinal(data3);
рдЕрдВрддрд┐рдо рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП doFinal () рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд┐рдлрд░ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 8-рдмрд╛рдЗрдЯ рд╕реАрдорд╛) рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдордзреНрдпрд╡рд░реНрддреА рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдХреЛ рдкреВрд░рдХ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрджреНрдпрддрди рдбреЗрдЯрд╛ () рд╡рд┐рдзрд┐ рдХреЛ рдордзреНрдпрд╡рд░реНрддреА рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП doFinal () рдХреЙрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрдИ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЛ рдбреАрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ () рд╡рд┐рдзрд┐ рдФрд░ рдЕрдВрддрд┐рдо рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП doFinal () рд╡рд┐рдзрд┐ рднреА рдХрд╣рддреЗ рд╣реИрдВред рдХрдИ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
byte[] plainText1 = cipher.update(cipherText1); byte[] plainText2 = cipher.update(cipherText2); byte[] plainText3 = cipher.doFinal(cipherText3);
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ, рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдореЛрдб рдореЗрдВ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди / рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди
рд╕рд┐рдлрд░ рд╡рд░реНрдЧ рдХреА рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рд╡рд┐рдзрд┐рдпрд╛рдБ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреБрдЫ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдЕрджреНрдпрддрди () рдФрд░ / рдпрд╛ doFinal () рд╡рд┐рдзрд┐ рдХреЛ рдСрдлрд╕реЗрдЯ рдФрд░ рд▓рдВрдмрд╛рдИ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
int offset = 10; int length = 24; byte[] cipherText = cipher.doFinal(data, offset, length);
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕реВрдЪрдХрд╛рдВрдХ 10 рд╕реЗ рдмрд╛рдЗрдЯреНрд╕ рдФрд░ рдЖрдЧреЗ 24 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдХрд┐ рд╕рд┐рдлрд░ рдХреЗ рдЖрд░рдВрдн рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)ред
рдореМрдЬреВрджрд╛ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди / рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди
рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рд╕рднреА рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдЙрджрд╛рд╣рд░рдг рдПрдХ рдирдП рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореМрдЬреВрджрд╛ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рдмрд╛рдЗрдЯ рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рдХреНрд╖реНрдп рдмрд╛рдЗрдЯ рдХреЛ рдЕрджреНрдпрддрди () рдФрд░ / рдпрд╛ doFinal () рдкрджреНрдзрддрд┐ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВред
int offset = 10; int length = 24; byte[] dest = new byte[1024]; cipher.doFinal(data, offset, length, dest);
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЛ 10 рд╕реВрдЪрдХрд╛рдВрдХ 24 рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдСрдлрд╕реЗрдЯ рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдбреЗрд╕реНрдЯ рдмрд╛рдЗрдЯ рд╕рд░рдгреА 0. рдкрд░ рд╣реИред рдпрджрд┐ рдЖрдк рдбреЗрд╕реНрдЯ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдСрдлрд╕реЗрдЯ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЕрдкрдбреЗрдЯ () рдФрд░ doFinal () рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ рдЬреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рднрд╛рдЧреНрдп рд╕рд░рдгреА рдореЗрдВ рдПрдХ рдСрдлрд╕реЗрдЯ рдХреЗ рд╕рд╛рде doFinal () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
int offset = 10; int length = 24; byte[] dest = new byte[1024]; int destOffset = 12 cipher.doFinal(data, offset, length, dest, destOffset);
рдПрдХ рд╕рд┐рдлрд░ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ
рдПрдХ рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛ рдПрдХ рдорд╣рдВрдЧрд╛ рдСрдкрд░реЗрд╢рди рд╣реИ рдФрд░ рд╕рд┐рдлрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╕рд┐рдлрд░ рд╡рд░реНрдЧ рдХреЛ рдорди рдореЗрдВ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдХреЗ рд╕рд╛рде рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рдЖрдк рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдкрд░ doFinal () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдерд╛ред рддрдм рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛ рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
Cipher cipher = Cipher.getInstance("AES"); Key key = ...
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдФрд░ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕рдВрдЧрдд рдбреЗрдЯрд╛ рдХреЗ рджреЛ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рджреЛ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдЕрдкрдбреЗрдЯ () рдФрд░ рдлрд┐рд░ doFinal () рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд╕рд┐рдлрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рддреАрд╕рд░реЗ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде doFinal () рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред DoFinal () рдореЗрдВ рдЗрд╕ рдХреЙрд▓ рдХреЗ рдмрд╛рдж , рдЖрдк рдЙрд╕реА рдЬрд╛рд╡рд╛ рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХреЗ рджреВрд╕рд░реЗ рдмреНрд▓реЙрдХ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред