क्रिप्ट :: सीबीसी (पर्ल) और ओपनएसएसएल (रूबी) के बीच ब्लाफिश एन्क्रिप्शन में कोई अंतर क्यों है?पर्ल और रूबी के बीच ब्लाफिश एन्क्रिप्शन में अंतर
पर्ल
use Crypt::CBC;
my $cipher = Crypt::CBC->new(-key => 'length32length32length32length32', -cipher => 'Blowfish');
my $ciphertext = $cipher->encrypt_hex('test');
# ciphertext is 53616c7465645f5f409c8b8eb353823c06d9b50537c92e19
रूबी
require "rubygems"
require "openssl"
cipher = OpenSSL::Cipher::Cipher.new("bf-cbc")
cipher.encrypt
cipher.key = "length32length32length32length32"
result = cipher.update("test") << cipher.final
ciphertext = result.unpack("H*").first
# ciphertext is 16f99115a09e0464
क्रिप्ट :: सीबीसी डिफ़ॉल्ट रूप से उत्पादन के लिए Salted__
prepending जा रहा है। क्या आप समझा सकते हैं कि इनके बीच क्या अंतर है? क्या ओपनएसएसएल क्रिप्ट :: सीबीसी के समान तरीके से व्यवहार करने का कोई तरीका है?
पर्ल स्क्रिप्ट प्रत्येक बार चलाने पर अलग-अलग आउटपुट उत्पन्न करती है। "नमकीन__" के बाद आउटपुट में 8 बाइट नमक हैं जो मॉड्यूल पाठ को एन्क्रिप्ट करने के लिए उपयोग किया जाता है (मुझे नहीं पता कि वह जानकारी सहायक है या नहीं)। – mob
@mob: वह वास्तव में इसे समझाता है। यह प्रारंभिक वेक्टर है। अन्यथा, एक दिया गया इनपुट हमेशा एक ही चीज़ को एन्क्रिप्ट करता है, जो जानकारी का खुलासा करता है। जोएपेस्ट्रो, यह शायद "आप अपने स्वयं के क्रिप्टो प्रोटोकॉल का आविष्कार क्यों कर रहे हैं" के अंतर्गत आता है – derobert