Rumah  >  Artikel  >  Java  >  Cara melaksanakan penyulitan dan penyahsulitan data untuk pembangunan fungsi Java

Cara melaksanakan penyulitan dan penyahsulitan data untuk pembangunan fungsi Java

WBOY
WBOYasal
2023-08-06 18:25:051049semak imbas

Cara melakukan penyulitan dan penyahsulitan data untuk pembangunan fungsi Java

Penyulitan dan penyahsulitan data memainkan peranan penting dalam bidang keselamatan maklumat. Dalam pembangunan Java, terdapat banyak cara untuk melaksanakan fungsi penyulitan dan penyahsulitan data. Artikel ini akan memperkenalkan kaedah penyulitan dan penyahsulitan data menggunakan bahasa pengaturcaraan Java dan memberikan contoh kod.

1. Algoritma penyulitan simetri

Algoritma penyulitan simetri menggunakan kunci yang sama untuk menyulitkan dan menyahsulit data. Algoritma penyulitan simetri yang biasa digunakan termasuk DES, 3DES, AES, dsb.

Contoh kod:

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
import java.util.Base64;

public class SymmetricEncryptionExample {
    public static void main(String[] args) throws Exception {
        String plaintext = "Hello, World!";
        String secretKey = "0123456789abcdef";
        
        // Generate Key
        SecretKey key = new SecretKeySpec(secretKey.getBytes(), "AES");

        // Create Cipher
        Cipher cipher = Cipher.getInstance("AES");
        
        // Encrypt
        cipher.init(Cipher.ENCRYPT_MODE, key);
        byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes());
        String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);
        System.out.println("Encrypted Text: " + encryptedText);

        // Decrypt
        cipher.init(Cipher.DECRYPT_MODE, key);
        byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText));
        String decryptedText = new String(decryptedBytes);
        System.out.println("Decrypted Text: " + decryptedText);
    }
}

2. Algoritma penyulitan asimetri

Algoritma penyulitan asimetri menggunakan sepasang kunci, kunci awam digunakan untuk penyulitan dan kunci peribadi digunakan untuk penyahsulitan. Di Java, algoritma penyulitan asimetri yang biasa digunakan ialah RSA.

Contoh kod:

import javax.crypto.Cipher;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.Base64;

public class AsymmetricEncryptionExample {
    public static void main(String[] args) throws Exception {
        String plaintext = "Hello, World!";

        // Generate Key Pair
        KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance("RSA");
        keyGenerator.initialize(2048);
        KeyPair keyPair = keyGenerator.generateKeyPair();
        PublicKey publicKey = keyPair.getPublic();
        PrivateKey privateKey = keyPair.getPrivate();

        // Create Cipher
        Cipher cipher = Cipher.getInstance("RSA");

        // Encrypt
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes());
        String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);
        System.out.println("Encrypted Text: " + encryptedText);

        // Decrypt
        cipher.init(Cipher.DECRYPT_MODE, privateKey);
        byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText));
        String decryptedText = new String(decryptedBytes);
        System.out.println("Decrypted Text: " + decryptedText);
    }
}

3 Algoritma cincang

Algoritma cincang boleh menukar data apa-apa panjang kepada nilai cincang panjang tetap yang biasa digunakan termasuk MD5, SHA-1, SHA-256, dsb.

Sampel kod:

import java.security.MessageDigest;

public class HashAlgorithmExample {
    public static void main(String[] args) throws Exception {
        String plaintext = "Hello, World!";

        // Create MessageDigest
        MessageDigest md = MessageDigest.getInstance("SHA-256");

        // Hash
        byte[] hashedBytes = md.digest(plaintext.getBytes());
        StringBuilder stringBuilder = new StringBuilder();
        for (byte hashedByte : hashedBytes) {
            stringBuilder.append(Integer.toHexString(0xFF & hashedByte));
        }
        String hashedText = stringBuilder.toString();
        System.out.println("Hashed Text: " + hashedText);
    }
}

Ringkasan:

Artikel ini memperkenalkan kaedah dan contoh kod menggunakan Java untuk membangunkan dan melaksanakan penyulitan dan penyahsulitan data. Dalam pembangunan sebenar, algoritma penyulitan yang sesuai dan panjang kunci dipilih mengikut keperluan yang berbeza untuk memastikan keselamatan data.

Atas ialah kandungan terperinci Cara melaksanakan penyulitan dan penyahsulitan data untuk pembangunan fungsi 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