Ho bisogno di scambiare con un'API PHP che cripta le richieste e le risposte. Dalla mia parte sono in rails 4.0.0 (ruby 2.0) e non riesco a farlo funzionare.Come posso crittografare 128 CFB in Ruby?
Ho letto molte risposte su questo argomento e ho cercato di capire come funziona mcrypt, ad es. http://www.chilkatsoft.com/p/php_aes.asp, ma senza successo. Non riesco ancora a decifrare il codice crittografato da PHP o crittografare qualcosa che il PHP può decodificare
Potrebbe aiutarmi per favore e vedere cosa sto facendo male?
codice PHP: Codice
$secretKey = "1234567891234567";
$encrypt = urlencode(base64_encode(mcrypt_encrypt(
MCRYPT_RIJNDAEL_128,
md5($secretKey),
$cleartext,
MCRYPT_MODE_CFB,
$secretKey
)));
$input = urldecode($input);
$decrypt = mcrypt_decrypt(MCRYPT_RIJNDAEL_128,
md5($secretKey),
base64_decode($input),
MCRYPT_MODE_CFB,
$secretKey);
Rubino:
def self.encode(params = {})
cipher = OpenSSL::Cipher::AES.new(256, :CFB)
cipher.encrypt
cipher.key = Digest::MD5.hexdigest("1234567891234567")
cipher.iv = "1234567891234567"
encrypted = cipher.update(params.to_query) + cipher.final
CGI.escape(Base64.strict_encode64(encrypted))
end
def self.decode(answer)
decrypted = Base64.decode64(CGI.unescape(answer))
decipher = OpenSSL::Cipher::AES.new(256, :CFB)
decipher.decrypt
decipher.key = Digest::MD5.hexdigest("1234567891234567")
decipher.iv = "1234567891234567"
decoded = decipher.update(decrypted) + decipher.final
end
Avete confrontato l'output delle funzioni MD5, soprattutto se sono maiuscole o minuscole (PS se questo risolve il problema, vorrei postare questa risposta come risposta) –
Questo era il mio primo assegno, l'md5, Base64.encode64 e l'urlencode. Ma per la cronaca: mp5 php: fb77fc7f384d0c2bc555701e57a9e589 md5 rubino: fb77fc7f384d0c2bc555701e57a9e589 – Stephanie
Beh, questo mi lascia perplesso. Immagino di poter eseguire solo il debug della risposta, ma questo significa che il mio interprete PHP e Ruby è attivo e funzionante ... già votato. –