加密有效
package com.vzo.eightpartycall.util;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
//import android.util.Log;
public class AESECB
{
/*ECB模式不要IV*/
private String key;
public AESECB(String key)
{
this.key=key;
}
public String encrypt(String data) throws Exception {
try {
/*
String data = "Test String";
String key = "1234567812345678";
String iv = "1234567812345678";
*/
Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
// Log.i("tag",(16-(data.length()%16))+"");
int datesize=(16-(data.length()%16));
for(int i=0;i<datesize;i++)
{
// Log.i("tag","oncex:"+i);
data=data+" ";
}
// Log.i("tag","填补后"+data);
/*
int blockSize = cipher.getBlockSize();
byte[] dataBytes = data.getBytes();
int plaintextLength = dataBytes.length;
if (plaintextLength % blockSize != 0) {
plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
}
byte[] plaintext = new byte[plaintextLength];
System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
*/
SecretKeySpec keyspec = new SecretKeySpec(this.key.getBytes(), "AES");
cipher.init(Cipher.ENCRYPT_MODE, keyspec);
byte[] encrypted = cipher.doFinal(data.getBytes());
return byte2hex(encrypted);
//return encrypted.toString();
// return new sun.misc.BASE64Encoder().encode(encrypted);
} catch (Exception e) {
System.out.println(e.toString());
return null;
// return new sun.misc.BASE64Encoder().encode(encrypted);
}
}
public String desEncrypt(String data) throws Exception {
try
{
// String data = "2fbwW9+8vPId2/foafZq6Q==";
/*
String key = "1234567812345678";
String iv = "1234567812345678";
*/
// byte[] encrypted1 = new BASE64Decoder().decodeBuffer(data);
byte[] encrypted1=hex2byte(data);
// byte[] encrypted1=data.getBytes();
Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
SecretKeySpec keyspec = new SecretKeySpec(this.key.getBytes(), "AES");
cipher.init(Cipher.DECRYPT_MODE, keyspec);
byte[] original = cipher.doFinal(encrypted1);
String originalString = new String(original);
return originalString;
}
catch (Exception e) {
e.printStackTrace();
return null; }
}
public static byte[] hex2byte(String strhex) {
if (strhex == null) {
return null;
}
int l = strhex.length();
if (l % 2 == 1) {
return null;
}
byte[] b = new byte[l / 2];
for (int i = 0; i != l / 2; i++) {
b[i] = (byte) Integer.parseInt(strhex.substring(i * 2, i * 2 + 2),
16);
}
return b;
}
public static String byte2hex(byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1) {
hs = hs + "0" + stmp;
} else {
hs = hs + stmp;
}
}
return hs.toLowerCase();
// return hs.toUpperCase();
}
}