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

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


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


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

рдЬрд╛рд╡рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░


рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдХреНрд▓рд╛рд╕ ( java.security.Signature ) рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрдирд╛рддрд╛ рд╣реИред рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реИ рдЬрд┐рд╕реЗ рдирд┐рдЬреА / рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдЬреЛрдбрд╝реЗ рдХреА рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреЛ рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИ, рд╡рд╣ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред


рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдБ


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


Signature signature = Signature.getInstance("SHA256WithDSA"); 

GetInstance () рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЧрдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред


рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рд░рдВрднрд┐рдХ


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


 SecureRandom secureRandom = new SecureRandom(); KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA"); KeyPair keyPair = keyPairGenerator.generateKeyPair(); signature.initSign(keyPair.getPrivate(), secureRandom); 

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


рдбрд┐рдЬрд┐рдЯрд▓ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдХреНрд░рд┐рдПрд╢рди


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


 byte[] data = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); signature.update(data); byte[] digitalSignature = signature.sign(); 

рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рддреНрдпрд╛рдкрди


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


 Signature signature = Signature.getInstance("SHA256WithDSA"); signature.initVerify(keyPair.getPublic()); 

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


 byte[] data2 = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); signature2.update(data2); boolean verified = signature2.verify(digitalSignature); 

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


All Articles