JCE Encryption - учебник по стандарту шифрования данных (DES)

Шифрование 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

Ссылка

  1. Архитектура криптографии JavaTM -http://java.sun.com/j2se/1.5.0/docs/guide/security/CryptoSpec.html