рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдЬреИрдХрдм рдЬреЗрдирдХреЛрд╡ рдХреЗ рдкрд╛рдВрдЪрд╡реЗрдВ рд▓реЗрдЦ "рдЬрд╛рд╡рд╛ рд╕рд┐рдЧреНрдиреЗрдЪрд░" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ, рд╢реБрд░реБрдЖрддреА рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛:
- рдЬрд╛рд╡рд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА
- рдЬрд╛рд╡рд╛ рд╕рд┐рдлрд░
- MessageDigest
- рдореИрдХ
- рд╣рд╕реНрддрд╛рдХреНрд╖рд░
- keypair
- Keygenerator
- KeyPairGenerator
- KeyStore
- keytool
- рдкреНрд░рдорд╛рдгрдкрддреНрд░
- CertificateFactory
- 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);