ホームページ  >  記事  >  Java  >  Java関数開発でデータの暗号化と復号化を行う方法

Java関数開発でデータの暗号化と復号化を行う方法

WBOY
WBOYオリジナル
2023-08-06 18:25:051053ブラウズ

Java 関数開発でデータの暗号化と復号化を実行する方法

データの暗号化と復号化は、情報セキュリティの分野で重要な役割を果たします。 Java 開発では、データの暗号化および復号化機能を実装する方法が数多くあります。この記事では、Java プログラミング言語を使用したデータの暗号化と復号化の方法を紹介し、コード例を示します。

1. 対称暗号化アルゴリズム

対称暗号化アルゴリズムは、データの暗号化と復号化に同じキーを使用します。一般的に使用される対称暗号化アルゴリズムには、DES、3DES、AES などが含まれます。

コード例:

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. 非対称暗号化アルゴリズム

非対称暗号化アルゴリズムはキーのペアを使用し、公開キーは暗号化に使用され、秘密キーは復号化に使用されます。 Java では、一般的に使用される非対称暗号化アルゴリズムは RSA です。

コード例:

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. ハッシュ アルゴリズム

ハッシュ アルゴリズムは、任意の長さのデータを固定長のハッシュ値に変換できます。一般的に使用されるハッシュ アルゴリズムには MD5 があります。 、SHA-1、SHA-256など。

コード例:

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);
    }
}

概要:

この記事では、Java を使用してデータの暗号化と復号化を開発および実装する方法とコード例を紹介します。実際の開発では、データのセキュリティを確保するために、さまざまなニーズに応じて適切な暗号化アルゴリズムとキーの長さが選択されます。

以上がJava関数開発でデータの暗号化と復号化を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。