aes/cbc/pkcs5padding 加密在android4.4版本以下出错

问题描述

aes/cbc/pkcs5padding 加密在android4.4版本以下出错

以下加密在android4.4版本上运行正常,但是在低于4.4版本上的设备,每次结果不一样。希望有人能帮我解决这个问题,谢谢!
public String encryptPass(){

String username="stackoverflow";
String password="stackoverflow";
String salt="stackoverflow145";

PBEKeySpec keySpec=new PBEKeySpec(username.toCharArray(),salt.getBytes(),1000,256);
SecretKeyFactory keyFactory=SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
SecretKey key=keyFactory.generateSecret(keySpec);

/*初始向量:16位长度*/
byte[] iv={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
IvParameterSpec ivSpec=new IvParameterSpec(iv);

Cipher cipher=Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE,key,ivSpec);
byte[] passBytes=cipher.doFinal(password.getBytes());
String result=Base64.encodeToString(passBytes,Base64.NO_WRAP);
return result;

}

解决方案

http://blog.csdn.net/zjclugger/article/details/34838447

解决方案二:

@苏小喵 上面回复格式不对了,这边我说一下我的解决方案。我最终是把SecretKey转化成SecretKeySpec,如下:

SecretKey tmp =keyFactory.generateSecret(keySpec);
SecretKey key=new SecretKeySpec(tmp.getEncoded(),"AES");

但是我的疑问是,我改变如上的"AES"为"DES"时,最终结果并没有变化,希望有人能告诉我,谢谢。

时间: 2024-08-17 11:44:26

aes/cbc/pkcs5padding 加密在android4.4版本以下出错的相关文章

DES/CBC/PKCS5Padding 对称加密 java 和 php 的实现对比

java 版本 import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; import java.security.Key; import java.security.Mes

ios-IOS易宝充值接口AES/ECB/PKCS5Padding算法加密问题

问题描述 IOS易宝充值接口AES/ECB/PKCS5Padding算法加密问题 有谁做过易宝IOS充值接口?现在我出现的问题是加密了,易宝那边解析不了,有人能帮我解决下么?高分补偿!! 补充一下是128位的不是256的加密 解决方案 我要的是IOS的..不是安卓的.... 解决方案二: 这种充值的sdk肯定有测试的例子吧,你按照示例来加密吧.通常肯定不会在这里出问题的. 解决方案三: 易宝那边是没有SDKdemo的.他是页面的,,安卓那边没有问题,现在IOS加密后,易宝解析不了...求原因 解

我的Android进阶之旅------>Android采用AES+RSA的加密机制对http请求进行加密

前言 未加密的抓包截图 加密之后的抓包截图 基本需求及概念 AES算法 AES基本原理及算法流程 AES算法流程 RSA算法 RSA算法基本原理及流程 RSA算法实现流程 AES与RSA相结合数据加密方案 Android端 AESRSA结合实践 基本要求 基本流程 Android端 服务器端 java版示例 更多参考 前言 最近维护公司APP应用的登录模块,由于测试人员用Fiddler抓包工具抓取到了公司关于登录时候的明文登录信息.虽然使用的是HTTPS的方式进行http请求的,但还是被Fidd

android开发-android4.2版本的开发时看不懂MainActivity中代码的含义

问题描述 android4.2版本的开发时看不懂MainActivity中代码的含义 新版android eclipse中的MainActivity.java里面增加了好多新的代码,因为还是菜鸟一只,好多代码都不知道是什么作用,求大神指教.之前就一直把代码敲错位置了,耽误了好久,后来总算知道错在哪里了,为了错误不再重犯,求教大神解释整个默认的代码片段大致是什么含义.` enter code here package com.example.helloworld; import android.s

android4.4版本之后怎么实现swf播放

问题描述 android4.4版本之后怎么实现swf播放 项目中遇到一个需求,app中需要实现播放swf文件.但在网上查询相关资料后,发现android4.4版本之后浏览器内核不支持swf/flash的播放.目前没有查到相关解决方法.向各位大侠请教一下: 各位有没有什么好的方法实现swf的播放,有没有应用的示例或者demo.使用html5技术能实现吗?比较急,在线等.多谢各位 解决方案 用html5可以实现的 解决方案二: 你去看html5的视频吧,具体我也说不清 但是要用webview 解决方

【java.lang.UnsupportedClassVersionError】版本不一致出错

这种错误的全部报错信息: 1 java.lang.UnsupportedClassVersionError: org/apache/lucene/store/Directory : Unsupported major.minor version 51.0 2 at java.lang.ClassLoader.defineClass1(Native Method) 3 at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 4

对称加密之AES及压缩加密解密解压综合实战

 对称加密:就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密.密钥是控制加密及解密过程的指令.算法是一组规则,规定如何进行加密和解密. 因此加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要.因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题. 由此可见密钥传递也是比较重要的一环,一般都是通过对密钥二次加密的方式,进行密钥的传输 加密实现代码: public static byte[] encryptStringToBytes_AES(b

Android 5.X与Android4.X版本机器人动画的区别以及制作动画的方法

今天翻了下墙,解决了一直以来的疑惑问题: 为什么Android5.0以及6.0的recovery版本,机器人动画怎么就只有一张图片? 这个问题,我百思不得其解,看了很多网文,也只是有了个概念. 请参考以下文档,这是我从谷歌Android开源网拉下来的原文: https://source.android.com/devices/tech/ota/device_code Recovery UI images Android 5.x The recovery user interface consis

获取android4.0版本sdcard路径示例_Android

复制代码 代码如下: @SuppressLint("NewApi")//你懂的private File findSDCARD() { boolean b = Environment.MEDIA_MOUNTED.equals(Environment   .getExternalStorageState()); if (!b) return null;     File extFile = Environment.getExternalStorageDirectory(); File[]