বেস 64 এনকোডিংয়ের জন্য কী ব্যবহার করা হয়?


781

আমি এখানে এবং সেখানে লোকদের "বেস 64 এনকোডিং" সম্পর্কে কথা বলতে শুনেছি। এটা কি কাজে লাগে?


1
বেস 64 (এনকোড) এর ম্যানুয়াল থেকে : "এই এনকোডিংটি বাইনারি ডেটা 8-বিট পরিষ্কার নয়, যেমন মেল বডিগুলির মতো পরিবহন স্তরগুলির মাধ্যমে পরিবহণে টিকে থাকতে পারে" "
এখনও_ড্রিমিং_1

উত্তর:


939

আপনার যখন কোনও বাইনারি ডেটা থাকে যা আপনি কোনও নেটওয়ার্ক জুড়ে পাঠাতে চান, আপনি সাধারণত এটি কোনও কাঁচা ফর্ম্যাটে তারের উপরে বিট এবং বাইটগুলি স্ট্রিমিং করে না। কেন? কারণ কিছু মিডিয়া স্ট্রিমিং পাঠ্যের জন্য তৈরি। আপনি কখনই জানেন না - কিছু প্রোটোকল আপনার বাইনারি ডেটাটিকে নিয়ন্ত্রণের অক্ষর হিসাবে (যেমন একটি মডেম) ব্যাখ্যা করতে পারে বা আপনার বাইনারি ডেটা স্ক্রু করা যেতে পারে কারণ অন্তর্নিহিত প্রোটোকল মনে করতে পারে আপনি একটি বিশেষ অক্ষর সংমিশ্রণ প্রবেশ করেছেন (যেমন এফটিপি কীভাবে লাইন অনুবাদ করে শেষা w শ)।

সুতরাং এটি পেতে, লোকেরা বাইনারি ডেটাগুলিকে অক্ষরগুলিতে এনকোড করে। বেস 64 এই জাতীয় এনকোডিংগুলির মধ্যে একটি।

কেন 64?
কারণ আপনি অনেকগুলি চরিত্রের সেটগুলিতে উপস্থিত একই characters৪ টি চরিত্রের উপর নির্ভর করতে পারেন এবং আপনি যথাযথভাবে আত্মবিশ্বাসের সাথে বলতে পারেন যে আপনার ডেটাটি তারের অন্যদিকে অবরুদ্ধ হয়ে যাবে।


