Java实现AES加密工具类 - 简单易用的数据加密解决方案

这篇具有很好参考价值的文章主要介绍了Java实现AES加密工具类 - 简单易用的数据加密解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当我们涉及到敏感数据的存储和传输时,数据加密是非常重要的。加密可以确保数据的保密性和完整性,并帮助我们防止数据泄露和攻击。在Java中,使用标准的加密算法和库可以很容易地实现数据加密和解密。本篇文章将介绍一个简单的Java工具类,该工具类使用AES对称加密算法来对数据进行加密和解密。

Java已经提供了许多加密库和算法,包括常用的对称加密算法和非对称加密算法,例如AES、DES、RSA等。

以下是一个简单的Java加解密工具类的示例,可以使用AES算法进行加密和解密:

  1. ENCRYPTION_ALGORITHMSECRET_KEY_ALGORITHM常量分别表示使用的加密算法和密钥算法。在此例中,使用AES算法进行加密和解密,并使用AES算法作为密钥算法。

  1. HASH_ALGORITHM常量表示使用的哈希算法。在此例中,使用SHA-256哈希算法将密钥生成为16字节的密钥。

  1. encrypt方法使用给定的密钥对字符串进行加密。首先,使用密钥生成SecretKeySpec对象,然后使用Cipher对象和ENCRYPTION_ALGORITHM常量进行初始化。然后,将数据字节数组进行加密,并使用Base64编码返回密文字符串。

  1. decrypt方法使用给定的密钥对字符串进行解密。首先,使用密钥生成SecretKeySpec对象,然后使用Cipher对象和ENCRYPTION_ALGORITHM常量进行初始化。然后,使用Base64解码密文字符串,并将解码后的字节数组进行解密。最后,返回解密后的明文字符串。

  1. generateSecretKeySpec方法生成SecretKeySpec对象。它使用给定的密钥字符串和HASH_ALGORITHM常量生成哈希值。然后,它将哈希值截取前16个字节,用于生成SecretKeySpec对象。

注意,这只是一个简单的示例,真正的加密应该考虑更多的安全因素。此外,为了确保密钥安全,密钥应该存储在安全的地方,并且只有授权的人员才能访问它。

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.Base64;

public class EncryptionUtils {
    private static final String ENCRYPTION_ALGORITHM = "AES";
    private static final String SECRET_KEY_ALGORITHM = "AES";
    private static final String HASH_ALGORITHM = "SHA-256";

