বেইস 64 ডেটা যাচাই করতে বা স্যানিটাইজ করার জন্য কোনও রেজিএক্স ব্যবহার করা সম্ভব? এটি সহজ প্রশ্ন, তবে যে প্রশ্নগুলি এই প্রশ্নটিকে চালিত করে তা হ'ল এটি কঠিন।
আমার কাছে একটি বেস 64 ডিকোডার রয়েছে যা আরএফসি স্পেস অনুসরণ করতে ইনপুট ডেটার উপর পুরোপুরি নির্ভর করতে পারে না। সুতরাং, আমি যে সমস্যার মুখোমুখি হচ্ছি সেগুলি হ'ল সম্ভবত বেস like64 ডেটা যেমন 78৮ ভাগে বিভক্ত না হয়ে যেতে পারে (আমার মনে হয় এটি 78 78, আমাকে আরএফসির দ্বিগুণ পরীক্ষা করতে হবে, সুতরাং সঠিক সংখ্যাটি ভুল হলে আমাকে ডিঙ্গ করবেন না) চরিত্রটি লাইনগুলি বা লাইনগুলি সিআরএলএফ-এ শেষ নাও হতে পারে; এতে এটির কেবলমাত্র একটি সিআর, বা এলএফ থাকতে পারে বা নাও থাকতে পারে।
সুতরাং, আমার কাছে বেস 64 data ডেটা যেমন ফর্ম্যাট করা হয়েছে তা সময় নষ্ট করে ফেলেছে। এর কারণে, নীচের মতো উদাহরণগুলি নির্ভরযোগ্যভাবে ডিকোড করা অসম্ভব হয়ে পড়ে। আমি কেবল বংশবৃদ্ধির জন্য আংশিক MIME শিরোনাম প্রদর্শন করব।
Content-Transfer-Encoding: base64
VGhpcyBpcyBzaW1wbGUgQVNDSUkgQmFzZTY0IGZvciBTdGFja092ZXJmbG93IGV4YW1wbGUu
ঠিক আছে, এতগুলি পার্সিং করা কোনও সমস্যা নয় এবং ঠিক এটিই আমরা প্রত্যাশা করব। এবং 99% ক্ষেত্রে, বাফারের প্রতিটি চরটি একটি বৈধ বেস 64 চর, কমপক্ষে যাচাই করতে কোনও কোড ব্যবহার করে নিখুঁতভাবে কাজ করে। তবে, পরবর্তী উদাহরণটি মিশ্রণে একটি রেঞ্চ ফেলে দেয়।
Content-Transfer-Encoding: base64
http://www.stackoverflow.com
VGhpcyBpcyBzaW1wbGUgQVNDSUkgQmFzZTY0IGZvciBTdGFja092ZXJmbG93IGV4YW1wbGUu
এটি বেস 64৪ এনকোডিংয়ের একটি সংস্করণ যা আমি কিছু ভাইরাস এবং অন্যান্য জিনিসগুলিতে দেখেছি যা কিছু মেল পাঠককে সমস্ত মূল্যে মাইমকে পার্স করার ইচ্ছা পোষণ করে, বইটি বা কঠোরভাবে আরএফসি দ্বারা কঠোরভাবে যায়; আপনি যদি।
আমার বেস 64 ডিকোডারটি নীচের ডেটা স্ট্রিমের দ্বিতীয় উদাহরণটি ডিকোড করে। এবং এখানে মনে রাখবেন, মূল স্ট্রিমটি সমস্ত ASCII ডেটা!
[0x]86DB69FFFC30C2CB5A724A2F7AB7E5A307289951A1A5CC81A5CC81CDA5B5C1B19481054D0D
2524810985CD94D8D08199BDC8814DD1858DAD3DD995C999B1BDDC8195E1B585C1B194B8
উভয় সমস্যা একবারে সমাধান করার জন্য কারও কি ভাল উপায় আছে? আমি নিশ্চিত নই যে এটি এমনকি সম্ভব, এর বাইরেও বিভিন্ন বিধি প্রয়োগ করে এবং ফলাফলের সাথে তুলনা করে ডেটাতে দুটি রূপান্তর করা। তবে আপনি যদি এই পদ্ধতিটি গ্রহণ করেন তবে আপনি কোন আউটপুটে বিশ্বাস করবেন? দেখে মনে হয় যে ASCII হিউরিস্টিক্সই সেরা সমাধান সম্পর্কে রয়েছে , তবে ভাইরাস স্ক্যানারের মতো জটিল কিছুতে আরও কী কোড, যুক্তকরণের সময় এবং জটিলতা যুক্ত হবে, যা এই কোডটি আসলে জড়িত? বেস 64 কী গ্রহণযোগ্য এবং কী নয় তা শিখতে আপনি কীভাবে হিউরিস্টিক ইঞ্জিনকে প্রশিক্ষণ দেবেন?
হালনাগাদ:
এই প্রশ্নটি যে মতামতটি অব্যাহত রেখেছে তার সংখ্যাটি করুন, আমি সিদ্ধান্ত নিয়েছি যে আমি এখন সিজি # অ্যাপ্লিকেশনটিতে 3 বছর ধরে ব্যবহার করছি, কয়েক হাজার লেনদেন সহ সাধারণ রেগেক্স পোস্ট করব। সত্যি বলতে, আমি গম্বোর দেওয়া উত্তরটি সবচেয়ে পছন্দ করি , এজন্যই আমি এটি নির্বাচিত উত্তর হিসাবে বেছে নিয়েছি। তবে যে কেউ সি # ব্যবহার করছেন এবং কমপক্ষে একটি স্ট্রিং বা বাইট [] এর মধ্যে বৈধ বেস 64 ডেটা রয়েছে কি না তা সনাক্ত করার জন্য খুব দ্রুত উপায় সন্ধান করছেন, আমি নিম্নলিখিতটি আমার পক্ষে খুব ভালভাবে কাজ করতে পেয়েছি।
[^-A-Za-z0-9+/=]|=[^=]|={3,}$
এবং হ্যাঁ, এটি কেবল বেস64 data০ এর একটি STRING এর জন্য , সঠিকভাবে ফর্ম্যাটেড আরএফসি 1341 বার্তা নয়। সুতরাং, আপনি যদি এই ধরণের ডেটা নিয়ে কাজ করে থাকেন তবে উপরের RegEx ব্যবহার করার চেষ্টা করার আগে দয়া করে এটিকে বিবেচনা করুন। আপনি Base16, Base32, Radix বা এমনকি অন্য কাজে (URL গুলি, ফাইল নাম, XML এনকোডিং, ইত্যাদি) জন্য করুন Base64- সাথে ডিল করা হয়, তাহলে এটি করা হয় অত্যন্ত সুপারিশ করছি যে আপনি পড়তে RFC4648 যে গাম্বো তার উত্তর উল্লেখিত হিসাবে আপনি ভাল হতে হবে এই প্রশ্ন / উত্তর সেটে পরামর্শগুলি ব্যবহার করার চেষ্টা করার আগে বাস্তবায়ন দ্বারা প্রয়োগ করা চরসেট এবং টার্মিনেটর সম্পর্কে সচেতন।