104
(তত্ত্বের ভিত্তিতে আপনি বেস -80 এনকোডিং বা অনুরূপ কিছু করতে পারেন তবে এটি উল্লেখযোগ্যভাবে শক্ত হবে two দু'জনের
শক্তিই বাইনারিগুলির

13
@ ইয়োকিজ: এর কোনও গ্যারান্টি নেই, এগুলি কেবলমাত্র অক্ষর যা প্রায় সবসময় নিরাপদ। এ কারণেই বেস -৪৪ এর একাধিক ফর্ম রয়েছে ( en.wikedia.org/wiki/Base-64 )।

8
তার মানে কি এই যে সমস্ত নেটওয়ার্ক টাইপ ডেটা পাসিংয়ে কোনও ধরণের এনকোডিং ব্যবহার করা উচিত?
ট্যানার গ্রীষ্ম

6
তবে স্ট্রিং ডেটা এনকোড করতে বেস 64 পদ্ধতিটি কেন ব্যবহার করা হয়? যেমন জাভাস্ক্রিপ্ট অটোব ফাংশনে, কোনও জেসন ফাইলকে বেস64 64 ফর্ম্যাটে এনকোড করার জন্য সার্ভারটির অর্থ আছে? বিশেষ অক্ষরগুলি ব্যবহারের ক্ষেত্রে হতে পারে তবে কেন সেই ক্ষেত্রে utf8 নয়, সেগুলি কি সামঞ্জস্যপূর্ণ? এটি সম্পর্কিত যে কোনও সংস্থান প্রশংসা করবে ধন্যবাদ আপনাকে।
partizanos

4
কমপক্ষে কিছু প্রোটোকলের একটি তালিকা যা ব্যর্থ হবে তা যদি কেউ জানে তবে ভাল লাগবে।
তাদেজ

202

এটি মূলত ASCII পাঠ্যে স্বেচ্ছাসেবী বাইনারি ডেটা এনকোড করার একটি উপায়। এটি ডেটা প্রতি 3 বাইটে 4 টি অক্ষর লাগে, শেষ পর্যন্ত সামান্য সম্ভাব্য প্যাডিং।

মূলত ইনপুটটির প্রতিটি 6 টি বিট একটি 64-অক্ষরের বর্ণমালায় এনকোড করা হয়। "স্ট্যান্ডার্ড" বর্ণমালা AZ, az, 0-9 এবং + এবং / ব্যবহার করে = সহ একটি প্যাডিং চরিত্র হিসাবে। URL- নিরাপদ রূপগুলি রয়েছে var

উইকিপিডিয়া আরও তথ্যের একটি যুক্তিসঙ্গত ভাল উত্স।


পিএইচপি এর মতো ল্যাঙ্গ্যাজে, বাইনারি ডেটা আসবে। আমরা প্রায় সবসময় স্ট্রিং ডেটা দিয়ে কাজ করি যা পাঠ্য।
চোলঠি পল টিটিওপিক

3
@ চোলথিপলটিটিওপিক: এনক্রিপশন বা সংক্ষেপণের ফলাফল, বা শব্দ / চিত্র / ভিডিও।
জন স্কিটি

1
@ কলথিপলটিটিওপিক: আমি আশঙ্কা করি "স্টোরেজ সম্পর্কে কী" আপনি কী বোঝাতে চেয়েছেন তা সম্পর্কে আমার কোনও ধারণা নেই তবে এই মুহুর্তে আমি মনে করি আমরা কিছুটা অফ-টপিক।
জন স্কিটি

2
@ কলথিপলটিটিওপিক: আমি "স্ট্রিং বাইনারি" এর ক্ষেত্রে বিবেচনা করা দৃ strongly়ভাবে এড়াতে চাই। বাইনারি ডেটা বাইনারি ডেটা হিসাবে গণ্য করা উচিত, এবং পাঠ্য হিসাবে বিবেচিত হবে না । আমি আক্ষরিক অর্ধেক দেখেছি - সম্ভবত হাজার হাজার - এসওতে প্রশ্নগুলি যা মূলত এই পার্থক্যের জন্য যথেষ্ট যত্ন নিচ্ছেন না এমন লোকদের কাছে ফোটায়।
জন স্কিটি

1
@ still_dreaming_1 পিএইচপি তাদের কল করে binary strings। (উত্স) php.net/manual/en/function.pack.php
চোলঠি পল টিটিওপিক

123

বেস-64৪ এনকোডিং বাইনারি ডেটা নেওয়ার এবং এটি পাঠ্যে রূপান্তর করার একটি উপায় যা এটি আরও সহজেই ইমেল এবং এইচটিএমএল ফর্ম ডেটার মতো জিনিসগুলিতে সঞ্চারিত হয়।

http://en.wikipedia.org/wiki/Base64


116

এটি বাইনারি ডেটার একটি পাঠ্য এনকোডিং যেখানে ফলস্বরূপ পাঠ্যটিতে অক্ষর, সংখ্যা এবং চিহ্নগুলি "+", "/" এবং "=" ছাড়া কিছুই নেই। এটি পাঠ্য ডেটার জন্য বিশেষত ব্যবহৃত মিডিয়াতে বাইনারি ডেটা সংরক্ষণ / সঞ্চার করার একটি সুবিধাজনক উপায়।

তবে বেস -৪৪ কেন? বাইনারি তথ্যগুলি পাঠ্যে রূপান্তর করার জন্য দুটি বিকল্প যা অবিলম্বে মনে মনে বসন্ত হয়:

  1. দশমিক: প্রতিটি বাইটের দশমিক মানটিকে তিনটি সংখ্যা হিসাবে সঞ্চয় করুন: 045 112 101 037 ইত্যাদি যেখানে প্রতিটি বাইট 3 বাইট দ্বারা প্রতিনিধিত্ব করা হয়। ডেটা তিনগুণ ফোলাচ্ছে।
  2. হেক্সাডেসিমাল: বাইটসকে হেক্স জোড়া হিসাবে সংরক্ষণ করুন: এসি 47 0 ডি 1 এ ইত্যাদি যেখানে প্রতিটি বাইট 2 বাইট দ্বারা প্রতিনিধিত্ব করা হয়। ডেটা দ্বিগুণ হয়।

বেস-64৪ মানচিত্র 3 বাইট (8 x 3 = 24 বিট) 4 অক্ষরে 6-বিটস (6 x 4 = 24 বিট) বিস্তৃত। ফলাফলটি "TWFuIGlzIGRpc3Rpb ..." এর মতো কিছু দেখাচ্ছে। সুতরাং ফোলা ফোলাটি আসল মাত্র 4/3 = 1.3333333 গুণ।


10
আমি কি সঠিকভাবে বুঝতে পারি যে two৪ টি সেরা পছন্দ কারণ এটি দুটির সর্বোচ্চ শক্তি যা মুদ্রণযোগ্য এএসসিআইআই অক্ষরে রূপান্তরিত হয় (এর মধ্যে 95 রয়েছে)?
ভোহো

যদি উভয় ক্ষেত্রেই তারা 24 বিট হয়, তবে কি ফুল ফোটানো 1: 1 নয়? অথবা আপনি যখন 4 টি বিট বিস্তৃত 4 টি অক্ষর বলছেন, আপনি কি বোঝাতে চাইছেন যে প্রতি চরে আসলে 8 টি বিট রয়েছে তবে প্রথম দুটি দুটি 0 প্যাডযুক্ত?
ডেভিড ক্লেম্পফনার

1
@ ব্যাকওয়ার্ডস_ড্যাভ প্রতিটি 6 টি বিট 8 বিটে প্রকাশিত হয় সুতরাং ফোলা 8: 6, বা 4: 3।
এটস গোলাল

82

ইতিমধ্যে যা বলা হয়েছে সেগুলি বাদ দিয়ে, দুটি খুব সাধারণ ব্যবহার যা তালিকাভুক্ত করা হয়নি are

হ্যাশ:

হ্যাশগুলি একমুখী ফাংশন যা 128 বিট বা 256 বিট (এসএএএ / এমডি 5) এর মতো একটি নির্দিষ্ট আকারের বাইটের অন্য একটি ব্লকে বাইটের একটি ব্লককে রূপান্তর করে। ফলস্বরূপ বাইটগুলি বেস 64 এ রূপান্তর করা হ্যাশ প্রদর্শন করা আরও সহজ করে তোলে বিশেষত আপনি যখন সততার জন্য চেকসামের তুলনা করছেন। বেস 64 এ হ্যাশগুলি প্রায়শই দেখা যায় যে অনেকেই বেস 64 কে হ্যাশ হিসাবে ভুল করে।

ক্রিপ্টোগ্রাফি:

যেহেতু একটি এনক্রিপশন কীটি টেক্সট হতে না হয় তবে কাঁচা বাইট থাকে কখনও কখনও এটি কোনও ফাইল বা ডাটাবেসে সংরক্ষণ করা প্রয়োজন, যা বেস 64৪ ব্যবহারের জন্য আসে। ফলাফল এনক্রিপ্ট করা বাইট একই।

নোট করুন যে যদিও বেস 64৪ প্রায়শই ক্রিপ্টোগ্রাফিতে ব্যবহৃত হয় তবে এটি কোনও সুরক্ষা ব্যবস্থা নয়। যে কেউ বেস 64 স্ট্রিংটিকে তার মূল বাইটে ফিরে যেতে পারে, সুতরাং এটি কেবল ডেটা সুরক্ষার উপায় হিসাবে ব্যবহার করা উচিত নয়, কেবল আরও সহজে কাঁচা বাইট প্রদর্শন করতে বা সঞ্চয় করতে ফর্ম্যাট হিসাবে।

সার্টিফিকেট

পিইএম ফর্ম্যাটে x509 শংসাপত্রগুলি বেস 64 এনকোডযুক্ত। http://how2ssl.com/articles/working_with_pem_files/


4
প্রচুর ক্ষেত্রে বাইট হিসাবে বাইট সংরক্ষণ করা প্রকৃত পক্ষে প্রসেসিংয়ের মতো। এমনকি একটি ডাটাবেসে এবং বিশেষত কোনও ফাইলে (যদি নির্দিষ্ট দৈর্ঘ্যের রেকর্ড ব্যবহার করা হয়, বা বাইটগুলি কেবলমাত্র সামগ্রী হয়)। বেস 64 সাধারণত ব্যবহৃত হয় যখন সেই বাইটগুলি অন্য কোথাও প্রেরণের উদ্দেশ্যে করা হয় , বিশেষত এমন একটি চ্যানেলের উপরে যা বিটগুলি বন্ধ করে দিতে পারে বা কিছু বাইটকে নিয়ন্ত্রণ কোড হিসাবে ব্যাখ্যা করতে পারে।
সিএইচও

আমি স্বাক্ষরযুক্ত 8 বিট ইন্টিজার, 0,1,255,36 ... হিসাবে লিখিত একটি হ্যাশ কখনও দেখিনি ... এবং এটি ইউটিএফ -8 বা অন্য কোনও এনকোডিং দিয়ে দেখানো অর্থহীন হবে না, বেস 64 ছাড়া আপনি অন্য কীভাবে প্রদর্শন করবেন? এনক্রিপশন কী এবং এনক্রিপ্ট করা ডেটা প্রায়শই কনফিগারেশন এবং এক্সএমএল ফাইলে সংরক্ষণ করা হয় যেখানে আপনি কাঁচা বাইট সংরক্ষণ করতে পারবেন না। আমি সম্মত হই যদি আপনি এটি কোনও উপায়ে কাঁচা বাইট হিসাবে সংরক্ষণ করতে পারেন তবে বেস 64 সেই পরিস্থিতিতে রয়েছে যখন আপনি পারবেন না। ট্রান্সমিশনের বাইরেও বেস 64 এর অনেকগুলি ব্যবহার রয়েছে। এটি কেবল দুটি সাধারণ পরিস্থিতি যেখানে আপনি এটি দেখতে পাবেন।
ডেস্পের্টার

1
আপনি হ্যাশটিকে দশমিক নয়, হেক্স হিসাবে প্রদর্শন করবেন। হ্যাশগুলির জন্য, এটি বাস্তবে বেস 64 এর চেয়ে অনেক বেশি সাধারণ।
সিএইচও

@ সিএওও হ্যাঁ, এটিও সাধারণ। হেক্স ডিজিটগুলি যে কোনও বাইনারি ডেটা উপস্থাপন করতে পারে তবে বেস 64 এর বেশি অক্ষর ব্যবহার করার কারণে অনেক কম স্থান গ্রহণের সুবিধা রয়েছে।
দেশপারটার

45

বহু বছর আগে, যখন মেলিং কার্যকারিতা প্রবর্তন করা হয়েছিল, তাই সময়টি যেমন পাঠানো হয়েছিল ততক্ষণে চিত্র এবং মিডিয়া (অডিও, ভিডিও ইত্যাদি) এর মতো সংযুক্তিগুলির প্রয়োজন উপস্থিত হয়েছিল। এই সংযুক্তিগুলি যখন ইন্টারনেটে প্রেরণ করা হয় (যা মূলত বাইনারি ডেটার আকারে থাকে) তখন বাইনারি ডেটাগুলি দূষিত হওয়ার সম্ভাবনা এর কাঁচা আকারে বেশি থাকে। সুতরাং, এই সমস্যাটি মোকাবেলায় BASE64 পাশাপাশি এসেছিল।

বাইনারি ডেটা নিয়ে সমস্যাটি হ'ল এতে নাল অক্ষর রয়েছে যা সি, সি ++ এর মতো কিছু ভাষায় অক্ষর স্ট্রিংয়ের সমাপ্তি উপস্থাপন করে সুতরাং এনআইএলএল বাইটস সহ কাঁচা আকারে বাইনারি ডেটা প্রেরণ কোনও ফাইলকে পুরোপুরি পড়া থেকে বিরত করবে এবং কোনও দুর্নীতিগ্রস্থ ডেটাতে নেতৃত্ব দেবে।

উদাহরণ স্বরূপ :

সি এবং সি ++ এ, এই "নাল" অক্ষরটি একটি স্ট্রিংয়ের শেষ দেখায়। সুতরাং "হেল্লো" এইভাবে সংরক্ষণ করা হয়:

হ্যালো

72 69 76 76 79 00

00 বলে "এখানে থামো"।

এখন আসুন কীভাবে BASE64 এনকোডিং কাজ করে তাতে ঝাঁপ দাও।

লক্ষণীয় বিষয়: স্ট্রিংয়ের দৈর্ঘ্য 3 এর একাধিক হওয়া উচিত।

উদাহরণ 1:

স্ট্রিংটি এনকোড করা হবে: "টেক্কা", দৈর্ঘ্য = 3

1) প্রতিটি অক্ষর দশমিক রূপান্তর করুন।