    public static String encrypt(String data, String key) throws Exception {
        SecretKeySpec secretKeySpec = generateSecretKeySpec(key);
        Cipher cipher = Cipher.getInstance(ENCRYPTION_ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
        byte[] encryptedBytes = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
        return Base64.getEncoder().encodeToString(encryptedBytes);
    }

    public static String decrypt(String data, String key) throws Exception {
        SecretKeySpec secretKeySpec = generateSecretKeySpec(key);
        Cipher cipher = Cipher.getInstance(ENCRYPTION_ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
        byte[] decodedBytes = Base64.getDecoder().decode(data);
        byte[] decryptedBytes = cipher.doFinal(decodedBytes);
        return new String(decryptedBytes, StandardCharsets.UTF_8);
    }

    private static SecretKeySpec generateSecretKeySpec(String key) throws Exception {
        MessageDigest sha = MessageDigest.getInstance(HASH_ALGORITHM);
        byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8);
        byte[] hashedBytes = sha.digest(keyBytes);
        byte[] truncatedBytes = new byte[16];
        System.arraycopy(hashedBytes, 0, truncatedBytes, 0, truncatedBytes.length);
        return new SecretKeySpec(truncatedBytes, SECRET_KEY_ALGORITHM);
    }
}

在上述示例中,我们使用AES算法和SHA-256哈希算法。加密和解密函数均接受一个字符串数据和一个字符串密钥,并返回相应的加密/解密字符串。

注意,这只是一个简单的示例,真正的加密应该考虑更多的安全因素。此外,为了确保密钥安全,密钥应该存储在安全的地方,并且只有授权的人员才能访问它。

下面是一个简单的示例,演示如何使用上面提供的EncryptionUtils工具类对字符串进行加密和解密:

public class Example {
    public static void main(String[] args) {
        String data = "Hello World!";
        String key = "mysecretkey";

        try {
            // 加密数据
            String encryptedData = EncryptionUtils.encrypt(data, key);
            System.out.println("加密后的数据: " + encryptedData);

            // 解密数据
            String decryptedData = EncryptionUtils.decrypt(encryptedData, key);
            System.out.println("解密后的数据: " + decryptedData);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上面的示例中,我们使用EncryptionUtils工具类将字符串“Hello World!”加密,使用密钥“mysecretkey”进行加密。然后我们解密密文,使用相同的密钥来解密。输出结果应该为:

加密后的数据: eUFzznJhGxtFE4G4bJOx1A==
解密后的数据: Hello World!

注意,如果密钥不正确,解密过程将会失败,因此在实际使用中需要确保密钥的正确性。

下面给大家打个广告哈哈哈:给大家介绍一个公众号,亲测方便好用。主要功能是搜索最优优惠券,购物返利,但是不仅仅包括京东、淘宝、拼多多等电商购物会返利,包括滴滴打车、美团外卖以及美团优惠券等等都会有返利,并且返利是我见过最高的。反正用到就是赚到,绝对亏不了,能省一点是一点。而且现在还接入了最火热的chatGPT,没事的时候还可以和人工智能聊天,爽歪歪。我不允许你不知道这么牛的东西。哈哈哈,二维码放到下面了,微信扫一扫试用一下。文章来源地址https://www.toymoban.com/news/detail-501287.html

到了这里,关于Java实现AES加密工具类 - 简单易用的数据加密解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库加密AES 适用 Mysql Oracle 以及java

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 备忘录:加密key为:vU4C!~0_HQtlU_p@ 可采用任意长度为16位的字符串 数据库数据需要对敏感数据进行加密,比如手机号,身份证号以及银行卡号等进行加密。需要一套通用的加密方法可以在java项目以及or

    2024年02月15日
    浏览(47)
  • 在线AES加密/解密工具

    在线AES加密/解密工具 http://lzltool.com/AES http://lzltool.com/AES

    2024年02月12日
    浏览(44)
  • 简单易用,灵活强大:用SQLAlchemy实现Python操作数据库

    什么是SQLAlchemy? SQLAlchemy是一个Python的SQL工具和ORM框架,可以通过Python代码直接操作关系型数据库,也可以使用ORM模型进行对象关系映射。它支持多种数据库,并提供了强大的SQL表达式和查询API。 SQLAlchemy可以分为两个部分:Core和ORM。 Core:提供了底层的SQL表达式和查询API,

    2024年02月04日
    浏览(68)
  • 用java语言写一个AES算法,使用AES(CBC模式)对数据进行加密或解密。加解密用到的密钥(Key)和密钥偏移量(IV),代码实例类编写。

    以下是一个使用Java编写的AES算法实例,使用AES(CBC模式)对数据进行加密和解密。代码中包括了生成随机密钥和密钥偏移量的方法。 java Copy code import javax.crypto.*; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.security.InvalidAlgorithmParameterException; import

    2024年02月07日
    浏览(59)
  • java:AES加密和解密

    1 前言 对称加密,即单秘钥加密,指加密和解密的过程中,使用相同的秘钥,相比于非对称加密,因仅有一把钥匙,故而速度更快,更适合解密大文件(常见于如视频文件的加密解密中)。AES算法就属于对称加密中的一种。 2 使用 依赖引入: AES加密与解密的工具类封装: 执

    2024年02月11日
    浏览(55)
  • python实现AES加密

    目录 1.AES加密 2.需要导入的模块 3.定义好全局变量 4.编写加密函数 5.将密文解密 6.完整代码   AES的区块长度固定为128 比特,密钥长度则可以是128,192或256比特; AES有多种加密模式,其中CBC分组模式是SSL、IPSec的标准。使用CBC加密模式时需要提前给出一段初始化向量iv,因为明

    2023年04月08日
    浏览(35)
  • 前端界面直接生成源码?用这个工具直接生成VUE代码,简单易用

    推荐一个前端代码生成工具iVX。我个人使用这个工具也有一段时间了,感觉做的很不错。有需要生成前端代码的同学可以关注了解一下,在下面的这个例子中,我生成了两个编辑框和两个按钮。 上手一个工具的最便捷路径就是看它的官方文档和教程。同样,iVX官网也提供了这

    2024年02月05日
    浏览(45)
  • python实现AES-128#实现加密字符串和加密文件

    这篇文章是对之前的一篇文章的重写和优化AES加密算法基于python实现 脚本语言:Python 已实现的功能 明文和密密钥可以是任意字符:中文,字符,数字或符号。 ​ 明文长度任意,密钥的字节数不能超过16字节。默认编码为utf-8所以,密钥最多支持5个中文字符 待加密的数据:可

    2024年02月12日
    浏览(89)
  • python 如何实现 aes 加密?

    在Python中,使用pycryptodome库可以轻松地实现AES加密。本文将介绍如何使用Python实现AES加密以及如何使用pycryptodome库来进行加密。 AES(Advanced Encryption Standard)是一种对称密钥加密算法,被广泛用于保护数据的安全。它是目前最常用的加密算法之一,被广泛应用于数据通信、数

    2024年02月07日
    浏览(39)
  • RSA+AES实现混合加密

    为什么使用RSA + AES混合加密 1.加密介绍 RSA加密: 属于非对称加密,公钥用于对数据进行加密,私钥对数据进行解密,两者不可逆。公钥和私钥是同时生成的,且一一对应。比如:客户端拥有公钥,服务端拥有公钥和私钥。客户端将数据通过公钥进行加密后,发送密文给服务端

    2024年02月05日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包