商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Java在Ubuntu上如何实现数据加密

Java在Ubuntu上如何实现数据加密

  发布于2026-07-03 阅读(0)

扫一扫,手机访问

在Ubuntu上做Ja va数据加密,Ja va Cryptography Extension(JCE)框架是绕不开的工具。下面就用一个完整的AES加密解密示例,把整个过程拆开讲清楚。

Ja va在Ubuntu上如何实现数据加密

第一步,先确认系统里已经装好了JDK。如果还没装,去Oracle官网下载对应Ubuntu版本的JDK安装包,按常规步骤配置好环境变量就行。这一步虽然基础,但漏掉的话后续所有操作都跑不起来。

第二步,新建一个Ja va文件,命名为EncryptionExample.ja va,把下面的代码完整贴进去:

import ja vax.crypto.Cipher;
import ja vax.crypto.KeyGenerator;
import ja vax.crypto.SecretKey;
import ja vax.crypto.spec.IvParameterSpec;
import ja va.nio.charset.StandardCharsets;
import ja va.util.Base64;

public class EncryptionExample {
    public static void main(String[] args) throws Exception {
        String originalText = "Hello, World!";
        System.out.println("Original Text: " + originalText);

        // 加密
        String encryptedText = encrypt(originalText, "ThisIsASecretKey");
        System.out.println("Encrypted Text: " + encryptedText);

        // 解密
        String decryptedText = decrypt(encryptedText, "ThisIsASecretKey");
        System.out.println("Decrypted Text: " + decryptedText);
    }

    public static String encrypt(String plainText, String secretKey) throws Exception {
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        SecretKey key = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), "AES");
        IvParameterSpec iv = new IvParameterSpec(key.getEncoded());
        cipher.init(Cipher.ENCRYPT_MODE, key, iv);
        byte[] encryptedBytes = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));
        return Base64.getEncoder().encodeToString(encryptedBytes);
    }

    public static String decrypt(String encryptedText, String secretKey) throws Exception {
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        SecretKey key = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), "AES");
        IvParameterSpec iv = new IvParameterSpec(key.getEncoded());
        cipher.init(Cipher.DECRYPT_MODE, key, iv);
        byte[] decodedBytes = Base64.getDecoder().decode(encryptedText);
        byte[] decryptedBytes = cipher.doFinal(decodedBytes);
        return new String(decryptedBytes, StandardCharsets.UTF_8);
    }
}

这段代码用的是AES加密算法搭配CBC模式,也是生产环境里最常见的一种组合。注意密钥部分——示例里写的是明文密钥“ThisIsASecretKey”,实际项目里千万别这么干。密钥管理应该用更严谨的方式,比如从安全存储或密钥服务中读取,硬编码在代码里等于把锁的钥匙挂在门上。

第三步,打开终端,切换到EncryptionExample.ja va所在目录,先用ja vac EncryptionExample.ja va编译。编译通过后,再用ja va EncryptionExample运行。正常的话,你会看到三行输出:原始文本、加密后的密文(一串Base64编码的字符)、再解密回来的原始文本。

这只是一个入门演示,实际加密场景要考虑的远不止这些。比如密钥的生成和轮换、IV的随机性和安全传输、加密算法模式的选择(GCM模式比CBC更安全)、以及异常处理等等。生产环境请务必遵循业界安全最佳实践,别拿示例代码直接上线。

本文转载于:https://www.yisu.com/ask/75528628.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注