PHP和Java 3DES加密效果不尽相同

时间:2016-11-22 07:55:04

标签: java php encryption

我想将PHP中的加密复制到JAVA,但结果并不相同。

我试着搜索,没有运气。

PHP

function encryptData($input, $key_seed = "1234567890123") {
    $key = substr(md5($key_seed), 0, 24);
    $iv_size = mcrypt_get_iv_size(MCRYPT_TRIPLEDES, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

    // encrypt       
    $encrypted_data = mcrypt_encrypt(MCRYPT_TRIPLEDES, $key, $input, MCRYPT_MODE_ECB, $iv);
    // clean up output and return base64 encoded 
    $encrypted_data = base64_encode($encrypted_data);
    return $encrypted_data;
}

echo "Encrypted: ".encryptData("abcdefgh");

Encrypted: l\/ExrqsHBZg=

JAVA

public String encrypt(String message) throws Exception {

        final MessageDigest md = MessageDigest.getInstance("md5");
        final byte[] digestOfPassword = md.digest("1234567890123".getBytes());
        final byte[] keyBytes = Arrays.copyOf(Arrays.copyOf(digestOfPassword, 12), 24);

        DESedeKeySpec spec = new DESedeKeySpec(keyBytes);
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
        SecretKey theKey = keyFactory.generateSecret(spec);
        Cipher cipher = Cipher.getInstance("DESede/ECB/NoPadding");
        cipher.init(Cipher.ENCRYPT_MODE, theKey);
        byte[] plaintext = message.getBytes();
        byte[] encrypted = cipher.doFinal(plaintext);

        final String encodedCipherText = Base64.getEncoder().encodeToString(encrypted);

        return encodedCipherText;
    }

System.out.println("Encrypted: "+encrypt("abcdefgh"));

Encrypted: 27Zx94xwikE=

0 个答案:

没有答案