<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSecurity%2FKey_Generator</id>
		<title>Java Tutorial/Security/Key Generator - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FSecurity%2FKey_Generator"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Security/Key_Generator&amp;action=history"/>
		<updated>2026-04-11T12:51:58Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Security/Key_Generator&amp;diff=4376&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Security/Key_Generator&amp;diff=4376&amp;oldid=prev"/>
				<updated>2010-06-01T05:02:04Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:02, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/Security/Key_Generator&amp;diff=4375&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/Security/Key_Generator&amp;diff=4375&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Encryption and Decryption using Symmetric Keys ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.InvalidKeyException;&lt;br /&gt;
import java.security.Key;&lt;br /&gt;
import javax.crypto.BadPaddingException;&lt;br /&gt;
import javax.crypto.Cipher;&lt;br /&gt;
import javax.crypto.IllegalBlockSizeException;&lt;br /&gt;
import javax.crypto.KeyGenerator;&lt;br /&gt;
public class Main {&lt;br /&gt;
  static String algorithm = &amp;quot;DESede&amp;quot;;&lt;br /&gt;
  static Key key = KeyGenerator.getInstance(algorithm).generateKey();&lt;br /&gt;
  static Cipher cipher = Cipher.getInstance(algorithm);&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    byte[] encryptionBytes = encrypt(&amp;quot;input&amp;quot;);&lt;br /&gt;
    System.out.println(&amp;quot;Recovered: &amp;quot; + decrypt(encryptionBytes));&lt;br /&gt;
  }&lt;br /&gt;
  private static byte[] encrypt(String input) throws InvalidKeyException, BadPaddingException,&lt;br /&gt;
      IllegalBlockSizeException {&lt;br /&gt;
    cipher.init(Cipher.ENCRYPT_MODE, key);&lt;br /&gt;
    byte[] inputBytes = input.getBytes();&lt;br /&gt;
    return cipher.doFinal(inputBytes);&lt;br /&gt;
  }&lt;br /&gt;
  private static String decrypt(byte[] encryptionBytes) throws InvalidKeyException,&lt;br /&gt;
      BadPaddingException, IllegalBlockSizeException {&lt;br /&gt;
    cipher.init(Cipher.DECRYPT_MODE, key);&lt;br /&gt;
    byte[] recoveredBytes = cipher.doFinal(encryptionBytes);&lt;br /&gt;
    String recovered = new String(recoveredBytes);&lt;br /&gt;
    return recovered;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Generate a key for the HMAC-SHA1 keyed-hashing algorithm ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.crypto.KeyGenerator;&lt;br /&gt;
import javax.crypto.SecretKey;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    KeyGenerator keyGen = KeyGenerator.getInstance(&amp;quot;HmacMD5&amp;quot;);&lt;br /&gt;
    SecretKey key = keyGen.generateKey();&lt;br /&gt;
    // Generate a key for the HMAC-SHA1 keyed-hashing algorithm&lt;br /&gt;
    keyGen = KeyGenerator.getInstance(&amp;quot;HmacSHA1&amp;quot;);&lt;br /&gt;
    key = keyGen.generateKey();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Generating a Symmetric Key ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.crypto.KeyGenerator;&lt;br /&gt;
import javax.crypto.SecretKey;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    // Generate a DES key&lt;br /&gt;
    KeyGenerator keyGen = KeyGenerator.getInstance(&amp;quot;DES&amp;quot;);&lt;br /&gt;
    SecretKey key = keyGen.generateKey();&lt;br /&gt;
    // Generate a Blowfish key&lt;br /&gt;
    keyGen = KeyGenerator.getInstance(&amp;quot;Blowfish&amp;quot;);&lt;br /&gt;
    key = keyGen.generateKey();&lt;br /&gt;
    // Generate a triple DES key&lt;br /&gt;
    keyGen = KeyGenerator.getInstance(&amp;quot;DESede&amp;quot;);&lt;br /&gt;
    key = keyGen.generateKey();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Get the bytes of the public and private keys ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.PrivateKey;&lt;br /&gt;
import java.security.PublicKey;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    String algorithm = &amp;quot;DSA&amp;quot;; // or RSA, DH, etc.&lt;br /&gt;
    // Generate a 1024-bit Digital Signature Algorithm (DSA) key pair&lt;br /&gt;
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance(algorithm);&lt;br /&gt;
    keyGen.initialize(1024);&lt;br /&gt;
    KeyPair keypair = keyGen.genKeyPair();&lt;br /&gt;
    PrivateKey privateKey = keypair.getPrivate();&lt;br /&gt;
    PublicKey publicKey = keypair.getPublic();&lt;br /&gt;
    byte[] privateKeyBytes = privateKey.getEncoded();&lt;br /&gt;
    byte[] publicKeyBytes = publicKey.getEncoded();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Get the formats of the encoded bytes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.PrivateKey;&lt;br /&gt;
import java.security.PublicKey;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    String algorithm = &amp;quot;DSA&amp;quot;; // or RSA, DH, etc.&lt;br /&gt;
    // Generate a 1024-bit Digital Signature Algorithm (DSA) key pair&lt;br /&gt;
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance(algorithm);&lt;br /&gt;
    keyGen.initialize(1024);&lt;br /&gt;
    KeyPair keypair = keyGen.genKeyPair();&lt;br /&gt;
    PrivateKey privateKey = keypair.getPrivate();&lt;br /&gt;
    PublicKey publicKey = keypair.getPublic();&lt;br /&gt;
    String format = privateKey.getFormat(); // PKCS#8&lt;br /&gt;
    format = publicKey.getFormat(); // X.509&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Getting the Bytes of a Generated Symmetric Key ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import javax.crypto.KeyGenerator;&lt;br /&gt;
import javax.crypto.SecretKey;&lt;br /&gt;
import javax.crypto.spec.SecretKeySpec;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] argv) throws Exception {&lt;br /&gt;
    // Generate a key&lt;br /&gt;
    KeyGenerator keyGen = KeyGenerator.getInstance(&amp;quot;DESede&amp;quot;);&lt;br /&gt;
    SecretKey key = keyGen.generateKey();&lt;br /&gt;
    // Get the bytes of the key&lt;br /&gt;
    byte[] keyBytes = key.getEncoded();&lt;br /&gt;
    int numBytes = keyBytes.length;&lt;br /&gt;
    // The bytes can be converted back to a SecretKey&lt;br /&gt;
    SecretKey key2 = new SecretKeySpec(keyBytes, &amp;quot;DESede&amp;quot;);&lt;br /&gt;
    boolean b = key.equals(key2); // true&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Key Generator Demo ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.security.KeyPair;&lt;br /&gt;
import java.security.KeyPairGenerator;&lt;br /&gt;
import java.security.NoSuchAlgorithmException;&lt;br /&gt;
import javax.crypto.KeyGenerator;&lt;br /&gt;
import javax.crypto.SecretKey;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    if (args.length != 2) {&lt;br /&gt;
      String err = &amp;quot;Usage: KeyGeneratorApp algorithmName keySize&amp;quot;;&lt;br /&gt;
      System.out.println(err);&lt;br /&gt;
      System.exit(0);&lt;br /&gt;
    }&lt;br /&gt;
    int keySize = (new Integer(args[1])).intValue();&lt;br /&gt;
    SecretKey skey = null;&lt;br /&gt;
    KeyPair keys = null;&lt;br /&gt;
    String algorithm = args[0];&lt;br /&gt;
    try {&lt;br /&gt;
      KeyPairGenerator kpg = KeyPairGenerator.getInstance(algorithm);&lt;br /&gt;
      kpg.initialize(keySize);&lt;br /&gt;
      keys = kpg.genKeyPair();&lt;br /&gt;
    } catch (NoSuchAlgorithmException ex1) {&lt;br /&gt;
      try {&lt;br /&gt;
        KeyGenerator kg = KeyGenerator.getInstance(algorithm);&lt;br /&gt;
        kg.init(keySize);&lt;br /&gt;
        skey = kg.generateKey();&lt;br /&gt;
      } catch (NoSuchAlgorithmException ex2) {&lt;br /&gt;
        System.out.println(&amp;quot;Algorithm not supported: &amp;quot; + algorithm);&lt;br /&gt;
        System.exit(0);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>