文档章节

JAVA AES加解密CBC模式PCKS5padding的实现

首席撸出血
 首席撸出血
发布于 2015/06/04 17:02
字数 407
阅读 503
收藏 0


import java.text.SimpleDateFormat;
import java.util.Date;

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

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * 项目中要求访问某个页面的时候要有权限控制,由于是从一个系统跳到另一个系统 所以其中的一部分功能就是使用动态的URL链接 由于我自己负责,所以我的实现打算是这样的
 * 使用AES加密采用CBC加密模式PKCS5PADDING填充方式,动态的URL的参数使用当前时间 IV向量采用当前时间的年月日,最近采用BASE64加密一下 这里只是提前写一下实现方案
 */

public class AesEncrypt {
    static Cipher cipher;

    static final String KEY_ALGORITHM = "AES";

    static final String CIPHER_ALGORITHM_CBC = "AES/CBC/PKCS5Padding";

    static SecretKey secretKey;
    
    static String key;

    public static void main(String[] args) throws Exception {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        String date2String = sdf.format(date) + "00";
        System.out.println(date2String);
        String iv = date2String.substring(0, 8) + date2String.substring(0, 8);
        key = iv;
        String ans = encrypt(date2String, iv);
        descrypt(ans, iv);
    }

    /**
     * 使用AES 算法 加密,默认模式 AES/CBC/PKCS5Padding
     */
    public static String encrypt(String str, String iv) throws Exception {
        cipher = Cipher.getInstance(CIPHER_ALGORITHM_CBC);
        // KeyGenerator 生成aes算法密钥
        secretKey = new SecretKeySpec(key.getBytes(), KEY_ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(iv.getBytes("utf-8")));// 使用加密模式初始化 密钥
        byte[] encrypt = cipher.doFinal(str.getBytes("utf-8")); // 按单部分操作加密或解密数据,或者结束一个多部分操作。
        String ans = new BASE64Encoder().encode(encrypt);
        System.out.println(ans);
        return ans;
    }

    /**
     * 使用AES 算法 解密,默认模式 AES/CBC/PKCS5Padding
     */
    static void descrypt(String str, String iv) throws Exception {
        byte[] encrypt = new BASE64Decoder().decodeBuffer(str);
        secretKey = new SecretKeySpec(key.getBytes(), KEY_ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(iv.getBytes("utf-8")));// 使用解密模式初始化 密钥
        byte[] decrypt = cipher.doFinal(encrypt);
        System.out.println(new String(decrypt));
    }
}


© 著作权归作者所有

首席撸出血

首席撸出血

粉丝 55
博文 17
码字总数 3844
作品 0
浦东
程序员
私信 提问
Node系统模块crypto实现md5 Cipher等多种加密方式

crypto加密模块是C/C++实现这些算法后,暴露为javascript接口的模块,包含对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。Cipher Cipher类用于加密数据,属于对称密...

曲先森
2018/07/31
0
0
AES加密CBC模式兼容互通四种编程语言平台【PHP、Javascript、Java、C#】

由于本人小菜,开始对AES加密并不了解,在网络上花了比较多时间查阅资料整理; 先简单从百度找来介绍: 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称高级加密标准Rij...

尐桀
2012/10/31
63.7K
29
AES加密CBC模式 IOS - Java 互通共用

AES加密模式和填充方式 算法/模式/填充 16字节加密后数据长度 不满16字节加密后长度 AES/CBC/NoPadding 16 不支持 AES/CBC/PKCS5Padding 32 16 AES/CBC/ISO10126Padding 32 16 AES/CFB/NoPad...

岸芷汀兰
2014/12/01
9.6K
2
对称加密算法DES、3DES原理和实现方式

1、对称加密算法 1.1 定义 对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的...

zchuanzhao
2015/11/04
6.1K
0
PHP中3DES加解密

@尐桀 你好,想跟你请教个问题: PHP中3DES加解密是否NOPadding的填充模式,对方用JAVA加解密的,16位加密后还是16位,可我用PHP写出来,就不对了,加密前是16位,加密后就不是了? 附: ci...

蓝色心海
2013/08/19
631
2

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
今天
4
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
今天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
今天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
今天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部