a = 97, c = 99, e = 101

এখানে চিত্র বর্ণনা লিখুন

2) প্রতিটি দশমিক 8 বিট বাইনারি উপস্থাপনায় পরিবর্তন করুন।

97 = 01100001, 99 = 01100011, 101 = 01100101

সংযুক্ত: 01100001 01100011 01100101

3) 6-বিটের একটি গ্রুপে আলাদা করুন।

011000 010110 001101 100101

4) বাইনারি দশমিক থেকে গণনা করুন

011000 = 24, 010110 = 22, 001101 = 13, 100101 = 37

5) বেস64 chart চার্টটি ব্যবহার করে বেস64 এ দশমিক অক্ষরগুলি আবরণ করুন।

24 = ওয়াই, 22 = ডব্লু, 13 = এন, 37 = লি

"Ace" => "YWNl"

এখানে চিত্র বর্ণনা লিখুন

উদাহরণ 2:

স্ট্রিংটি এনকোড করার জন্য: "abcd" দৈর্ঘ্য = 4, এটি 3 এর একক নয়, সুতরাং স্ট্রিংয়ের দৈর্ঘ্য 3 এর একাধিক করতে, দৈর্ঘ্য = 6 করার জন্য আমাদের অবশ্যই 2 বিট প্যাডিং যুক্ত করতে হবে "প্যাডিং বিট" = "চিহ্ন দ্বারা প্রতিনিধিত্ব করা হয়েছে।

