php中的简单字符串加密和Java中的解密?

时间:2013-08-31 05:33:00

标签: java php android

我需要将一些json数据从php服务器端点传输到我的Android客户端,但是如果端点暴露,我想保护明显的数据读取。所以我打算在php端点编写一些简单的字符串加密函数,并让我的客户端对其进行解密。有没有随手可得的图书馆这样做?

2 个答案:

答案 0 :(得分:3)

使用mcrypt PHP模块进行加密

使用javax.crypto Java包进行解密

PHP中的

加密:

function encrypt($message, $initialVector, $secretKey) {
    return base64_encode(
        mcrypt_encrypt( 
            MCRYPT_RIJNDAEL_128,
            md5($secretKey),
            $message,  
            MCRYPT_MODE_CFB,
            $initialVector
        )
    );
}

JAVA中的解密:

public static String md5(String input) throws NoSuchAlgorithmException {
    MessageDigest md = MessageDigest.getInstance("MD5");
    byte[] messageDigest = md.digest(input.getBytes());
    BigInteger number = new BigInteger(1, messageDigest);
    return number.toString(16);
}

public String decrypt(String encryptedData, String initialVectorString, String secretKey) {
    String decryptedData = null;
    try {
        SecretKeySpec skeySpec = new SecretKeySpec(md5(secretKey).getBytes(), "AES");
        IvParameterSpec initialVector = new IvParameterSpec(initialVectorString.getBytes());
        Cipher cipher = Cipher.getInstance("AES/CFB8/NoPadding");
        cipher.init(Cipher.DECRYPT_MODE, skeySpec, initialVector);
        byte[] encryptedByteArray = (new org.apache.commons.codec.binary.Base64()).decode(encryptedData.getBytes());
        byte[] decryptedByteArray = cipher.doFinal(encryptedByteArray);
        decryptedData = new String(decryptedByteArray, "UTF8");
    } catch (Exception e) {
        LOGGER.debug("Problem decrypting the data", e);
    }
    return decryptedData;
}

资源:http://www.logikdev.com/2010/11/01/encrypt-with-php-decrypt-with-java/

答案 1 :(得分:0)

我认为您最好使用SSL / HTTPS。这将加密您的数据,它将保护客户端免受有人可能创建虚假服务器以拦截流量的可能性。

好处是SSL更容易实现。您只需要一张SSL证书。