欢迎访问宙启技术站
智能推送

Java函数实现加密解密算法的实现

发布时间:2023-07-03 05:16:04

加密解密算法在计算机安全领域中扮演着重要的角色,可以用于保护敏感数据的安全性。Java提供了丰富的加密解密库,可以方便地实现各种算法。

一、对称加密算法

对称加密算法使用相同的密钥对数据进行加密和解密。常见的对称加密算法有DES、3DES、AES等。

1. DES加密算法

DES算法是一种最为经典的对称加密算法。下面是一个Java函数实现DES算法的加密和解密:

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

public class DesUtil {
    private static final String ALGORITHM = "DES";

    public static byte[] encrypt(byte[] data, String key) throws Exception {
        DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
        SecretKey secretKey = keyFactory.generateSecret(desKeySpec);

        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);

        return cipher.doFinal(data);
    }

    public static byte[] decrypt(byte[] data, String key) throws Exception {
        DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
        SecretKey secretKey = keyFactory.generateSecret(desKeySpec);

        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, secretKey);

        return cipher.doFinal(data);
    }
}

2. AES加密算法

AES算法是一种更为安全的对称加密算法。下面是一个Java函数实现AES算法的加密和解密:

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.SecretKeySpec;

public class AesUtil {
    private static final String ALGORITHM = "AES";

    public static byte[] encrypt(byte[] data, String key) throws Exception {
        SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), ALGORITHM);
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);

        return cipher.doFinal(data);
    }

    public static byte[] decrypt(byte[] data, String key) throws Exception {
        SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), ALGORITHM);
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);

        return cipher.doFinal(data);
    }
}

二、非对称加密算法

非对称加密算法使用不同的密钥对数据进行加密和解密。常见的非对称加密算法有RSA、DSA等。

1. RSA加密算法

RSA算法是一种常用的非对称加密算法。下面是一个Java函数实现RSA算法的加密和解密:

import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import javax.crypto.Cipher;

public class RsaUtil {
    private static final String ALGORITHM = "RSA";

    public static byte[] encrypt(byte[] data, RSAPublicKey publicKey) throws Exception {
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);

        return cipher.doFinal(data);
    }

    public static byte[] decrypt(byte[] data, RSAPrivateKey privateKey) throws Exception {
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, privateKey);

        return cipher.doFinal(data);
    }

    public static KeyPair getKeyPair(int keySize) throws Exception {
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(ALGORITHM);
        keyPairGenerator.initialize(keySize);

        return keyPairGenerator.generateKeyPair();
    }
}

三、总结

以上是几种常见的加密解密算法在Java中的实现。使用这些算法可以有效地保护数据的安全性,但也需要注意密钥的保密性和算法的选择。在实际使用中,还需要考虑到性能和安全的权衡。