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

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


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


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


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

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


рдЬрд╛рд╡рд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдПрдкреАрдЖрдИ рдЬрд╛рд╡рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдХреБрдВрдЬреА, рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг (рдкреНрд░рдорд╛рдгреАрдХрд░рдг) рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред


рдпрд╣ рдЖрд▓реЗрдЦ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдореВрд▓ рддрд░реАрдХреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред


рдпрд╣ рд▓реЗрдЦ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдирд╣реАрдВ рд╕рдордЭрд╛рддрд╛ рд╣реИред рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдЖрдкрдХреЛ рдХрд╣реАрдВ рдФрд░ рджреЗрдЦрдиреА рд╣реЛрдЧреАред


рдЬрд╛рд╡рд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди


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


2017 рдХреЗ рдмрд╛рдж рд╕реЗ, рд╕рдВрдпреБрдХреНрдд рд░рд╛рдЬреНрдп рдЕрдореЗрд░рд┐рдХрд╛ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рдирд┐рдпрдореЛрдВ рдореЗрдВ рдХрд╛рдлреА рдЖрд░рд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рджреБрдирд┐рдпрд╛ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рдЖрдк рдЬрд╛рд╡рд╛ рдЬреЗрд╕реАрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдорд╛рдирдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЬрд╛рд╡рд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░


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


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


рдореБрдЦреНрдп рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕


рдЬрд╛рд╡рд╛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдПрдкреАрдЖрдИ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рд╡рд╛ рдкреИрдХреЗрдЬ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:


  • java.security
  • java.security.cert
  • java.security.spec
  • java.security.interfaces
  • javax.crypto
  • javax.crypto.spec
  • javax.crypto.interfaces

рдЗрди рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдореБрдЦреНрдп рд╡рд░реНрдЧ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕:


  • рдкреНрд░рджрд╛рддрд╛
  • SecureRandom
  • рд╕рд┐рдлрд╝рд░
  • MessageDigest
  • рд╣рд╕реНрддрд╛рдХреНрд╖рд░
  • рдореИрдХ
  • AlgorithmParameters
  • AlgorithmParameterGenerator
  • KeyFactory
  • SecretKeyFactory
  • KeyPairGenerator
  • Keygenerator
  • KeyAgreement
  • KeyStore
  • CertificateFactory
  • CertPathBuilder
  • CertPathValidator
  • CertStore

рдкреНрд░рджрд╛рддрд╛ (рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рджрд╛рддрд╛)


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


рдЬрд╛рд╡рд╛ рдХреНрд░рд┐рдкреНрдЯреЛ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдкреНрд░рджрд╛рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдмрд╛рдЙрдВрд╕реА рдХреИрд╕рд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд╣рд╛рдБ BouncyCastleProvider рдХреЛ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


import org.bouncycastle.jce.provider.BouncyCastleProvider; import java.security.Security; public class ProviderExample { public static void main(String[] args) { Security.addProvider(new BouncyCastleProvider()); } } 

рд╕рд┐рдлрд░ (рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛)


рд╕рд┐рдлрд░ рд╡рд░реНрдЧ (javax.crypto.Cipher) рдПрдХ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕рд┐рдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдбреЗрдЯрд╛ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╕рд┐рдлрд░ рд╡рд░реНрдЧ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдЖрдВрддрд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдИрдПрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рдлрд░ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛:


 Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 

Cipher.getInstance (...) рдкрджреНрдзрддрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ рдЬреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдХреБрдЫ рдЕрдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкреИрд░рд╛рдореАрдЯрд░ред
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ:


  • рдПрдИрдПрд╕ - рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо
  • CBC рдПрдХ рдРрд╕реА рд╡рд┐рдзрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ AES рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  • PKCS5Padding рд╣реИ рдХрд┐ рдПрдИрдПрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЗ рдЕрдВрддрд┐рдо рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдореИрдиреБрдЕрд▓ рдореЗрдВ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рджреЗрдЦреЗрдВ, рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдирд╣реАрдВред

