`
sunxboy
  • 浏览: 2868541 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

JAVA实现AES加密与解密

 
阅读更多
package com.eifesun.monitor.upload.uploader;

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;

public class AES {
    public static byte[] encrypt(String text, String password) {
        try {
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
            int blockSize = cipher.getBlockSize();

            // padding byte data as 16 * N length 
            byte[] dataBytes = text.getBytes("UTF-8");
            int plaintextLength = dataBytes.length;
            if (plaintextLength % blockSize != 0) {
                plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
            }

            byte[] plaintext = new byte[plaintextLength];
            System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);

            SecretKeySpec keyspec = new SecretKeySpec(password.getBytes("UTF-8"), "AES");
            IvParameterSpec ivspec = new IvParameterSpec(password.getBytes("UTF-8"));

            cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
            return cipher.doFinal(plaintext);
            // return new sun.misc.BASE64Encoder().encode(encrypted);
        }
        catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public static String decrypt(byte[] encryptedBytes, String password) {
        try {
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
            SecretKeySpec keyspec = new SecretKeySpec(password.getBytes(), "AES");
            IvParameterSpec ivspec = new IvParameterSpec(password.getBytes("UTF-8"));

            cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);

            byte[] original = cipher.doFinal(encryptedBytes);
            return new String(original, "UTF-8");
        }
        catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

}

 

分享到:
评论

相关推荐

    Java实现AES加密和解密算法

    在Java中实现AES(Advanced Encryption Standard)加密和解密算法主要涉及到对称密钥加密技术。AES算法是一种块密码,采用固定大小的128位(16字节)块进行加密和解密,支持128、192和256位的密钥长度。在给定的代码...

    JAVA实现AES加密和解密

    总的来说,理解并正确使用Java实现AES加密和解密,需要注意秘钥的生成、工作模式的选择、填充方式以及字符编码的一致性,这样才能确保数据的安全传输和正确解密。通过实际操作和实践,你可以更深入地掌握这些知识点...

    JS实现AES-GCM加密,java实现AES-GCM解密。.md

    在工作中会经常遇到密码加密,URL传参要进行加密,在此我参照一个例子将用java实现的AES加解密程序用实例写出。JS实现AES-GCM加密,java实现AES-GCM解密

    c/c++与java互通 AES加密解密

    "C/C++与Java互通AES加密解密"的主题就是这两个议题的结合。AES(Advanced Encryption Standard),即高级加密标准,是一种广泛使用的对称加密算法,提供了强效的数据保护。本话题主要探讨如何在C/C++和Java之间使用...

    Java使用AES加密和解密的实例详解

    Java使用AES加密和解密的实例详解 Java使用AES加密和解密的实例详解主要介绍了Java使用AES加密和解密的实例详解的相关资料,需要的朋友可以参考下。 AES加密是一种对称的加密算法,可以基于相同的密钥进行加密和...

    java实现aes加密

    java实现aes加解密

    Java AES128加密解密

    在Java中实现AES128加密解密,通常会使用Java Cryptography Extension (JCE) 提供的API。AES支持三种工作模式:ECB(Electronic Codebook)、CBC(Cipher Block Chaining)和CFB(Cipher Feedback)。其中,ECB是最...

    java使用AES加密/解密文件

    本教程将详细讲解如何在Java中使用AES加密和解密文件,以确保数据的安全性。 AES全称为Advanced Encryption Standard,是一种对称加密算法,它在信息安全领域中被广泛应用,因为其速度快、效率高且安全性强。Java...

    java 基于AES实现对文件的加密 解密

    在实现AES加密解密时,要特别注意错误处理和数据完整性检查。例如,确保文件读取和写入的正确性,以及在解密过程中处理可能的异常。此外,www.willvc.com.cn 提供的资源可能是进一步学习和解决问题的途径。 总之,...

    java前后端通讯AES加密及解密样例

    通过这个案例,我们可以看到在Spring Boot项目中实现AES加密解密的基本步骤。然而,实际项目中还应考虑其他安全措施,例如使用HTTPS协议、密钥的动态生成和安全存储、以及对称加密与非对称加密的结合使用等,以增强...

    java使用Hex编码解码实现Aes加密解密功能示例

    在本文示例中,我们关注的是如何利用Java的Hex编码和解码来处理AES加密和解密的过程。 首先,让我们了解什么是Hex编码。Hex编码是一种将二进制数据转换为可打印字符的表示方式,每个字节被转换为两个十六进制数字...

    JAVA实现AES加密解密工具类

    本篇文章将深入探讨如何在Java中实现AES加密解密,并介绍相关的关键知识点。 首先,我们需要理解AES加密的基本原理。AES是一种块密码,它以固定大小的数据块(128位)为单位进行操作。加密和解密过程都基于一系列...

    java代码-java使用AES加密解密 AES-128-ECB加密

    java代码-java使用AES加密解密 AES-128-ECB加密 ——学习参考资料:仅用于个人学习使用

    java的AES加密解密

    本篇将详细介绍Java实现AES加密解密的原理与实践。 AES是一种块密码,它以128位(16字节)的数据块作为处理单位,通过多次替换、置换等操作来实现加密。AES有三个关键参数:密钥长度(128、192或256位)、轮数(10...

    Delphi.rar_AES_AES加密_delphi AES加密_delphi 加解密_java delphi aes

    总的来说,这个资源为Delphi开发者提供了一种实现AES加密解密的方式,并且保证了与Java平台的兼容性。通过理解和应用这些代码,开发者可以增强他们的应用程序在数据安全方面的性能,同时也能更好地与其他Java应用...

    c AES, c++ AES, java AES, 互通, 加密解密

    在本文中,我们将探讨如何在C、C++和Java之间实现互通的AES加密解密方法,以及如何不依赖外部加密库,仅通过基本的字符和数组操作来实现这一过程。 首先,理解AES的工作原理至关重要。AES由一系列的替换和转换步骤...

    c/c++ 与java互通 AES加密解密,算法ECB

    压缩包里有两个工程,一个vc6.0一个myeclipse,本帖是修复贴,原帖地址c/c++ 与java互通 AES加密解密,算法ECB/PKCS5PADDING http://download.csdn.net/download/wangsonghiweed/4328267 -来自CSDN,有童鞋反映有...

    AES实现前端JS和后端java加密解密

    后端Java实现AES加密解密: 1. **导入依赖**:在Java中,我们需要添加Apache Commons Codec库来处理Base64编码,以及Java Cryptography Extension (JCE)来支持AES操作。确保JCE未受限制,因为默认情况下,Java对某些...

    AES加密解密JAVA实现(带源码)

    ### 知识点详解 #### 一、AES加密算法简介 **高级加密标准(Advanced Encryption Standard,AES)**是一种对称加密算法...通过以上介绍,我们可以了解到如何在Java中实现AES加密解密的基本流程,以及相关的注意事项。

    android使用AES加密和解密文件实例代码

    Android 使用 AES 加密和解密文件实例代码 在 Android 应用程序中,使用 AES(Advanced Encryption Standard)加密...本文提供了详细的实例代码和解释,可以帮助开发者实现 Android 应用程序中的 AES 加密和解密功能。

Global site tag (gtag.js) - Google Analytics