سؤال

لدي سلسلة مشفرة BEAD64 (مع علامات دولارين، لذلك ليست سلسلة Base64 شائعة)

المشكلة: base64.decode64 (أو .unpack ("m")) فك تشفيرها على ما يرام على جهازي المحلي (Ruby 1.8.6)، ولكن مع Ruby 1.8.5 (الإصدار المستخدم بواسطة Heroku) لا يعمل

أيه أفكار ؟

تعديل:

لدي :

لقد نجحت في فك تشفيرها ب "...". فك ("م") محليا ولكن ليس على خادم Heroku (Ruby 1.8.5، ربما إصدار Ruby غير المشكلة)

هل كانت مفيدة؟

المحلول

علامة الدولار ليست جزءا من مواصفات Base64.

ببساطة تجريد الرائدة $$ قبل تفريغ:

str.sub(/^\$*/, '').unpack('m')

لتجريد جميع الأحرف غير الأساسية 64، محاكاة سلوك جديد (Ruby 1.8.6)،

str.gsub(/[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\+\/]/, '').unpack('m')

سوف Ruby 1.8.6 تجاهل جميع رموز غير Base64 (بما في ذلك $) داخل السلسلة إلى فك التشفير، في حين أن 1.8.5 سيتوقف عن المعالجة في أول شخصية من هذا القبيل (انظر pack.c في مصدر روبي.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top