рд╕рд┐рдлрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди


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


  • рдореЛрдб - рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди / рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди
  • рдХреБрдВрдЬреА

рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдореЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ: рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рдПрдХ рдЙрджрд╛рд╣рд░рдг:


 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); cipher.init(Cipher.ENCRYPT_MODE, key); 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдореБрдЦреНрдп рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдзрд┐ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рдпрд╣ рд▓реЗрдЦ рд╕рдордЭрд╛рдПрдЧрд╛ рдХрд┐ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред


рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдлрд░ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Cipher.DECRYPT_MODE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:


 cipher.init(Cipher.DECRYPT_MODE, key); 

рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдпрд╛ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди


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


DoFinal () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:


 byte[] plainText = "abcdefghijklmnopqrstuvwxyz".getBytes("UTF-8"); byte[] cipherText = cipher.doFinal(plainText); 

рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд┐рдлрд░рдЯреЗрдХреНрд╕реНрдЯ (рдбреЗрдЯрд╛) рдХреЛ doFinal () рдпрд╛ doUpdate () рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


рдХреБрдВрдЬреА (рдХреБрдВрдЬреА)


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


  • рд╕рдордорд┐рдд рдХреБрдВрдЬреА
  • рдЕрд╕рдордорд┐рдд рдХреБрдВрдЬреА

рд╕рдордорд┐рдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рд╕рд┐рдореЗрдЯреНрд░рд┐рдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдордорд┐рдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЕрд╕рдордорд┐рдд рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╕рдордорд┐рдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрд╕рдордорд┐рдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ред рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА рдХреБрдВрдЬреА рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЕрд╕рдордорд┐рдд рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред


рдХрд┐рд╕реА рддрд░рд╣, рдЬрд┐рд╕ рдкрд╛рд░реНрдЯреА рдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдирд╛ рд╣реИ, рдЙрд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреБрдВрдЬреА рдкрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдбрд┐рдХреНрд░рд┐рдкреНрдЯрд░ рдбреЗрдЯрд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд░реНрдЯреА рдирд╣реАрдВ рд╣реИ, рддреЛ рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреЛ рдПрдХ рдХреБрдВрдЬреА рдкрд░ рд╕рд╣рдордд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдПрдХ рдХреБрдВрдЬреА рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рдХреБрдВрдЬреА рд╡рд┐рдирд┐рдордп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред


рдореБрдЦреНрдп рд╕реБрд░рдХреНрд╖рд╛


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


рдкреНрд░рдореБрдЦ рдкреАрдврд╝реА


рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬрд╛рд╡рд╛ KeyGenerator рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред KeyGenerator рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдзреНрдпрд╛рдпреЛрдВ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╣рд╛рдБ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ:


 KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); SecureRandom secureRandom = new SecureRandom(); int keyBitSize = 256; keyGenerator.init(keyBitSize, secureRandom); SecretKey secretKey = keyGenerator.generateKey(); 

рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк SecretKey рдЙрджрд╛рд╣рд░рдг рдХреЛ Cipher.init () рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣:


 cipher.init(Cipher.ENCRYPT_MODE, secretKey); 

рдкреНрд░рдореБрдЦ рдЬреЛрдбрд╝реА рдкреАрдврд╝реА


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


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

рдХреБрдВрдЬреА рд╕реНрдЯреЛрд░


Java KeyStore рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред Java KeyStore рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ KeyStore class (java.security.KeyStore) рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдХреАрд╕реНрдЯреЛрд░ рдореЗрдВ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рдХреА рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:


  • рдирд┐рдЬреА рдХреБрдВрдЬреА
  • рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА + рдкреНрд░рдорд╛рдгрдкрддреНрд░)
  • рдЧреБрдкреНрдд рдХреБрдВрдЬреА

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


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


