SHA256 হ্যাশ কত দিন?


245

আমি SHA256একটি পাসওয়ার্ড + নুন চালিয়ে যাচ্ছি , তবে VARCHARমাইএসকিউএল ডাটাবেস সেট আপ করার সময় আমার কতক্ষণ বানাতে হবে তা আমি জানি না । একটি ভাল দৈর্ঘ্য কি?


9
এটি পড়ার আগে কেউ এই পরামর্শটি অনুসরণ করার সিদ্ধান্ত নেয় এবং SHA-*হ্যাশ পাসওয়ার্ড ব্যবহার করে, দয়া করে প্রথমে এটি পড়ুন
c00000fd

2
আপনি পাসওয়ার্ডগুলিতে SHA-256 ব্যবহার না করে, যা আপনার করা উচিত নয়, হ্যাশগুলির দৈর্ঘ্য 256 বিট, বা he৪ হেক্সাডেসিমাল অক্ষর, বা ৪৩ বর্ণানুক্রমিক অক্ষর বা ৩২ বাইট রয়েছে।
কাও

উত্তর:


333

একটি sha256 256 বিট দীর্ঘ - এটির নামটি ইঙ্গিত দেয়।

যেহেতু sha256 হেক্সাডেসিমাল প্রতিনিধিত্ব করে, 4 টি বিট প্রতিটি অক্ষরকে এনকোড করার জন্য যথেষ্ট (8 এর পরিবর্তে, ASCII এর মতো), সুতরাং 256 বিটগুলি 64 হেক্স অক্ষর উপস্থাপন করবে, সুতরাং আপনার প্রয়োজন একটি varchar(64), বা এমনকি একটি char(64), কারণ দৈর্ঘ্য সবসময় একই থাকে মোটেও আলাদা হয় না।

এবং ডেমো:

$hash = hash('sha256', 'hello, world!');
var_dump($hash);

তোমাকে দিবে :

$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"

অর্থাত্ 64 টি অক্ষরযুক্ত একটি স্ট্রিং।


7
আমরা কী কী ()৪) প্রাথমিক কী হিসাবে ব্যবহার করতে পারি বা বাইনারি (32) এর জন্য আরও ভাল হতে পারে? (ACCESS_TOKEN)
Frankish

3
যদি আপনি ভাবেন যে আপনি ভবিষ্যতে কোনও ব্যবহারকারীকে অবরুদ্ধ করতে চান তবে আমি varchar(65)অগ্রণী হিসাবে ব্যবহার করার পরামর্শ দিচ্ছি !... শুধু বলছি।
মানাটেক্স

103
... বা কেবল একটি ব্লক 'ব্লকড' যুক্ত করুন?
স্টিজন ডি উইট

5
আপনি যেমন প্রতিটি পাসওয়ার্ডের জন্য আলাদা লবণ রাখতে চান আপনাকে এটি হ্যাশের পাশেই রাখতে হবে। এর জন্য আপনি অতিরিক্ত ক্ষেত্র ব্যবহার করতে পারেন বা এটি হ্যাশটিতে প্রাক-/ সংযোজন করতে পারেন, সুতরাং আপনার প্রয়োজন হবে
64৪

4
আপনি এটি নির্বাচন করতে এই নির্বাচন বিবৃতি ব্যবহার করতে পারেন SELECT length(to_base64(unhex(sha2('say hello to my little friend',256)))):, মূল স্ট্রিংয়ের দৈর্ঘ্য যাই হোক না কেন এটি সর্বদা 44 হয়।
ডাঃআহমেদজাভা

72

SHA256 এর 256 বিটের জন্য এনকোডিং বিকল্পগুলি:

  1. বেস 64: CHAR(44)প্যাডিং চরিত্র সহ = প্রতি চার প্রতি 6 বিট
  2. হেক্স: প্রতি চর = 4 বিট CHAR(64)
  3. বাইনারি: বাইট প্রতি 8 বিট = BINARY(32)

30
বেস 64৪ প্রতি চার অক্ষরে 3 বাইট, সুতরাং 32 বাইট 43 ক্যারেক্টারে ফিট হয়ে গেলেও আপনার প্রকৃতপক্ষে 44 প্রয়োজন need একটি অতিরিক্ত = চূড়ান্ত চরিত্র হিসাবে যুক্ত করা হয়েছে
উইলকো

2
ঠিক আছে, =ছিনতাই এবং পুনরায় যুক্ত করা যেতে পারে।
রিক জেমস

28

আমি বিনেরি (32) ব্যবহার করতে পছন্দ করি কারণ এটি অপ্টিমাইজড উপায়!

আপনি (২০০ থেকে এফএফ) থেকে 32 টি হেক্স সংখ্যায় রাখতে পারেন।

অতএব বিনারি (32)!


8
+1 - আমি অন্য যে কেউ ঘটছে তার কাছে ... এটি মাইএসকিউএল দিয়ে ব্যবহার করার জন্য আপনি অনুকূলিত করতে চান ... আপনি ব্যবহার করতে পারেন UPDATE...SET hash_column=UNHEX(sha256HexString)। তারপরে, এটি পুনরুদ্ধার করার সময়, আপনি SELECT HEX(hash_column) AS hash_column
কেভিন নেলসন 21

22

কেন আপনি এটিকে ভ্রূচার করবেন? এটি আলাদা হয় না। এটি সর্বদা 64৪ টি অক্ষর, যা অনলাইন এসএএএ-256 ক্যালকুলেটরগুলির মধ্যে যেকোন কিছুতে চালিয়ে নির্ধারণ করা যায় ।


চর (64) একটি বৈধ mysql বিবৃতি?
টনি স্টার্ক

28
@ হটোরয়েড: না এটি কোনও বিবৃতি নয়, এটি একটি বৈধ কলামের ধরণ।
মার্ক বাইয়ার্স

10
বর্ণের ব্যবহার ব্যতীত স্থান বরাদ্দও দেয় না, চরের বিপরীতে এটি ডেটা পূরণ না করে নির্ধারিত মোট অক্ষরের পরিমাণ বরাদ্দ করে।
জেনল্যান্ড

6

এটি 64 অক্ষর স্থির করা হবে, সুতরাং ব্যবহার করুন char(64)


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