我想将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=