рдореБрдЦреНрдп рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдг (рдХреАрдЯрд▓)


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


рд╕рдВрджреЗрд╢ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ


рдЬрдм рдЖрдк рджреВрд╕рд░реА рддрд░рдл рд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рднреА рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдЖрдкрдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ?


рдЖрдорддреМрд░ рдкрд░, рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рд╕реЗ рдкрдЪрд╛рдиреЗ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ, рдлрд┐рд░ рдбреЗрдЯрд╛ рдФрд░ рд╕рдВрджреЗрд╢ рджреЛрдиреЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рднреЗрдЬреЗрдВред рдПрдХ рд╕рдВрджреЗрд╢ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдПрдХ рд╣реИрд╢ рдорд╛рди рд╣реИ рдЬреЛ рд╕рдВрджреЗрд╢ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рдЗрдЯ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рд╕реЗ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рд╕рдВрджреЗрд╢ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рднреА рдмрджрд▓ рдЬрд╛рдПрдВрдЧреЗред


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


рдЬрд╛рд╡рд╛ рдореИрд╕реЗрдЬрдбрд┐рдЬреЗрд╕реНрдЯ (java.security.MessageDigest) рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрджреЗрд╢ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред MessageDigest рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, MessageDigest.getInstance () рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрджреЗрд╢ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИрдВред рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ MessageDigest рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╕рдордп рдЖрдк рдХрд┐рд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред MessageDigest рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдирд╛ Java MessageDigest рдЕрдзреНрдпрд╛рдп рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


MessageDigest рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рдЪрдп:


 MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); 

рдпрд╣ рдЙрджрд╛рд╣рд░рдг MessageDigest рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рд╕рдВрджреЗрд╢ рдкрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП SHA-256 рдЖрдВрддрд░рд┐рдХ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рд╣реИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред


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


рдХреЙрд▓рд┐рдВрдЧ рдЕрдкрдбреЗрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг () рдХрдИ рдмрд╛рд░, рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЙрд▓ рдЯреВ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ () :


 MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); byte[] data1 = "0123456789".getBytes("UTF-8"); byte[] data2 = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); messageDigest.update(data1); messageDigest.update(data2); byte[] digest = messageDigest.digest(); 

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


 MessageDigest messageDigest = MessageDigest.getInstance("SHA-256"); byte[] data1 = "0123456789".getBytes("UTF-8"); byte[] digest = messageDigest.digest(data1); 

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


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


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


 Mac mac = Mac.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); 

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


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

рд╣рд╕реНрддрд╛рдХреНрд╖рд░ (рд╣рд╕реНрддрд╛рдХреНрд╖рд░)


рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдЬрд┐рдЯрд▓ рд░реВрдк рд╕реЗ рд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдХреНрд▓рд╛рд╕ (java.security.Signature) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдбреЗрдЯрд╛ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдбреЗрдЯрд╛ рд╕реЗ рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдбреЗрдЯрд╛ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


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


рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, Signature.getInstance (...) рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:


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

рдбреЗрдЯрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░


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


 signature.initSign(keyPair.getPrivate(), secureRandom); 

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


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

рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рд╕рддреНрдпрд╛рдкрди


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


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

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


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

рдкреВрд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдЙрджрд╛рд╣рд░рдг


 SecureRandom secureRandom = new SecureRandom(); KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA"); KeyPair keyPair = keyPairGenerator.generateKeyPair(); Signature signature = Signature.getInstance("SHA256WithDSA"); signature.initSign(keyPair.getPrivate(), secureRandom); byte[] data = "abcdefghijklmnopqrstuvxyz".getBytes("UTF-8"); signature.update(data); byte[] digitalSignature = signature.sign(); Signature signature2 = Signature.getInstance("SHA256WithDSA"); signature2.initVerify(keyPair.getPublic()); signature2.update(data); boolean verified = signature2.verify(digitalSignature); System.out.println("verified = " + verified); 

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


All Articles