লক্ষণীয় বিষয়: একটি প্যাডিং বিট দুটি শূন্যের সমান 00 তাই দুটি প্যাডিং বিটের সমান চারটি শূন্য 0000।

সুতরাং প্রক্রিয়া শুরু করা যাক:

1) প্রতিটি অক্ষর দশমিক রূপান্তর করুন।

a = 97, b = 98, c = 99, d = 100

2) প্রতিটি দশমিক 8 বিট বাইনারি উপস্থাপনায় পরিবর্তন করুন।

97 = 01100001, 98 = 01100010, 99 = 01100011, 100 = 01100100

3) 6-বিটের একটি গ্রুপে পৃথক করুন।

011000, 010110, 001001, 100011, 011001, 00

সুতরাং শেষ 6-বিটটি সম্পূর্ণ নয় তাই আমরা দুটি প্যাডিং বিট sertোকান যা চারটি শূন্যের সমান "0000"।

011000, 010110, 001001, 100011, 011001, 000000 ==

এখন, এটি সমান। শেষে দুটি সমান চিহ্ন দেখায় যে 4 টি শূন্য যুক্ত হয়েছিল (ডিকোডিংয়ে সহায়তা করে)।

4) বাইনারি দশমিক থেকে গণনা করুন।

011000 = 24, 010110 = 22, 001001 = 9, 100011 = 35, 011001 = 25, 000000 = 0 ==

5) বেস64 chart চার্টটি ব্যবহার করে বেস64 এ দশমিক অক্ষরগুলি আবরণ করুন।

24 = ওয়াই, 22 = ডব্লিউ, 9 = জে, 35 = জে, 25 = জেড, 0 = এ ==

"Abcd" => "YWJjZA =="


