android DES解密返回空值
来源:互联网 发布:埃西里科住宅数据 编辑:程序博客网 时间:2024/06/05 19:01
直接上代码。。整了一天了。
package com.example.testase;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
import android.util.Base64;
public class ASEjm {
public final static String DES_KEY_STRING = "ABSujsuu";
public static String encrypt(String message, String key) throws Exception {
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));
cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
return encodeBase64(cipher.doFinal(message.getBytes("UTF-8")));
}
public static String decrypt(String message, String key) throws Exception {
byte[] bytesrc = decodeBase64(message);// convertHexString(message);
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));
cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
byte[] retByte = cipher.doFinal(bytesrc);
return new String(retByte);
}
public static byte[] convertHexString(String ss) {
byte digest[] = new byte[ss.length() / 2];
for (int i = 0; i < digest.length; i++) {
String byteString = ss.substring(2 * i, 2 * i + 2);
int byteValue = Integer.parseInt(byteString, 16);
digest[i] = (byte) byteValue;
}
return digest;
}
public static String toHexString(byte b[]) {
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < b.length; i++) {
String plainText = Integer.toHexString(0xff & b[i]);
if (plainText.length() < 2)
plainText = "0" + plainText;
hexString.append(plainText);
}
return hexString.toString();
}
public static String encodeBase64(byte[] b) {
return Base64.encodeToString(b, Base64.DEFAULT);
}
public static byte[] decodeBase64(String base64String) {
return Base64.decode(base64String, Base64.DEFAULT);
}
}
全部代码在这。。求解为何最后
byte[] retByte = cipher.doFinal(bytesrc);
return new String(retByte);
解密的这里 返回就是空值了。
package com.example.testase;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
import android.util.Base64;
public class ASEjm {
public final static String DES_KEY_STRING = "ABSujsuu";
public static String encrypt(String message, String key) throws Exception {
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));
cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
return encodeBase64(cipher.doFinal(message.getBytes("UTF-8")));
}
public static String decrypt(String message, String key) throws Exception {
byte[] bytesrc = decodeBase64(message);// convertHexString(message);
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));
cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
byte[] retByte = cipher.doFinal(bytesrc);
return new String(retByte);
}
public static byte[] convertHexString(String ss) {
byte digest[] = new byte[ss.length() / 2];
for (int i = 0; i < digest.length; i++) {
String byteString = ss.substring(2 * i, 2 * i + 2);
int byteValue = Integer.parseInt(byteString, 16);
digest[i] = (byte) byteValue;
}
return digest;
}
public static String toHexString(byte b[]) {
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < b.length; i++) {
String plainText = Integer.toHexString(0xff & b[i]);
if (plainText.length() < 2)
plainText = "0" + plainText;
hexString.append(plainText);
}
return hexString.toString();
}
public static String encodeBase64(byte[] b) {
return Base64.encodeToString(b, Base64.DEFAULT);
}
public static byte[] decodeBase64(String base64String) {
return Base64.decode(base64String, Base64.DEFAULT);
}
}
全部代码在这。。求解为何最后
byte[] retByte = cipher.doFinal(bytesrc);
return new String(retByte);
解密的这里 返回就是空值了。
0 0
- android DES解密返回空值
- Android DES加密解密
- android des 加密解密
- Android DES加密解密
- android DES加密解密
- Android--DES加密解密
- Android DES加密解密算法
- android des加密和解密
- 【Android】DES加密与解密
- android 3DES加密解密
- Android 平台DES加密解密
- Android getLocationInWindow()返回空值
- Des解密 以及 将。net的DEs加密 用android 的DES解密
- android中的MD5、Base64、DES/3DES/ADES加解密
- DES解密
- des解密
- Android 应用DES加密解密字符串
- android跟php互相Des加密解密
- 接收处理JSON传过来的值,有日期和时间,如何把日期切掉?
- IOS 自带Emoji表情上传服务器问题
- Android手机通过Wifi与PC机之间进行通信问题 (有代码)
- AndResGuard资源混淆工具
- OAuth 2.0客户端
- android DES解密返回空值
- Android 第三方桌面,怎么请求Widget的android.permission.BIND_APPWIDGET
- adb命令怎么写成bat文件
- 这个接口用浏览器可以访问,但是用oc代码却获取不到内容
- fragmenttabhost与drawerlayout一起使用,fragment的主内容显示不出来,tab跑到上面去了
- Android app 版本号自增
- Binary153FindMinimumInRotatedSortedArray
- Android中横竖屏切换加载不同布局导致fragment数据丢失的问题
- GCDAsyncSocket类TCP连接发送数据粘包怎么办