Base64.encodeBase64String(secretKey.getEncoded())是apache的commons-codec库,二进制经base64编码为字符串

//cfb
package com.dddd.codec;import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;public class Test {public static void main(String[] args) {try {KeyGenerator kg= KeyGenerator.getInstance("AES");//初始化密钥生成器,AES要求密钥长度为128位、192位、256位kg.init(128);SecretKey secretKey=kg.generateKey();System.out.println("密钥:"+ Base64.encodeBase64String(secretKey.getEncoded()));SecretKey key=new SecretKeySpec(secretKey.getEncoded(),"AES");String txt = "testtxt";Cipher cipher= Cipher.getInstance("AES/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, key);byte[]  encryptData = cipher.doFinal(txt.getBytes());System.out.println("加密后:"+Base64.encodeBase64String(encryptData));cipher.init(Cipher.DECRYPT_MODE, key);byte[]  decryptData = cipher.doFinal(encryptData);System.out.println("解密后:"+new String(decryptData));}catch (Exception e){e.printStackTrace();}}
}
//gcm
package com.dddd.codec;import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.GCMParameterSpec;
import javax.crypto.spec.SecretKeySpec;public class Test {public static void main(String[] args) {try {KeyGenerator kg= KeyGenerator.getInstance("AES");//初始化密钥生成器,AES要求密钥长度为128位、192位、256位kg.init(128);SecretKey secretKey=kg.generateKey();System.out.println("密钥:"+ Base64.encodeBase64String(secretKey.getEncoded()));SecretKey key=new SecretKeySpec(secretKey.getEncoded(),"AES");String txt = "testtxt";Cipher cipher= Cipher.getInstance("AES/GCM/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, key);byte[] iv = cipher.getIV(); assert iv.length == 12;byte[]  encryptData = cipher.doFinal(txt.getBytes());assert encryptData.length == txt.getBytes().length + 16; byte[] message = new byte[12 + txt.getBytes().length + 16]; System.arraycopy(iv, 0, message, 0, 12);System.arraycopy(encryptData, 0, message, 12, encryptData.length);System.out.println("加密后:"+Base64.encodeBase64String(message));if (message.length < 12 + 16) throw new IllegalArgumentException();GCMParameterSpec params = new GCMParameterSpec(128, message, 0, 12);cipher.init(Cipher.DECRYPT_MODE, key, params);byte[]  decryptData = cipher.doFinal(message, 12, message.length - 12);System.out.println("解密后:"+new String(decryptData));}catch (Exception e){e.printStackTrace();}}
}

java aes128位 cfb与gcm加解密 aes-128-cfb aes-128-gcm相关推荐

  1. php aes 256 加解密,PHP完整的AES加解密算法使用及例子(256位)

    依赖PHP自身的mcrypt扩展 class aes { // CRYPTO_CIPHER_BLOCK_SIZE 32 private $_secret_key = 'default_secret_k ...

  2. JAVA建行银企直连报文加解密

    接上一篇密钥交换之后获得银行提供的:银行RSA签名公钥RSA.bank.public.key,接受报文验签使用:银行DES加密私钥DES.bank.private.key,加密报文使用.还有之前自己生 ...

  3. C# 实现AES GCM加解密

    // 使用的包 using NPOI.POIFS.Crypt;/// <summary> /// AES GCM 加密 /// </summary> /// <param ...

  4. Java使用PBE算法进行对称加解密最简入门和示例

    PBE 算法 PBE( Password Based Encryption, 基于口密加密).PBE是一种基于口令的加密算法, 采用随机数杂凑(盐)多重加密方法保证数据安全性. PBE算法并没有真正构 ...

  5. java rsa enc 源码_RSA加解密源码 | 学步园

    源码: #include #include #include #include #include #include #include typedef struct{ unsigned char enc ...

  6. python 复现java中jasypt包的 PBEWITHSHA256AND256BITAES-CBC-BC加解密算法(可java python双向加解密)

    运行环境:python 3.6 依赖包Crypto的安装: pip3 install pycryptodome # Make coding more python3-ish from __future ...

  7. 常见的加解密算法【MD5, AES, RSA等】

    目录 1. 摘要算法 MD5的算法过程 SHA1算法 MD5与SHA1算法的比较 2. 对称加密 AES加密算法 DES加密算法 3. 非对称加密 RSA DSA 1. 摘要算法 常见的摘要算法主要有 ...

  8. cbc cryptojs 前后端_前端CryptoJS AES/DES加解密与后端PHP AES/DES加解密

    本文涉及到的内容有:前端使用CryptoJS对数据进行DES或AES加密解密: 后端使用PHP openssl对数据进行解密和加密. 前端AES加密数据 首先在vue环境下安装crypto-js,cr ...

  9. AES-GCM算法 Java与Python互相加解密

    文章目录 1. AES 2. AES的分组长度和秘钥长度 3.AES加密模式 4.AES-GCM 5. JAVA应用 5.1 生成密钥 5.2 加密 5.3 解密 6. Python应用 7. 测试一 ...

最新文章

  1. Java isfile()与exists()的区别
  2. Python的if __name__ == ‘__main__‘:的作用
  3. Python 画樱花(动态画+飘落效果+暗色效)
  4. ora 12541无监听程序
  5. 分布式离线计算—MapReduce—为什么被淘汰了?
  6. Edge Cache(边缘缓存) 的概念
  7. 【Python CheckiO 题解】Roman Numerals
  8. 【Processing学习笔记】安装与入门
  9. (转载)github简单使用教程
  10. Linux编辑f2fs,Linux 5.7 F2FS 文件系统正在添加对 Zstd 压缩算法的支持
  11. 腾达无线路由器dns服务器,腾达无线路由器如何设置DNS
  12. 汉字 计算机 坟墓,墓的拼音_墓组词_墓意思(解释)-常用汉字大全
  13. CentOS7配置sendmail发送QQ邮件
  14. TCL爱奇艺再次联姻 共同打造国际微电影节
  15. php 结合md5的加密,解密方法
  16. AngualrJS 1.6 学习(一) -- 安装NodeJS
  17. 真正中文版攻略之出云战记零IZUMO0
  18. RK3229 + 8189fs 安卓7.1.2盒子固件
  19. Hive 元数据表结构详解
  20. 身份证号码中,年龄、性别的提取方法

热门文章

  1. OSChina 周日乱弹 —— 程序员做噩梦
  2. 机器学习|卷积神经网络(CNN) 手写体识别 (MNIST)入门
  3. Studio One 6 V6.0.1 音乐编曲工具
  4. 电商金融系统搭建-金融科技赋能电商
  5. 币图网_教你必须了解的智能合约,共识机制,分布式存储以及密码学
  6. Oracle个人笔记
  7. Healing Psoriasis The Natural Alternative-FOREWORD
  8. 第7章 C语言的递归函数 (六)
  9. C++Primer Plus笔记——第四章 复合类型及课后编程练习答案
  10. HP NS 1005W 脱机,解决办法