5
এটি সত্যিই একটি দুর্দান্ত ব্যাখ্যা
maheshmnj

28

কম্পিউটারের প্রথম দিনগুলিতে, যখন টেলিফোন লাইন আন্ত-সিস্টেম যোগাযোগ বিশেষভাবে নির্ভরযোগ্য ছিল না, তথ্যের অখণ্ডতা যাচাই করার জন্য একটি দ্রুত এবং নোংরা পদ্ধতি ব্যবহার করা হয়েছিল: "বিট প্যারিটি"। এই পদ্ধতিতে, সংক্রমণিত প্রতিটি বাইটে 7-বিট ডেটা থাকবে এবং অষ্টমটি 1 বা 0 হবে, বাইটের মোট 1 বিটের সংখ্যাকে সমান করতে বাধ্য করতে।

সুতরাং 0x01 0x81 হিসাবে সংক্রমণিত হবে; 0x02 0x82 হবে; 0x03 0x03 ইত্যাদি থাকবে etc.

এই সিস্টেমটিকে আরও এগিয়ে নিতে, যখন ASCII অক্ষর সেটটি সংজ্ঞায়িত করা হয়েছিল, কেবলমাত্র 00-7F অক্ষর নির্ধারিত হয়েছিল। (এখনও আজও, ৮০-এফএফ পরিসরে সেট করা সমস্ত অক্ষর মানহীন)

দিনের অনেক রাউটার প্যারিটি চেক এবং বাইট অনুবাদকে হার্ডওয়ারে রেখে দেয়, তাদের সাথে সংযুক্ত কম্পিউটারগুলিকে 7-বিট ডেটা নিয়ে কঠোরভাবে মোকাবেলা করতে বাধ্য করে। এটি ইমেল সংযুক্তিগুলিকে (এবং অন্যান্য সমস্ত ডেটা, যে কারণে এইচটিটিপি এবং এসএমটিপি প্রোটোকলগুলি পাঠ্য-ভিত্তিক) জোর করে, কেবলমাত্র পাঠ্য বিন্যাসে রূপান্তরিত করতে বাধ্য করে।

90 এর দশকে কিছুটা রাউটার বেঁচে গিয়েছিল। আমি মারাত্মকভাবে সন্দেহ করি যে সেগুলির মধ্যে যে কোনওটি আজ ব্যবহৃত in


2
এটি একটি আলোচনার একটি দুর্দান্ত বিষয় এবং একটি আকর্ষণীয় ইতিহাস পাঠ, ধন্যবাদ।
ড্যান বেচার্ড

26

Http://en.wikedia.org/wiki/Base64 থেকে

বেস 64 শব্দটি নির্দিষ্ট মাইমির সামগ্রী স্থানান্তর এনকোডিংকে বোঝায়। এটি কোনও অনুরূপ এনকোডিং স্কিমের জেনেরিক শব্দ হিসাবেও ব্যবহৃত হয় যা বাইনারি ডেটাটিকে সংখ্যাসূচকভাবে চিকিত্সা করে এবং বেস 64 এর উপস্থাপনায় অনুবাদ করে এটি এনকোড করে। বেসের বিশেষ পছন্দটি অক্ষর সেট এনকোডিংয়ের ইতিহাসের কারণে হয়: 64৪ টি অক্ষরের একটি সেট বেছে নিতে পারে যা বেশিরভাগ এনকোডিংগুলিতে সাধারণ উপসর্গের উভয় অংশ এবং মুদ্রণযোগ্যও। এই সংমিশ্রণের ফলে ডেটাগুলি সিস্টেমের মাধ্যমে ট্রানজিটে পরিবর্তিত হওয়ার সম্ভাবনা থাকে না, যেমন ইমেল, যা traditionতিহ্যগতভাবে 8-বিট পরিষ্কার ছিল না।

বেস 64 বিভিন্ন প্রসঙ্গে ব্যবহার করা যেতে পারে:

  • বিবর্তন এবং থান্ডারবার্ড ই-মেইল পাসওয়ার্ডগুলিকে অস্পষ্ট করতে বেস 64 ব্যবহার করে [1]
  • বেস 64 টেক্সট প্রেরণ এবং সঞ্চয় করতে ব্যবহার করা যেতে পারে যা অন্যথায় সীমানার সংঘর্ষের কারণ হতে পারে
  • বেস 64 সাধারণত ক্রিপ্টোগ্রাফিক কী পরিচালনার ওভারহেড ব্যয় না করেই অস্পষ্ট গোপনীয়তার জন্য দ্রুত তবে নিরাপত্তাহীন শর্টকাট হিসাবে ব্যবহৃত হয়

  • স্প্যামাররা বেস অ্যান্টি-স্প্যামিং সরঞ্জামগুলি এড়াতে বেস 64 ব্যবহার করে, যা প্রায়শই বেস 64 কে ডিকোড করে না এবং তাই এনকোড হওয়া বার্তাগুলিতে কীওয়ার্ড সনাক্ত করতে পারে না।

  • বেস64 এলডিএফ ফাইলগুলিতে অক্ষরের স্ট্রিংগুলি এনকোড করতে ব্যবহৃত হয়
  • বেস 64 কখনও কখনও এক্সএমএল ফাইলে বাইনারি ডেটা এম্বেড করতে ব্যবহৃত হয় ...... এর মতো একটি সিনট্যাক্স ব্যবহার করে উদাহরণস্বরূপ ফায়ারফক্সের বুকমার্কস html।
  • সরকারী ফিসিক্যাল সিগনেচার প্রিন্টিং ডিভাইসগুলির সাথে যোগাযোগ করার সময় বেস 64 ব্যবহার করা হয় (সাধারণত সিরিয়াল বা সমান্তরাল পোর্টগুলির ওপরে) সই করার জন্য রসিদ অক্ষর স্থানান্তর করার সময় বিলম্ব হ্রাস করতে।
  • বাইরের 64 ফাইলগুলি বাইরের ফাইলগুলি নির্ভর করে এড়াতে স্ক্রিপ্টগুলির মধ্যে চিত্রগুলির মতো বাইনারি ফাইলগুলি এনকোড করতে ব্যবহৃত হয়।
  • ব্যাকগ্রাউন্ড-ইমেজের মতো কোনও সিএসএস বৈশিষ্ট্যে কাঁচা চিত্র ডেটা এম্বেড করতে ব্যবহার করা যেতে পারে।

