在这个问题中,您提到了两种加密算法:AES-256-CBC和MCRYPT_RIJNDAEL_128。这两种算法都是对称加密算法,它们使用相同的密钥进行加密和解密。
AES-256-CBC是一种广泛使用的加密算法,它使用128位的密钥和CBC模式进行加密。它被认为是安全的,并且在许多场景中都被广泛使用。
MCRYPT_RIJNDAEL_128是另一种加密算法,它也使用128位的密钥和CBC模式进行加密。它是一种更早的加密算法,但仍然被广泛使用。
要使这两种算法一起工作,您需要确保您的Ruby和PHP代码使用相同的密钥和初始化向量(IV)进行加密和解密。这是一个使用AES-256-CBC和MCRYPT_RIJNDAEL_128进行加密和解密的示例代码:
require 'openssl'
require 'base64'
key = "your_key_here"
iv = "your_iv_here"
def encrypt_ruby(data)
cipher = OpenSSL::Cipher.new('AES-256-CBC')
cipher.encrypt
cipher.key = key
cipher.iv = iv
encrypted_data = cipher.update(data) + cipher.final
Base64.encode64(encrypted_data)
end
def decrypt_ruby(encrypted_data)
encrypted_data = Base64.decode64(encrypted_data)
decipher = OpenSSL::Cipher.new('AES-256-CBC')
decipher.decrypt
decipher.key = key
decipher.iv = iv
decipher.update(encrypted_data) + decipher.final
end
<?php
$key = "your_key_here";
$iv = "your_iv_here";
function encrypt_php($data) {
$encrypted_data = openssl_encrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($encrypted_data);
}
function decrypt_php($encrypted_data) {
$encrypted_data = base64_decode($encrypted_data);
$decrypted_data = openssl_decrypt($encrypted_data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
return $decrypted_data;
}
?>
请注意,这些示例代码中的key
和iv
变量应该是相同的。您应该使用相同的密钥和初始化向量来加密和解密数据。
在使用这些算法时,请确保您的代码是安全的,并且不会泄露您的密钥和初始化向量。如果可能的话,您可以考虑使用更现代的加密算法,如AES-256-GCM,它提供了更好的安全性和性能。
领取专属 10元无门槛券
手把手带您无忧上云