`
hvang1988
  • 浏览: 51550 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

纯java实现AES加解密

阅读更多
好消息,百度网盘专业搜索网站上线了
打开瞧一瞧:http://bitar.cn
引用jdk中jce.jar模块AES加解密实现
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
 
public class Encryption
{
    public static void main(String args[]) throws Exception {
    	String data = "Test String啊啊啊啊啊啊啊啊啊啊啊啊啊啊";
    	String s=encrypt(data);
        System.out.println(s);
        System.out.println(desEncrypt(s));


    }
 
    public static String encrypt(String data) throws Exception {
        try {
            
            String key = "1234567812345678";
            String iv = "1234567812345678";
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            int blockSize = cipher.getBlockSize();
 
            byte[] dataBytes = data.getBytes();
            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(key.getBytes(), "AES");
            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
 
            cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
            byte[] encrypted = cipher.doFinal(plaintext);
 
            return new sun.misc.BASE64Encoder().encode(encrypted);
 
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
 
    public static String desEncrypt(String data) throws Exception {
        try
        {
            String key = "1234567812345678";
            String iv = "1234567812345678";
             
            byte[] encrypted1 = new BASE64Decoder().decodeBuffer(data);
             
            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
             
            cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
  
            byte[] original = cipher.doFinal(encrypted1);
            String originalString = new String(original);
            return originalString;
        }
        catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

分享到:
评论

相关推荐

    Java实现AES加密和解密算法

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

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

    本话题主要探讨如何在C/C++和Java之间使用基本的字符串和数组操作实现AES加密解密,而不依赖任何额外的加密库。 首先,我们来了解AES加密的基本原理。AES基于块密码,每个数据块为128位,支持128、192和256位的密钥...

    java 实现aes加解密算法

    本篇文章将详细介绍如何在Java中实现AES加解密,帮助你理解并掌握这一核心技术。 AES算法是在DES(Data Encryption Standard)的基础上发展起来的,具有更高的安全性,支持128位、192位和256位的密钥长度,而默认的...

    JAVA实现AES加密和解密

    本文将详细介绍如何使用Java实现AES的加密和解密过程,特别是针对16位长度的秘钥,并解决加解密过程中可能出现的乱码问题。 首先,AES加密算法有多种工作模式,如ECB(Electronic Codebook)、CBC(Cipher Block ...

    java实现aes加密

    java实现aes加解密

    JAVA实现AES加密解密工具类

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

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

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

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

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

    delphi 和java的AES加密解密

    delphi7和java通用的AES加密和解密

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

    在Java中,我们可以使用`javax.crypto`包来实现AES加密和解密。以下是实现这个功能的主要步骤: 1. **密钥生成**:首先,我们需要创建一个AES密钥。可以使用`KeyGenerator`类生成一个随机密钥。例如,对于128位的...

    java的AES加密解密

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

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

    在AES加密过程中,通常需要一个密钥(key)来对数据进行加解密。在这个示例中,密钥首先是以字符串形式存在,然后通过`Hex.decodeHex()`方法将其从Hex编码转换回原始的字节数组,这是因为AES算法需要字节形式的密钥...

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

    本资源"Delphi.rar_AES_AES加密_delphi AES加密_delphi 加解密_java delphi aes"提供的是在Delphi编程环境中实现AES加密和解密的示例代码,其目标是与Java平台上的加解密过程保持兼容。 首先,让我们深入了解一下...

    Delphi与Java互通AES加解密算法.zip

    通过这个资源,开发者可以获得一个完整的解决方案,实现Delphi和Java环境下的AES加解密互通,从而在跨平台项目中保证数据的安全传输。对于需要在这些环境中进行数据加密和解密的开发者来说,这是一个非常有价值的...

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

    最近需要和银行pos做数据通讯,银行端算法为java实现的 AES/ECB/PKCS5PADDING我也改不了, c/c++这边实现ECB算法本来就少,PKCS5PADDING的更是没有,索性自己动手。工作原因c和java都得熟悉,因此把java端和c/c++...

    AES加解密实现源码

    java语言实现AES加解密

    AES加密解密JAVA实现

    在JAVA中实现AES加密解密,需要理解其工作原理、流程以及相关API的使用。以下是对AES加密解密算法及其JAVA实现的详细讲解。 1. AES算法简介: AES是一种块密码,它将明文数据分成128位的块进行加密。它有三种不同的...

    DelphiXE10.3与Java互通AES加解密算法,亲测可用.zip

    DelphiXE10.3与Java互通AES加解密算法,亲测可用。支持ECB、CBC算法,支持128、192、256密匙长度,支持密匙和向量设置,支持补码方式PKCS5和PKCS7,支持16进制密文和Base64密文。

    Java 实现Aes加密解密

    采用固定AES密钥加密,AES使用PKCS5规则进行补位,加密模式使用AES-ECB

Global site tag (gtag.js) - Google Analytics