11

কিছু পরিবহন প্রোটোকল কেবলমাত্র বর্ণানুক্রমিক অক্ষরগুলি সংক্রমণ করার অনুমতি দেয়। কেবল এমন পরিস্থিতিটি কল্পনা করুন যেখানে নিয়ন্ত্রণের অক্ষরগুলি বিশেষ ক্রিয়াকলাপগুলি ট্রিগার করতে ব্যবহৃত হয় এবং / অথবা যা কেবল অক্ষর প্রতি সীমিত বিট প্রস্থকে সমর্থন করে। করুন Base64- এনকোডিং যে শুধুমাত্র আলফানিউমেরিক অক্ষর, ব্যবহার মধ্যে কোনো ইনপুট রূপান্তরিত +, /এবং =একটি প্যাডিং চরিত্র হিসেবে।


8

বেস 64 এর ব্যবহার আমি এখানে বর্ণনা করতে যাচ্ছি কিছুটা হ্যাক। আপনি যদি হ্যাক পছন্দ করেন না, দয়া করে এগিয়ে যান না।

আমি যখন সমস্যায় পড়েছিলাম যখন আমি জানতে পেরেছিলাম যে মাইএসকিউএল এর ইউটিএফ 8 ইউটিউডের 3-বাইট সংস্করণ ব্যবহার করার কারণে 4-বাইট ইউনিকোড অক্ষর সমর্থন করে না। সুতরাং আমি মাইএসকিউএল এর ইউটিএফ 8 এর উপরে ফুল 4 বাইট ইউনিকোড সমর্থন করতে কী করেছি? ওয়েল, ডাটাবেসে স্টোর করার সময় বেস 64 এনকোড স্ট্রিংগুলি এবং পুনরুদ্ধার করার সময় বেস 64 ডিকোড।

বেস 64 এনকোডিং এবং ডিকোডিং খুব দ্রুত হওয়ায় উপরেরগুলি পুরোপুরি সঠিকভাবে কাজ করেছে worked

আপনার নোট নিতে নিম্নলিখিত বিষয়গুলি রয়েছে:

  • বেস 64 এনকোডিংটিতে 33% বেশি স্টোরেজ ব্যবহার করা হয়েছে

  • ডাটাবেসে সঞ্চিত স্ট্রিংগুলি মানব পাঠযোগ্য হবে না (আপনি এটি এমন একটি বৈশিষ্ট্য হিসাবে বিক্রি করতে পারেন যে ডেটাবেস স্ট্রিংগুলি এনক্রিপশনের একটি মৌলিক রূপ ব্যবহার করে)।

ইউনিকোড সমর্থন করে না এমন কোনও স্টোরেজ ইঞ্জিনের জন্য আপনি উপরের পদ্ধতিটি ব্যবহার করতে পারেন।


6
"আপনি এটি একটি বৈশিষ্ট্য হিসাবে বিক্রি করতে পারেন যে ডাটাবেস স্ট্রিংগুলি এনক্রিপশনের একটি মৌলিক রূপ ব্যবহার করে" আমি আপনার স্টাইলটি পছন্দ করি: ডি
এরকান

7
"আপনি এটি একটি বৈশিষ্ট্য হিসাবে বিক্রি করতে পারেন যে ডাটাবেস স্ট্রিংগুলি এনক্রিপশনের একটি মৌলিক রূপ ব্যবহার করে" কী ভয়াবহ কথাটি বলে: ডি
অ্যালেক্স

1
বেস 64 ডিকোড অ্যালগরিদম
রফেল

1
@ অ্যালেক্স মোটেও "বলার মতো ভয়ঙ্কর জিনিস" নয়। দ্বিতীয় ডিগ্রি সংবেদনশীল ডেটা ডিবি প্রশাসকদের দ্বারা অপঠনযোগ্য করতে বেস 64 এনকোড করা ঠিক আছে। তথ্যের প্রতিটি অংশের জন্য সর্বোচ্চ স্তরের এনক্রিপশন থাকা সর্বদা প্রয়োজন হয় না। উদাহরণস্বরূপ, আপনি যদি কোনও ডিবি প্রশাসকের কাছ থেকে "মন্তব্যগুলি" আড়াল করতে চান তবে বেস 64 এই কাজের জন্য উপযুক্ত। Gratcias!
বেসিল মুসা

