рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреАред рдореИрдХ рд╡рд░реНрдЧ

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдЬрдХреЛрдм рдЬреЗрдирдХреЛрд╡ рджреНрд╡рд╛рд░рд╛ рдЪреМрдереЗ рд▓реЗрдЦ "рдЬрд╛рд╡рд╛ рдореИрдХ" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ, рд╢реБрд░реБрдЖрддреА рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред


рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛:


  1. рдЬрд╛рд╡рд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА
  2. рдЬрд╛рд╡рд╛ рд╕рд┐рдлрд░
  3. MessageDigest
  4. рдореИрдХ
  5. рд╣рд╕реНрддрд╛рдХреНрд╖рд░
  6. keypair
  7. Keygenerator
  8. KeyPairGenerator
  9. KeyStore
  10. keytool
  11. рдкреНрд░рдорд╛рдгрдкрддреНрд░
  12. CertificateFactory
  13. CertPath

рд╕рдВрджреЗрд╢ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛрдб (рдореИрдХ)


рдЬрд╛рд╡рд╛ рдореИрдХ ( javax.crypto.Mac ) рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛрдб (рдореИрдХ) рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдореИрдХ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реИ рдЬрд┐рд╕реЗ рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЖрдк рдореИрдХ рдХреА рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдХрд░


рдореИрдХ рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдореИрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдХ рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг getInstance () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореИрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:


Mac mac = Mac.getInstance("HmacSHA256"); 

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ getInstance () рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, HmacSHA256 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдкреНрд░рд╛рд░рдВрдн


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


 byte[] keyBytes = new byte[]{0,1,2,3,4,5,6,7,8 ,9,10,11,12,13,14,15}; String algorithm = "RawBytes"; SecretKeySpec key = new SecretKeySpec(keyBytes, algorithm); mac.init(key); 

Init () рд╡рд┐рдзрд┐ рдХреБрдВрдЬреА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЙрджрд╛рд╣рд░рдг SecretKeySpec рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХреБрдВрдЬреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред


рдореИрдХ рдЧрдгрдирд╛


рдореИрдХ рдЙрджрд╛рд╣рд░рдг (рдкреНрд░рд╛рд░рдВрдн рдХреЗ рдмрд╛рдж) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдореИрдХ рдбреЗрдЯрд╛ рдХреА рдЧрдгрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдХ рдорд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрджреНрдпрддрди () рдпрд╛ doFinal () рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореИрдХ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рд╣реИ, рддреЛ рдЖрдк рд╕реАрдзреЗ doFinal () рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:


 byte[] data = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); byte[] macBytes = mac.doFinal(data); 

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


 byte[] data = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); byte[] data2 = "0123456789".getBytes("UTF-8"); mac.update(data); mac.update(data2); byte[] macBytes = mac.doFinal(); 

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


All Articles