求助:JAVA加密的数据PHP解密
已经尝试过用php解密,但是对java代码不懂导致解密时连蒙带猜,最终也没有解密出来,懂的帮忙解答一下。
java加密后的密文:iP6nVfCE9Eiw47utJDR6wV6Lhl4xyOgYykub0HUJSZQ=
以下是java的aes加密类,希望能用php解密出来
package com.mk.api.util;
import java.security.Key;
import java.security.MessageDigest;
import java.util.Arrays;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
/**
* AES 加密
*/
public class AES {
private static final String AESTYPE = "AES";
private static final String KEY = "Z8LSq0wWwB5v+6YJzurcP463H3F12iZh74fDj4S74oUH4EONkiKb2FmiWUbtFh97GG/c/lbDE47mvw6j94yXxKHOpoqu6zpLKMKPcOoSppcVWb2q34qENBJkudXUh4MWcreondLmLL2UyydtFKuU9Sa5VgY/CzGaVGJABK2ZR94=";
/**
* 加密
* @param content
* @return
*/
public static String encrypt(String str) {
try {
Key key = generateKey();
Cipher c = Cipher.getInstance(AESTYPE);
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(str.getBytes());
String encryptedValue = DatatypeConverter.printBase64Binary(encVal);
return encryptedValue;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 解密
* @param content
* @return
*/
public static String decrypt(String str) {
try {
Key key = generateKey();
Cipher c = Cipher.getInstance(AESTYPE);
c.init(Cipher.DECRYPT_MODE, key);
byte[] decordedValue = DatatypeConverter.parseBase64Binary(str);
byte[] decValue = c.doFinal(decordedValue);
String decryptedValue = new String(decValue);
return decryptedValue;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private static Key generateKey() throws Exception {
byte[] keyValue = KEY.getBytes("UTF-8");
MessageDigest sha = MessageDigest.getInstance("SHA-1");
keyValue = sha.digest(keyValue);
keyValue = Arrays.copyOf(keyValue, 16);
Key key = new SecretKeySpec(keyValue, AESTYPE);
return key;
}
}
算法一定要知其然所以然,很多人对DES、AES的一些细节知识都是一知半解,所以有时候在需要灵活变动的时候往往一头雾水。