Ich habe eine sehr grundlegende Verschlüsselungsmodul geschrieben, dass ich einige Werte in einer .yaml Datei zu verschlüsseln verwenden.Warum kommt die Verschlüsselungsmodul unterschiedliche Werte, wenn im in jruby zurückkehrt statt Rubin
require 'OpenSSL'
require 'Base64'
cipher = OpenSSL::Cipher::AES.new(256, :CBC)
cipher.key = ENV['KEY']
cipher.iv = ENV['IV']
cipher.encrypt
encrypted = cipher.update(ARGV[0]) + cipher.final
p Base64.encode64(encrypted).gsub!(/\n/,'')
Wenn ich den Verschlüssler wie so laufen, bekomme ich einen Wert
rvm use jruby-9.0.5.0
jruby encryptor.rb 'password'
4cP7jptj5Z14c2KoXdNf+g==
Wenn ich den Verschlüssler wie folgt ausführen, ich
rvm use ruby-2.2.0
ruby encryptor.rb 'password'
y5ZdDfAGRmK1wQy2e4EOIA==
Im relativ neuen, einen anderen Wert erhalten Verschlüsselung, also kann dies eine geladene (oder einfache) Frage sein, aber warum gibt mein Modul zwei verschiedene Werte zurück, abhängig davon, welchen Interpreter ich verwende?
EDIT: Der Schlüssel ist 32 Bytes, und ich habe die IV-16 geändert Bytes zu sein, und die Ergebnisse unterscheiden sich immer noch zwischen den Dolmetscher.
BEISPIEL SCHLÜSSEL:
key = 1DR337Z5C5CBD94643L9772F96C546AC
iv = 2BR367Z5R5CFD949
@zaph nur hinzugefügt, um sie auf die Frage –
Wie wird die Eingangs Polsterung in jeder behandelt wird ? – zaph
Wenn ich die obigen Eingaben key = "1DR337Z5C5CBD94643L9772F96C546AC", iv = "2BR367Z5R5CFD94: data" "Passwort" mit PKCS # 7 padding erhalte ich: "4cP7jptj5Z14c2KoXdNf + g ==". – zaph