0
Ich habe folgende Verschlüsselungs-/Entschlüsselungs-OpenSSL (unter Linux in meinem Beispiel):Rubin OpenSSL DER Codierung "falsch endgültige Blocklänge"
$ echo test | openssl des -a -K 79616d7379616d73 -iv 1234567890ABCDEF
+ax5NT+Pjh0=
$ echo +ax5NT+Pjh0= | openssl des -a -d -K 79616d7379616d73 -iv 1234567890ABCDEF
test
alles gut. Ich muss es in Ruby-Code übersetzen. Soweit ich tat:
#!/usr/bin/env ruby
require 'openssl'
key = "\x79\x61\x6d\x73\x79\x61\x6d\x73"
iv = "\x12\x34\x56\x78\x90\xAB\xCD\xEF"
todecode = "+ax5NT+Pjh0="
def decode(encryptedString, key, iv)
decrypt = OpenSSL::Cipher::Cipher.new('des-cbc')
decrypt.decrypt
decrypt.key = key
decrypt.iv = iv
decrypt.update(encryptedString) + decrypt.final
end
decoded = decode(todecode, key, iv)
puts decoded
Es wirft mir den folgenden Fehler:
decode.rb:14:in `final': wrong final block length (OpenSSL::Cipher::CipherError)`
Was mache ich falsch? Habe ich die falsche Verschlüsselung oder falsche Verwendung von Schlüssel/iv gewählt?
Kleine nit ... Verwenden 'Echo -n', nicht' echo' (es sei denn, Sie die neue Linie wollen). Aber es ist wahrscheinlich nicht die Ursache Ihres Problems. – jww