1
এটি উল্লেখযোগ্য যে মাইএসকিউএল এখন সমস্ত ইউনিকোডের সমর্থন করে, যদিও পিছনের সামঞ্জস্যের উদ্দেশ্যে, তাদের utf8ধরণটি এখনও কেবল তিন-বাইট; আপনি যদি আসল জিনিস চান, ব্যবহার করুন utf8mb4। দুর্দান্ত হ্যাক, তবে আর দরকার নেই।
ট্রিগ

7

এটি স্বেচ্ছাসেবী বাইনারি ডেটা ASCII পাঠ্যে রূপান্তর করার জন্য ব্যবহৃত হয়।

উদাহরণস্বরূপ, ইমেল সংযুক্তি এইভাবে পাঠানো হয়।


7

আমি ওয়েব ব্যবহারের মাধ্যমে বড় বাইনারি অবজেক্টগুলি (চিত্রগুলি) স্থানান্তরিত করার সময় আমি এটি ব্যবহারিক অর্থে ব্যবহার করি। সুতরাং যখন আমি একটি অজগর স্ক্রিপ্ট ব্যবহার করে একটি সি # ওয়েব পরিষেবা পরীক্ষা করছি, তখন বাইনারি অবজেক্টটি একটি সামান্য যাদু দিয়ে তৈরি করা যায়।

[অজগরে]

import base64
imageAsBytes = base64.b64decode( dataFromWS )

1
ডেটা কি দ্রুত ভ্রমণ করে?
FelipM

6

“বেস 64 ইনকোডিং স্কিমগুলি সাধারণত ব্যবহৃত হয় যখন বাইনারি ডেটা এনকোড করার প্রয়োজন হয় যা পাঠ্য ডেটা নিয়ে কাজ করার জন্য ডিজাইন করা মিডিয়াতে সংরক্ষণ এবং স্থানান্তর করা দরকার। এটি পরিবহনের সময় সংশোধন ছাড়াই ডেটা অক্ষত থাকে তা নিশ্চিত করা "(উইকি, 2017)

উদাহরণ নিম্নলিখিত হতে পারে: আপনার কাছে একটি ওয়েব পরিষেবা রয়েছে যা কেবলমাত্র ASCII অক্ষর গ্রহণ করে। আপনি সংরক্ষণ করতে চান এবং তারপরে ব্যবহারকারীর ডেটা অন্য কোনও স্থানে (এপিআই) স্থানান্তর করতে চান তবে প্রাপকরা অচ্ছুত ডেটা পেতে চান। বেস 64 এটির জন্য। । । একমাত্র ক্ষতিটি হ'ল বেস 64 টি এনকোডিংয়ের নিয়মিত স্ট্রিংয়ের চেয়ে প্রায় 33% বেশি জায়গা প্রয়োজন।

আর একটি উদাহরণ :: uenc = url এনকোডড = aHR0cDovL2xvYy5tYWdlbnRvLmNvbS9hc2ljcy1tZW4tcy1nZWwta2F5YW5vLXhpaS5odG1s = http://loc.querytip.com/asics-mentsi-sml-

আপনি দেখতে পাচ্ছেন যে আমরা ইউআরএলটিতে চার্ট "/" রাখতে পারি না যদি আমরা সর্বশেষ পরিদর্শন করা URL টি প্যারামিটার হিসাবে প্রেরণ করতে চাই কারণ আমরা "এমওডি পুনর্লিখন" - গেট প্যারামিটারের জন্য গুণাবলী / মান নিয়ম ভেঙে দেব।

একটি সম্পূর্ণ উদাহরণ হ'ল: / 93 / "


4

বেশিরভাগ ক্ষেত্রে, আমি এটি দেখেছি যে বাইনারি ডেটা প্রাসঙ্গিকভাবে এনকোড করতে ব্যবহৃত হয়েছিল যা কেবলমাত্র এসসিআই - বা একটি সাধারণ - অক্ষর সেটগুলি পরিচালনা করতে পারে।


3

ব্র্যাড যা বলছে তার উপরে কিছুটা প্রসারিত করার জন্য: ইমেল এবং ইউজনেটের অনেকগুলি পরিবহন ব্যবস্থা এবং ডেটা সরিয়ে নেওয়ার অন্যান্য উপায়গুলি "8 বিট পরিষ্কার" নয়, যার অর্থ স্ট্যান্ডার্ড অ্যাস্কি অক্ষর সেটের বাইরে অক্ষরগুলি ট্রানজিটে ম্যাঙ্গেল করা যেতে পারে - উদাহরণস্বরূপ, 0x0D কে ক্যারিজ রিটার্ন হিসাবে দেখা যেতে পারে এবং ক্যারিজ রিটার্ন এবং লাইন ফিডে পরিণত হয়। বেস 64৪ সমস্ত বাইনারি অক্ষরকে বিভিন্ন মানক ascii অক্ষর এবং সংখ্যা এবং বিরামচিহ্নগুলিতে মানচিত্র করে যাতে সেগুলিতে এইভাবে ম্যাঙ্গেল করা হবে না।


