Шифрование в PHP (mcrypt), дешифрование в Ruby (OpenSSL :: Cipher)
я работаю над кросс-языковым проектом, обертывающим API-интерфейс ruby / Sinatra в PHP для использования другой командой. Никакая информация, предоставляемая API, не является конфиденциальной, но мы бы предпочли, чтобы она не была легко доступна для случайного наблюдателя, угадывающего URL.
private function generateSliceIDToken($key){
$currentEpoch = time();
$ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);
$encryptedBytes = mcrypt_encrypt(
MCRYPT_RIJNDAEL_128,
$key,
$currentEpoch.**Passcode**,
MCRYPT_MODE_CBC, $iv
);
$ivAndEncryptedBytes = $iv . $encryptedBytes;
return urlencode(urlencode(base64_encode($ivAndEncryptedBytes)));
Код выше Зашифровывает пароль и отметку времени, используя mcrypt 'Реализация RIJNDAEL и ее кодирование для отправки в ruby API
if identifier.validate_token Base64.decode64(URI.unescape( URI.unescape(params[:token])))
Синатра хватает его и декодирует
def validate_token(token)
cipher = OpenSSL::Cipher::AES.new(128, 'CBC')
cipher.decrypt
cipher.key = **key**
cipher.iv = token[0,16]
plain = cipher.update(token[16..-1]) + cipher.final
return plain[10,8] == **Passcode**
end
и передает его для расшифровки
Проблема в том, что расшифровка завершается сПлохой расшифровка ошибка
Мне поверили, что МакриптS RIJNDAEL и Cipher 'S AES были совместимы, но это предположение неверно? Любая помощь, которую я могу получить, была бы наиболее полезной.