Rumah >Java >javaTutorial >Bagaimana untuk melaksanakan algoritma penyulitan DES menggunakan java

Bagaimana untuk melaksanakan algoritma penyulitan DES menggunakan java

王林
王林asal
2023-09-20 17:25:45857semak imbas

Bagaimana untuk melaksanakan algoritma penyulitan DES menggunakan java

Cara menggunakan Java untuk melaksanakan algoritma penyulitan DES

Ikhtisar:
DES (Standard Penyulitan Data) ialah satu algoritma. Ia digunakan secara meluas dalam penyulitan dan penyahsulitan data dalam bidang komputer. Di Java, kita boleh menggunakan perpustakaan javax.crypto untuk melaksanakan algoritma penyulitan DES.

Langkah:

  1. Import perpustakaan berkaitan
    Pertama, anda perlu mengimport kelas yang berkaitan dalam perpustakaan javax.crypto. Tambahkan pernyataan import berikut pada permulaan kod:

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto .SecretKey;# 🎜🎜#import javax.crypto.spec.SecretKeySpec;

    Generate key
  1. DES algoritma Key menggunakan kelas 8-bait Generator, kita boleh menjana ia kunci. Berikut ialah contoh kod untuk menjana kunci:
KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");

SecretKey secretKey = keyGenerator.generateKey();#🎜 🎜# byte[] keyBytes = secretKey.getEcoded();

Convert key
    Kunci yang dijana ialah objek jenis SecretKey, kita perlu menukarnya kepada objek Jenis SecretKeySpec untuk kemudahan penggunaan. Berikut ialah contoh kod untuk menukar kunci:

  1. SecretKeySpec secretKeySpec = SecretKeySpec baharu(keyBytes, "DES");

#🎜Enkripsi semula#🎜 Instance# 🎜🎜#Gunakan kelas Cipher untuk mencipta tika penyulitan Kami menggunakan mod algoritma DES/CBC/PKCS5Padding untuk penyulitan. Berikut ialah contoh kod untuk mencipta contoh penyulitan:

  1. Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
  2. #🎜 🎜#Instance Penyulitan Permulaan
Apabila memulakan tika penyulitan, anda perlu menentukan mod penyulitan, kunci dan vektor permulaan (IV). Kemudian panggil kaedah init sifir untuk pemula. Berikut ialah contoh kod untuk memulakan contoh penyulitan:

    // Dapatkan vektor permulaan
  1. byte[] iv = new byte[cipher.getBlockSize()];# 🎜🎜#SecureRandom secureRandom = new SecureRandom();
    secureRandom.nextBytes(iv);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec)🜎Spec IvSpec baharu; ##🎜🎜 #

Data disulitkan
Gunakan kaedah doFinal sifir untuk menyulitkan data. Berikut ialah contoh kod untuk menyulitkan data:

byte[] encryptedBytes = cipher.doFinal(input.getBytes());

    Nyahsulit data
  1. Langkah untuk menyahsulit data adalah serupa dengan penyulitan Anda hanya perlu menukar mod penyulitan kepada mod nyahsulit. Berikut ialah contoh kod untuk menyahsulit data:
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, IvParameterSpec(iv) baharu);

#🎜🎜[]#byte decryptedBytes = cipher.doFinal(encryptedBytes);

  1. Kod sampel penuh:
import javax.crypto.Cipher;#🎜 .crypto .KeyGenerator;

import javax.crypto.SecretKey;

import javax.crypto.spec.IvParameterSpec;

import javax.crypto.spec.SecretKeySpec🎜;. .SecureRandom ;

    kelas awam DESEexample {
  1. public static void main(String[] args) throws Exception {
        // 生成密钥
        KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
        SecretKey secretKey = keyGenerator.generateKey();
        byte[] keyBytes = secretKey.getEncoded();
    
        // 转换密钥
        SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "DES");
    
        // 创建加密实例
        Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
    
        // 初始化加密实例
        byte[] iv = new byte[cipher.getBlockSize()];
        SecureRandom secureRandom = new SecureRandom();
        secureRandom.nextBytes(iv);
    
        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, new IvParameterSpec(iv));
    
        // 加密数据
        String input = "Hello, world!";
        byte[] encryptedBytes = cipher.doFinal(input.getBytes());
    
        // 解密数据
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, new IvParameterSpec(iv));
    
        byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
    
        // 打印结果
        System.out.println("明文:" + input);
        System.out.println("加密后:" + new String(encryptedBytes));
        System.out.println("解密后:" + new String(decryptedBytes));
    }
  2. }

Ringkasan:
Melalui langkah-langkah di atas, boleh dilaksanakan melalui Java algoritma penyulitan DES. Dalam pembangunan sebenar, anda boleh membuat pilihan algoritma penyulitan dan mod penyulitan yang munasabah mengikut keperluan anda sendiri, dan membuat pelarasan yang sesuai mengikut senario perniagaan tertentu. Walau bagaimanapun, sila ambil perhatian bahawa algoritma penyulitan DES sudah lapuk dan tidak lagi disyorkan. Pilihan yang lebih selamat ialah algoritma penyulitan AES.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan algoritma penyulitan DES menggunakan java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn