android AES CFB128 加密
最近接到个项目需要用到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 加密相关推荐
- Android AES 文件加密解密
几番折磨终有结果,现将Demo整理出来... [java] view plain copy package com.king.zjc; import java.io.File; import ja ...
- android aes文件加密,如何在Android中使用AES从SD卡加密文件?
你应该看看: CipherInputStream和CipherOutputStream.它们用于加密和解密字节流. 我有一个名为的文件cleartext.该文件包含: Hi, I'm a clear ...
- Android AES文件加密 ECB模式
项目过程中遇到一个新需求,对文件进行AES加密解密,要求用ECB模式,这里记录一下 网上找了很多资料,对字符串进行加密很多,可是我需要的是对文件进行加密,一开始的思路是把文件内容读出来,然后对这些内容 ...
- python AES CFB-128加密
1.传统的pycrypto已经不更新了有很多bug 导致 CFB模式有问题,网上的99%都是错的,要用pycryptodome包 https://github.com/Legrandin/pycryp ...
- 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 加轮密钥 ...
- Android加密工具类,Android AES加密工具类分享
1.AES加密工具类 java不支持PKCS7Padding,只支持PKCS5Padding.我们知道加密算法由算法+模式+填充组成,下一篇介绍iOS和Android通用的AES加密,本篇文章使用PK ...
- Android AES加密解密
AES加密算法模式有四种:ECB.CBC.CFB.OFB 要想AES加密,至少需要一个16位的密钥,如果是非ECB模式的加密,至少还得需要密钥偏移量. 下面是AES在线加密解密链接: AES在线加密解 ...
- Android AES加密解密工具类
一个用于Android AES加密解密的工具类,记录一下... import android.os.Build import android.security.keystore.KeyGenParam ...
- android 中如何用aes算法加密解密zip文件,android中AES加解密的使用方法
今天在android项目中使用AES对数据进行加解密,遇到了很多问题,网上也找了很多资料,也不行.不过最后还是让我给搞出来了,这里把这个记录下来,不要让别人走我的弯路,因为网上绝大多数的例子都是行不通 ...
最新文章
- 这是我看过最全的工业机器人知识介绍 !
- python 可视化_Python可视化|Matplotlib40LaTeX in Matplotlib和python
- Thymeleaf抽取公共页面片段
- 在传统行业做数字化转型之最终篇
- 用训练好的paddlepaddle模型继续训练模型和验证数据ckpt
- Python:List、tuple、dict、set
- 阿里云ECS修复ubuntu 16.04漏洞过程
- 为何手机可以用,电脑连接不上
- java 缓存方法_Java实现一个简单的缓存方法
- hadoop的基本搭建
- 使用代码对现实世界进行抽象,软件设计和思维。
- CentOS安装问题
- 平面设计个人简历模板
- python贴吧自动发帖-Python之自动发帖
- js面试题(2019最新)
- 2.安装Clouda框架
- solr中文同义词检索的配置讲解
- 论文研读-基于决策变量分析的大规模多目标进化算法
- 友盟受访页面_调整我们如何询问受访者的性别
- activity任意节点动态加签