如何在Java中实现数据加密和解密?

我想在Java程序中实现数据加密和解密,但我不知道该从何入手。我希望能够使用一种安全可靠的算法来加密和解密数据,而且最好还能自定义加密密钥。请问有没有哪位Java专家能够指导我一下?我需要知道该使用哪种加密算法以及如何使用该算法在Java中实现数据加密和解密的功能。谢谢!

提问时间:2023-05-29 03:26:05 编辑时间:2023-05-29 03:26:07 提问者: Iceberg_Illusion
  • Silver_Strider
    4

    在Java中实现数据加密和解密可以使用Java Cryptography Extension(JCE)提供的密钥管理和密码生成 API。JCE支持很多种加密算法,如DES、AES、RSA等。以下是使用AES算法进行数据加密和解密的示例代码:

    // 加密 public static String encrypt(String data, String key) throws Exception { SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] encrypted = cipher.doFinal(data.getBytes("UTF-8")); return Base64.getEncoder().encodeToString(encrypted); }

    // 解密 public static String decrypt(String encryptedData, String key) throws Exception { SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.DECRYPT_MODE, skeySpec); byte[] original = cipher.doFinal(Base64.getDecoder().decode(encryptedData)); return new String(original,"UTF-8"); }

    其中data为需要加密的数据,key为加密密钥。要确保key长度符合算法要求。加密后的数据可以进行Base64编码以便于传输。解密时传入base64编码后的加密数据以及密钥即可获得原始数据。

    回答时间:2023-05-29 03:26:10