在php中没有调用解密函数

时间:2012-04-26 04:10:02

标签: java php encryption

我在java中使用加密并在php中执行解密 我正在使用以下代码在java中进行加密。

String iv = "fedcba9876543210";
IvParameterSpec ivspec;
KeyGenerator keygen;
Key key;

ivspec = new IvParameterSpec(iv.getBytes());

keygen = KeyGenerator.getInstance("AES");
keygen.init(128);
key = keygen.generateKey();

keyspec = new SecretKeySpec(key.getEncoded(), "AES"); 

Cipher cipher;
byte[] encrypted;

cipher = Cipher.getInstance("AES/CBC/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
encrypted = cipher.doFinal(padString(text).getBytes());

private String padString(String source) {
  char paddingChar = ' ';
  int size = 16;
  int padLength = size - source.length() % size;

  for (int i = 0; i < padLength; i++) {
    source += paddingChar;
  }

  return source;
}


并在php中解密我使用以下代码:

function decrypt($code, $key) {
  $key = $this->hex2bin($key);
  $code = $this->hex2bin($code);

  $td = mcrypt_module_open("rijndael-128", "", "cbc", "fedcba9876543210");

  mcrypt_generic_init($td, $key, CIPHER_IV);
  $decrypted = mdecrypt_generic($td, $code);

  mcrypt_generic_deinit($td);
  mcrypt_module_close($td);

  return utf8_encode(trim($decrypted));
}

function hex2bin($hexdata) {
  $bindata = "";

  for ($i = 0; $i < strlen($hexdata); $i += 2) {
    $bindata .= chr(hexdec(substr($hexdata, $i, 2)));
  }

  return $bindata;
}


加密工作正常,但在解密时,流量在php的这个功能上停止:  

$td = mcrypt_module_open("rijndael-128", "", "cbc", "fedcba9876543210");

所以我错过了什么?

1 个答案:

答案 0 :(得分:1)

你得到的错误是什么?

你有安装/编译PHP的mcrypt吗? Info here