在java项目中使用AES256 CBC加密

摘要:
首先,默认JDK不支持256位加密。您需要从Oracle官方网站下载加密增强文件(JavaCryptographyExtension(JCE)UnlimitedStringthJudicitionPolicyFiles8)。否则,编译将报告错误:java。安全InvalidKeyException:Illegalkeysize解压并替换jre/lib/security/目录

首先要注意一点,默认的JDK是不支持256位加密的,需要到Oracle官网下载加密增强文件(Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8),否则编译会报错:

java.security.InvalidKeyException: Illegal key size

解压后替换jre/lib/security/目录下的同名文件即可。

最简单的应用实例:

public class IotServer {

    private static final byte[] key = {..};//key.length须满足16的整数倍
    private static final byte[] iv = {..};//iv.length须满足16的整数倍
    private static final String transform = "AES/CBC/PKCS5Padding";
    private static final String algorithm = "AES";
    private static final SecretKeySpec keySpec = new SecretKeySpec(key, algorithm);

    public static void main(String[] args) {
        Cipher cipher = Cipher.getInstance(transform);
        cipher.init(Cipher.ENCRYPT_MODE, keySpec, new IvParameterSpec(iv));
        byte[] cipherData = cipher.doFinal("待加密的明文".getBytes("UTF-8"));
        System.out.println(Arrays.toString(cipherData));
    }

}

key和iv都可以通过更复杂的方式生成,方法很多这里不再列出,更多的使用技巧会在实际应用中发现。

免责声明:文章转载自《在java项目中使用AES256 CBC加密》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何处理ajax中嵌套一个ajaxmysql-community-server-5.7.24 & 5.7.31 (5.6.35 升级到 5.7.24)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

建行互联网银企被扫支付

背景 最近在对接建行的支付,我们做的是被扫支付,就是B扫C,一开始对方发了一个压缩包给我,看起来挺齐全的,文档、demo啥的都有,以为很简单,跟微信支付宝类似,调一下接口,验证一下就OK了。然而,事实证明我还是太年轻了。而且网络上你能够搜到的基本上都用不了,所以记一下博客,或许可以帮助其他人。 先说一下建行支付比较特殊的地方吧 1、官方提供的demo里面,...

java 类变量初始化顺序

假定有一个类定义如下: package com.zhang; public final class Girl { // static代码块1 private static String sex = "female"; // 成员方法代码块1 private String name = "anonymous";...

javafx virtual keyboard

public class EffectTest extends Application { @Override public void start(final Stage stage) { final Keyboard keyboard = new Keyboard( new Key(KeyCode....

习题解答chapter02

1. 对象与对象引用的区别是什么? 创建案例代码: public class Study{ // 默认构造方法 public Study{ } } 对象创建操作Study temp = new Study();语句解读: 左边的“Study temp”创建了一个Stu...

3DESC加密算法

3DESC 请求参数和响应参数全采用3des加密规则,由于我是用.NET对接的,而第三方是Java开发的,所以两种程序之间采用的算法有一点差异,java的3des加密采用的是"DESede/CBC/PKCS5Padding"规则,所以对应的C#规则是"PaddingMode.PKCS7和CipherMode.CBC",使用CBC模式的话在C#下必须传入加密...

【转】C++标准转换运算符static_cast

static_cast<new_type> (expression) 虽然const_cast是用来去除变量的const限定,但是static_cast却不是用来去除变量的static引用。其实这是很容易理解的,static决定的是一个变量的作用域和生命周期,比如:在一个文件中将变量定义为static,则说明这个变量只能在本Package中使用...