第三方JAVA 使用了AES加解密,但是我用PHP对接JAVA的AES加解密无效

浏览:2058 发布日期:2016/11/11 分类:求助交流 关键字: PHP,JAVA
下面是java的AES加解密源码,希望能碰见一下大神写个PHP加解密来进行对接!密钥可自己随便生成,只需要java与php能互通!请各位大神做好后放一下结果,这个问题以后可以让各位程序员新手少走一点弯路!感谢。
package com.credlink.commons.utils;

import java.io.IOException;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.base64Decoder;
import sun.misc.base64Encoder;

public class AES {
private static base64Decoder decoder = new base64Decoder();

private static base64Encoder encoder = new base64Encoder();

private static byte[] encrypt(byte[] byteContent, byte[] password)
throws Exception {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(password);
kgen.init(128, secureRandom);
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(1, key);
byte[] result = cipher.doFinal(byteContent);
return result;
}

private static byte[] decrypt(byte[] content, byte[] password)
throws Exception {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(password);
kgen.init(128, secureRandom);
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(2, key);
byte[] result = cipher.doFinal(content);
return result;
}
public static final String decrypt(String data, String key,
String charsetName) throws Exception {
return new String(decrypt(hex2byte(data), key.getBytes(charsetName)),
charsetName);
}
public static final String encrypt(String data, String key,
String charsetName) throws Exception {
return byte2hex(encrypt(data.getBytes(charsetName),
key.getBytes(charsetName)));
}

private static String byte2hex(byte[] b) {
return encoder.encode(b);
}

private static byte[] hex2byte(String hex) throws IOException {
return decoder.decodeBuffer(hex);
}

public static void main(String[] args) throws Exception {
String enStr = AES.encrypt("testStr", "123", "utf-8");
System.out.println("AES加密后字符串:" + enStr);
// aes=new AES("a65d4s285ds5d4fe2f35df");
String deStr = AES.decrypt(enStr, "123", "utf-8");
System.out.println("AES解密后字符串:" + deStr);
enStr = AES.encrypt("testStr2223332", "123456", "utf-8");
System.out.println("AES加密后字符串:" + enStr);
// aes=new AES("a65d4s285ds5d4fe2f35df");
deStr = AES.decrypt(enStr, "123456", "utf-8");
System.out.println("AES解密后字符串:" + deStr);

}
}
最佳答案
评论( 相关
后面还有条评论,点击查看>>