阿里云的企业图谱API解密程序只给提供的node和java的想要个PHP的,但是我比较菜,所以求大佬看着node或者java写一个PHP版本的具体代码如下node:
var crypto=require('crypto');
decrypt = function(data,token){
    var secretKey = '';
    if(token.length>=16){
      secretKey = token.slice(0,16);
    }else{
      secretKey = token +'0000000000000000'.slice(0,16-token.length);
    }
    var decipher = crypto.createDecipher('aes-128-ecb',secretKey);
    return decipher.update(data,'hex','utf8')+ decipher.final('utf8') ;
  }
}java:
import java.security.MessageDigest;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class APIDecrypt {
  private static String decrypt(String data, String token) throws Exception { 
    String seed = "";
    if(token.length()>=16){
      seed = token.substring(0,16);
    }else{
      seed = token +"0000000000000000".substring(0, 16-token.length());
    }
    String DEFAULT_CODING = "utf-8";  
    byte[] keyb = seed.getBytes(DEFAULT_CODING); 
    MessageDigest md = MessageDigest.getInstance("MD5");  
    byte[] thedigest = md.digest(keyb);  
    SecretKeySpec skey = new SecretKeySpec(thedigest, "AES");  
    Cipher dcipher = Cipher.getInstance("AES/ECB/PKCS5Padding");  
    dcipher.init(Cipher.DECRYPT_MODE, skey);  
    byte[] clearbyte = dcipher.doFinal(toByte(data));  
    return new String(clearbyte);  
  }  
  public static byte[] toByte(String hexString) {
    int len = hexString.length()/2;
    byte[] result = new byte[len];
    for (int i = 0; i < len; i++){
      result[i] = Integer.valueOf(hexString.substring(2*i, 2*i+2), 16).byteValue();        
    }
    return result;
  }
}

解决方案 »

  1.   

    $privateKey = "1234567812345678";
    $iv     = "1234567812345678";
    $data   = "Test String";
     
    //加密
    $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateKey, $data, MCRYPT_MODE_CBC, $iv);
    echo(base64_encode($encrypted));
    echo '<br/>';
     
    //解密
    $encryptedData = base64_decode("2fbwW9+8vPId2/foafZq6Q==");
    $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $privateKey, $encryptedData, MCRYPT_MODE_CBC, $iv);
    echo($decrypted);
    你可以试试
    这个对应 java 的  Cipher.getInstance("AES/CBC/NoPadding")
    而你的是 Cipher.getInstance("AES/ECB/PKCS5Padding")
    可能会有出入