2

করুন Base64-

বেস 64 বিভিন্ন সংখ্যক এনকোডিং স্কিমগুলির জন্য একটি জেনেরিক শব্দ যা বাইনারি ডেটাটিকে সংখ্যাসূচকভাবে চিকিত্সা করে এবং এটি একটি বেস 64 প্রতিনিধিত্ব করে অনুবাদ করে এনকোড করে। বেস 64 শব্দটি নির্দিষ্ট মাইমির সামগ্রী ট্রান্সফার এনকোডিং থেকে উদ্ভূত হয়।

পাঠ্যসংক্রান্ত ডেটা নিয়ে কাজ করার জন্য ডিজাইন করা মিডিয়াতে বাইনারি ডেটা সংরক্ষণ এবং স্থানান্তরিত করা দরকার এমন বাইনারি ডেটা এনকোড করার দরকার হয় তখন বেস 64 এনকোডিং স্কিমগুলি সাধারণত ব্যবহৃত হয়। এটি পরিবহনের সময় কোনও পরিবর্তন ছাড়াই ডেটা অক্ষত থাকে তা নিশ্চিত করা to বেস 64 এমএমআই এর মাধ্যমে ইমেল সহ এবং এক্সএমএলে জটিল ডেটা সঞ্চয় করে বেশ কয়েকটি অ্যাপ্লিকেশনে সাধারণত ব্যবহৃত হয়।


0

বেস 64 অনেকগুলি উদ্দেশ্যে ব্যবহার করা যেতে পারে।

প্রাথমিক কারণ হ'ল বাইনারি ডেটাটিকে পাসযোগ্য কিছুতে রূপান্তর করা।

আমি কখনও কখনও এটি ব্যবহার করে কোনও সাইট থেকে অন্য সাইটে জেএসএন ডেটা পাঠাতে, কোনও ব্যবহারকারীর সম্পর্কে কুকিতে তথ্য সঞ্চয় করি।

দ্রষ্টব্য: আপনি এটিকে "এনক্রিপশনের জন্য" ব্যবহার করতে পারেন - লোকেরা কেন আপনি বলতে পারবেন না এবং এটি এনক্রিপশন নয় তা আমি দেখতে পাচ্ছি না যদিও এটি সহজেই ভেঙে যেতে পারে এবং এটি ভঙ্গুর হয়ে গেছে। এনক্রিপশনের অর্থ ডেটার একটি স্ট্রিংকে ডেটার অন্য স্ট্রিংয়ে রূপান্তর করা ছাড়া আর কিছুই নয় যা পরে ডিক্রিপ্ট করা যায় বা না হয় এবং বেস 64 এটিই করে।



2
আপনি "এনক্রিপশন" এর সংজ্ঞা ব্যাখ্যা করছি পর্যন্ত খুব আক্ষরিক। শব্দটির উত্সের তুলনায় মোটামুটি আরও নির্দিষ্ট কিছুতে বিকশিত হয়েছে।
ড্যান বেচার্ড

0

একটি হেক্সাডেসিমাল ডিজিট হ'ল এক স্তূপযুক্ত (4 বিট)। দুটি নিবলস 8 টি বিট তৈরি করে যাকে 1 বাইটও বলা হয়।

এমডি 5 একটি 128-বিট আউটপুট উত্পন্ন করে যা 32 হেক্সাডেসিমাল ডিজিটের অনুক্রম ব্যবহার করে প্রতিনিধিত্ব করা হয়, যার পরিবর্তে 32 * 4 = 128 বিট হয়। 128 বিট 16 বাইট তৈরি করে (যেহেতু 1 বাইট 8 বিট হয়)।

প্রতিটি বেস 64 অক্ষরটি 6 টি বিটকে এনকোড করে (শেষ নন-প্যাড অক্ষর ব্যতীত যা 2, 4 বা 6 বিট এবং অন্য কোনও চূড়ান্ত প্যাড অক্ষর এনকোড করতে পারে)। অতএব, বেস 6464 এনকোডিংয়ের জন্য, 128-বিট হ্যাশের জন্য কমপক্ষে 8128 / 6⌉ = 22 টি অক্ষর, প্লাস প্যাডের প্রয়োজন হয়।

বেস 64 ব্যবহার করে আমরা আমাদের পছন্দসই দৈর্ঘ্যের (6, 8 বা 10) এনকোডড আউটপুট উত্পাদন করতে পারি। যদি আমরা 8 টি চর দীর্ঘ আউটপুট স্থির করে নিতে বেছে নিই তবে এটি কেবল 8 বাইট দখল করে যেখানে এটি 128-বিট হ্যাশ আউটপুটের জন্য 16 বাইট দখল করে।

সুতরাং, সুরক্ষা ছাড়াও, বেস 64 ব্যবহার করা স্থান হ্রাস করার জন্য এনকোডিংও ব্যবহৃত হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.