最近接到个项目需要用到AES,加密模式为AES128-CFB。然后百度了下,关于AES加密的文章有很多,但就是没有CFB加密的相关例子,所以只能从网上找了个CBC加密的例子改为128-CFB的。代码

//  data为加密文本,datakey为密钥
public static String encryptAES(byte[] data, byte [] dataKey)throws InvalidKeyException, NoSuchAlgorithmException,NoSuchPaddingException, UnsupportedEncodingException,InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException {byte[] byteContent = dataTest;// 注意,为了能与 iOS 统一// 这里的 key 不可以使用 KeyGenerator、SecureRandom、SecretKey 生成
//        byte [] keyByte = key.getBytes(); 如果传入的参数为字符串,先转成byte//因为项目要求传入长度为16的数组,不够的就补0,所以我这里是先new了一个长度为16,元素//全为0的数组,然后通过循环获得相应的数组for (int i = 0; i < dataKey.length; i++) {dataKeyTest[i] = dataKey[i];}byte [] keyByte = dataKeyTest;SecretKeySpec secretKeySpec = new SecretKeySpec(keyByte, "AES");for (int i = 0; i < data.length; i++) {dataTest[i] = data[i];}//        byte[] initParam = IV_STRING.getBytes();//偏移量数组byte[] initParam = ivString;IvParameterSpec ivParameterSpec = new IvParameterSpec(initParam);// 指定加密的算法、工作模式和填充方式Cipher cipher = Cipher.getInstance("AES/CFB128/PKCS7Padding");cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec);byte[] encryptedBytes = cipher.doFinal(byteContent);cryptedBytes).substring(0,32));return toHex(encryptedBytes).substring(0,32);}

关键是这一句 Cipher cipher = Cipher.getInstance("AES/CFB128/PKCS7Padding");

AES/CFB128/PKCS7Padding在没有加128的时候得到的值一直是错误的,后来根据方法点进去看了下源码,才知道要加上128才行。

最后不知道为什么,通过加密后返回的值应该是16个字节,但却返回了32个字节,所以只能通过截取的方法截取前面16个字节。关于这个问题,希望有大佬可以指点下。

android AES CFB128 加密相关推荐

  1. Android AES 文件加密解密

    几番折磨终有结果,现将Demo整理出来... [java] view plain copy   package com.king.zjc; import java.io.File; import ja ...

  2. android aes文件加密,如何在Android中使用AES从SD卡加密文件?

    你应该看看: CipherInputStream和CipherOutputStream.它们用于加密和解密字节流. 我有一个名为的文件cleartext.该文件包含: Hi, I'm a clear ...

  3. Android AES文件加密 ECB模式

    项目过程中遇到一个新需求,对文件进行AES加密解密,要求用ECB模式,这里记录一下 网上找了很多资料,对字符串进行加密很多,可是我需要的是对文件进行加密,一开始的思路是把文件内容读出来,然后对这些内容 ...

  4. python AES CFB-128加密

    1.传统的pycrypto已经不更新了有很多bug 导致 CFB模式有问题,网上的99%都是错的,要用pycryptodome包 https://github.com/Legrandin/pycryp ...

  5. Android直播开发之旅(25):使用AES算法加密多媒体文件(+RSA+MD5+Base64)

    文章目录 1. AES算法 1.1 AES加密过程 1.1.1 字节代替(SubBytes) 1.1.2 行移位(ShiftRows) 1.1.3 列混合(MixColumns) 1.1.4 加轮密钥 ...

  6. Android加密工具类,Android AES加密工具类分享

    1.AES加密工具类 java不支持PKCS7Padding,只支持PKCS5Padding.我们知道加密算法由算法+模式+填充组成,下一篇介绍iOS和Android通用的AES加密,本篇文章使用PK ...

  7. Android AES加密解密

    AES加密算法模式有四种:ECB.CBC.CFB.OFB 要想AES加密,至少需要一个16位的密钥,如果是非ECB模式的加密,至少还得需要密钥偏移量. 下面是AES在线加密解密链接: AES在线加密解 ...

  8. Android AES加密解密工具类

    一个用于Android AES加密解密的工具类,记录一下... import android.os.Build import android.security.keystore.KeyGenParam ...

  9. android 中如何用aes算法加密解密zip文件,android中AES加解密的使用方法

    今天在android项目中使用AES对数据进行加解密,遇到了很多问题,网上也找了很多资料,也不行.不过最后还是让我给搞出来了,这里把这个记录下来,不要让别人走我的弯路,因为网上绝大多数的例子都是行不通 ...

最新文章

  1. 这是我看过最全的工业机器人知识介绍 !
  2. python 可视化_Python可视化|Matplotlib40LaTeX in Matplotlib和python
  3. Thymeleaf抽取公共页面片段
  4. 在传统行业做数字化转型之最终篇
  5. 用训练好的paddlepaddle模型继续训练模型和验证数据ckpt
  6. Python:List、tuple、dict、set
  7. 阿里云ECS修复ubuntu 16.04漏洞过程
  8. 为何手机可以用,电脑连接不上
  9. java 缓存方法_Java实现一个简单的缓存方法
  10. hadoop的基本搭建
  11. 使用代码对现实世界进行抽象,软件设计和思维。
  12. CentOS安装问题
  13. 平面设计个人简历模板
  14. python贴吧自动发帖-Python之自动发帖
  15. js面试题(2019最新)
  16. 2.安装Clouda框架
  17. solr中文同义词检索的配置讲解
  18. 论文研读-基于决策变量分析的大规模多目标进化算法
  19. 友盟受访页面_调整我们如何询问受访者的性别
  20. activity任意节点动态加签

热门文章

  1. python结课报告
  2. 年轻人的第一个云服务器,比心牛客
  3. 笔记本怎样运行android程序,PC手机二合一 在笔记本上如何运行安卓程序
  4. 深度硬核 | Polkadot 为何能成为下一代区块链基础设施?
  5. C语言(较深入原理):%s通过字符串首元素地址输出,用指针数组来作示例
  6. 访问数据库的四种方式
  7. 数据结构入门到精通学习(一)
  8. 快速排序与查找第K大的数
  9. 攻防世界web进阶区wtf.sh-150详解
  10. 梯度下降法(GD,SGD)总结