Шифрование JCE - Руководство по стандарту шифрования данных (DES)
В этой статье мы покажем вам, как использоватьJava Cryptography Extension (JCE)
для шифрования или дешифрования текста с помощью механизмаData Encryption
Standard (DES).
1. Клавиша DES
Создайте ключ DES.
KeyGenerator keygenerator = KeyGenerator.getInstance("DES"); SecretKey myDesKey = keygenerator.generateKey();
2. Информация о шифровании
Создайте экземпляр Cipher из класса Cipher, укажите следующую информацию и разделите их косой чертой (/).
-
Название алгоритма
-
Режим (необязательно)
-
Схема заполнения (необязательно)
Cipher desCipher; // Create the cipher desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
Note
DES = стандарт шифрования данных.
ECB = режим электронной кодовой книги.
PKCS5Padding = заполнение в стиле PKCS # 5.
В этом случае вы создали шифр DES (стандарт шифрования данных) в режиме электронной кодовой книги с заполнением в стиле PKCS # 5.
3. Преобразовать это
Преобразуйте строку в формат массива Byte [].
byte[] text = "No body can see me".getBytes();
4. Зашифровать
Сделайте Cipher в режиме шифрования и зашифруйте его методомCipher.doFinal()
.
desCipher.init(Cipher.ENCRYPT_MODE, myDesKey); byte[] textEncrypted = desCipher.doFinal(text);
5. Расшифровать это
Сделайте Cipher в режиме дешифрования, а также расшифруйте его методомCipher.doFinal()
.
desCipher.init(Cipher.DECRYPT_MODE, myDesKey); byte[] textDecrypted = desCipher.doFinal(textEncrypted);
6. Полный пример
Полный пример, показывающий, как использовать Java JCE для шифрования и дешифрования текста в механизме DES.
package com.example.util; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.KeyGenerator; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; public class JEncrytion { public static void main(String[] argv) { try{ KeyGenerator keygenerator = KeyGenerator.getInstance("DES"); SecretKey myDesKey = keygenerator.generateKey(); Cipher desCipher; // Create the cipher desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); // Initialize the cipher for encryption desCipher.init(Cipher.ENCRYPT_MODE, myDesKey); //sensitive information byte[] text = "No body can see me".getBytes(); System.out.println("Text [Byte Format] : " + text); System.out.println("Text : " + new String(text)); // Encrypt the text byte[] textEncrypted = desCipher.doFinal(text); System.out.println("Text Encryted : " + textEncrypted); // Initialize the same cipher for decryption desCipher.init(Cipher.DECRYPT_MODE, myDesKey); // Decrypt the text byte[] textDecrypted = desCipher.doFinal(textEncrypted); System.out.println("Text Decryted : " + new String(textDecrypted)); }catch(NoSuchAlgorithmException e){ e.printStackTrace(); }catch(NoSuchPaddingException e){ e.printStackTrace(); }catch(InvalidKeyException e){ e.printStackTrace(); }catch(IllegalBlockSizeException e){ e.printStackTrace(); }catch(BadPaddingException e){ e.printStackTrace(); } } }
Выход
Text [Byte Format] : [B@19b5393 Text : No body can see me Text Encryted : [B@4e79f1 Text Decryted : No body can see me
Ссылка
-
Архитектура криптографии JavaTM -http://java.sun.com/j2se/1.5.0/docs/guide/security/CryptoSpec.html