SHA-256 হ্যাশ জেনারেটর
যেকোনো টেক্সট থেকে SHA-256 হ্যাশ তৈরি করুন
ইনপুট টেক্সট
SHA-256 হ্যাশ
SHA-256 হ্যাশ এখানে দেখাবে…
SHA-256 হ্যাশিং কী?
SHA-256 (Secure Hash Algorithm 256-bit) হল SHA-2 পরিবারের একটি ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন, যা NIST ২০০১ সালে FIPS 180-2-এর অংশ হিসেবে প্রকাশ করেছিল (পরে FIPS 180-4-এ আপডেট করা হয়েছে)। যেকোনো ইনপুট দিলে — একটি একক অক্ষর, বহু গিগাবাইটের ফাইল বা একটি খালি স্ট্রিং — SHA-256 একটি নির্দিষ্ট 256-bit (32-byte) ডাইজেস্ট তৈরি করে, যা সাধারণত 64টি হেক্সাডেসিমাল অক্ষর হিসেবে প্রদর্শিত হয়। SHA-256 আজকের প্রোডাকশন সিস্টেমে সবচেয়ে বেশি ব্যবহৃত হ্যাশ ফাংশন, যা TLS সার্টিফিকেট চেইন, Bitcoin-এর proof-of-work, Subresource Integrity (SRI) এবং কোড-সাইনিং ওয়ার্কফ্লোর ভিত্তি।
SHA-256 একটি এক-মুখী ফাংশন: ইনপুট থেকে হ্যাশ গণনা করা দ্রুত (আধুনিক হার্ডওয়্যারে প্রতি সেকেন্ডে শত শত মেগাবাইট), কিন্তু প্রক্রিয়াটি উল্টো করা — একটি নির্দিষ্ট হ্যাশ থেকে ইনপুট খুঁজে বের করা — গণনাগতভাবে অসাধ্য। এই বৈশিষ্ট্যটি, যাকে preimage resistance বলা হয়, SHA-256-কে পাসওয়ার্ড হ্যাশিং (salt ও key-stretching-এর সাথে মিলিয়ে), ডিজিটাল স্বাক্ষর এবং ডেটা অখণ্ডতা যাচাইয়ের জন্য উপযুক্ত করে তোলে। MD5 ও SHA-1-এর বিপরীতে, পূর্ণ SHA-256-এর বিরুদ্ধে কোনো collision বা preimage আক্রমণ প্রদর্শিত হয়নি।
SHA-2 পরিবারে ছয়টি ভ্যারিয়েন্ট রয়েছে: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 এবং SHA-512/256। SHA-256 প্রতি ব্লকে 64 রাউন্ড সহ 32-bit শব্দে কাজ করে, যা 32-bit প্রসেসরের জন্য অপ্টিমাইজ করা। SHA-512 64-bit শব্দ এবং 80 রাউন্ড ব্যবহার করে, যা 64-bit প্ল্যাটফর্মে দ্রুততর হতে পারে। যেসব ক্ষেত্রে 256-bit ডাইজেস্ট যথেষ্ট, সেখানে SHA-256 NIST, IETF এবং CA/Browser Forum-এর ডিফল্ট পরামর্শ হিসেবে থাকে।
অনলাইন SHA-256 জেনারেটর কেন ব্যবহার করবেন?
SHA-256 হ্যাশ তৈরি করতে সাধারণত একটি টার্মিনাল কমান্ড বা কিছু লাইনের কোড প্রয়োজন। এই ব্রাউজার-ভিত্তিক টুলটি আপনাকে কিছু ইনস্টল না করে, প্রেক্ষাপট পরিবর্তন না করে বা স্ক্রিপ্ট না লিখে SHA-256 ডাইজেস্ট গণনা করতে দেয়।
SHA-256-এর ব্যবহার ক্ষেত্র
SHA-2 পরিবারের ভ্যারিয়েন্ট তুলনা
SHA-256 FIPS 180-4-এ সংজ্ঞায়িত SHA-2 পরিবারের অন্তর্গত। প্রতিটি ভ্যারিয়েন্ট ডাইজেস্ট আকার, কার্যক্ষমতার বৈশিষ্ট্য এবং নিরাপত্তা মার্জিনের মধ্যে ভারসাম্য করে। নিচের সারণিটি আপনি সম্ভবত যেসব SHA-2 ভ্যারিয়েন্টের মুখোমুখি হবেন সেগুলো তুলনা করে।
| ভ্যারিয়েন্ট | ডাইজেস্টের আকার | হেক্সের দৈর্ঘ্য | বাইটের আকার | সবচেয়ে উপযুক্ত |
|---|---|---|---|---|
| SHA-256 | 256 bits | 64 hex chars | 32 bytes | TLS, blockchain, code signing, JWTs, SRI |
| SHA-224 | 224 bits | 56 hex chars | 28 bytes | Truncated SHA-256 — rare, specific compliance |
| SHA-384 | 384 bits | 96 hex chars | 48 bytes | Government / CNSS, higher collision margin |
| SHA-512 | 512 bits | 128 hex chars | 64 bytes | Digital signatures, HMAC with large keys |
| SHA-512/256 | 256 bits | 64 hex chars | 32 bytes | SHA-512 speed on 64-bit CPUs, 256-bit output |
SHA-256 বনাম SHA-1 বনাম MD5 বনাম SHA-3
সঠিক হ্যাশ অ্যালগরিদম বেছে নেওয়া আপনার নিরাপত্তার প্রয়োজনীয়তা এবং সামঞ্জস্যতার সীমাবদ্ধতার উপর নির্ভর করে। SHA-256 ব্যবহারিক দিক থেকে সর্বোত্তম অবস্থানে রয়েছে: এটি নিরাপদ, সর্বজনীনভাবে সমর্থিত (Web Crypto API সহ) এবং বেশিরভাগ কাজের জন্য যথেষ্ট দ্রুত। নিচের তুলনা সারণিটি হ্যাশ ফাংশন নির্বাচনের সময় সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্যগুলো কভার করে।
| বৈশিষ্ট্য | SHA-256 | SHA-1 | MD5 | SHA-3-256 |
|---|---|---|---|---|
| Digest size | 256 bits (64 hex) | 160 bits (40 hex) | 128 bits (32 hex) | 256 bits (64 hex) |
| Security status | Secure | Broken (2017) | Broken (2004) | Secure |
| Collision resistance | 2^128 operations | Practical attack | Practical attack | 2^128 operations |
| Block size | 512 bits | 512 bits | 512 bits | 1600 bits (sponge) |
| Rounds | 64 | 80 | 64 | 24 |
| Standard | FIPS 180-4 | FIPS 180-4 | RFC 1321 | FIPS 202 |
| Web Crypto API | Yes | Yes | No | No |
| Primary use today | TLS, blockchain, SRI | Legacy git only | Non-security checksums | Backup standard |
SHA-256 অভ্যন্তরীণভাবে কীভাবে কাজ করে
SHA-256 একটি Merkle–Damgård কনস্ট্রাকশনের মাধ্যমে 512-bit (64-byte) ব্লকে ইনপুট প্রক্রিয়া করে। অ্যালগরিদমটি প্রথম আটটি মৌলিক সংখ্যার বর্গমূলের ভগ্নাংশ থেকে প্রাপ্ত আটটি 32-bit স্টেট শব্দ (H0–H7) দিয়ে শুরু হয়। প্রতিটি ব্লক 64 রাউন্ডের মিক্সিংয়ের মধ্য দিয়ে যায় যা বিটওয়াইজ অপারেশন (AND, XOR, NOT, right-rotate, right-shift) এবং প্রথম 64টি মৌলিক সংখ্যার ঘনমূল থেকে প্রাপ্ত 64টি রাউন্ড কনস্ট্যান্ট ব্যবহার করে।
SHA-256: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
(256 bits = 32 bytes = 64 hex characters)
| ধাপ | বিবরণ |
|---|---|
| Padding | Append a 1-bit, then zeros until the message length is 448 mod 512. Append the original message length as a 64-bit big-endian integer. |
| Block splitting | Divide the padded message into 512-bit (64-byte) blocks. |
| Message schedule | Expand each 16-word (32-bit) block into 64 words using sigma functions with right-rotate and right-shift operations. |
| Compression | Process 64 rounds per block using Ch, Maj, and two Sigma functions with 64 round constants derived from cube roots of the first 64 primes. |
| Output | Concatenate the eight 32-bit state words (H0-H7) into a 256-bit (32-byte) digest, rendered as 64 hexadecimal characters. |
avalanche effect নিশ্চিত করে যে ইনপুটে একটি বিট পরিবর্তন করলে আউটপুট বিটের প্রায় ৫০% পরিবর্তিত হয়। এই বৈশিষ্ট্যটি, 2^128 collision resistance-এর সাথে মিলে, ২০২৬ সালেও SHA-256-কে নিরাপত্তা-সংবেদনশীল অ্যাপ্লিকেশনের জন্য ভিত্তিগত পরামর্শ হিসেবে রাখে।
SHA-256 কোডের উদাহরণ
SHA-256 প্রতিটি প্রধান ভাষা ও রানটাইমে নেটিভলি পাওয়া যায়। Web Crypto API ব্রাউজারে কোনো লাইব্রেরি ছাড়াই এটি সরবরাহ করে। নিচের উদাহরণগুলো Unicode ইনপুট পরিচালনা এবং ফাইল হ্যাশিং সহ বাস্তব ব্যবহারের ধরন দেখায়।
// Works in all modern browsers and Node.js 18+
async function sha256(text) {
const data = new TextEncoder().encode(text)
const hashBuffer = await crypto.subtle.digest('SHA-256', data)
const hashArray = Array.from(new Uint8Array(hashBuffer))
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}
await sha256('hello world')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha256').update('hello world').digest('hex')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"import hashlib
# Basic SHA-256 hash
result = hashlib.sha256(b'hello world').hexdigest()
print(result) # → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
# Hash a string (encode to bytes first)
text = 'café ☕'
hashlib.sha256(text.encode('utf-8')).hexdigest()
# → "3eb53e00aa1bb4b1e8aab1ab38e56e6b8fb0b20e1cf7e1d19f36e4fad2537445"
# Hash a file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
sha = hashlib.sha256()
for chunk in iter(lambda: f.read(8192), b''):
sha.update(chunk)
print(sha.hexdigest())package main
import (
"crypto/sha256"
"fmt"
)
func main() {
data := []byte("hello world")
hash := sha256.Sum256(data)
fmt.Printf("%x\n", hash)
// → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
}# Using sha256sum (Linux) or shasum (macOS) echo -n "hello world" | sha256sum # → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 - # macOS echo -n "hello world" | shasum -a 256 # → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 - # Verify a file checksum echo "b94d27b... myfile.bin" | sha256sum -c # → myfile.bin: OK # Using openssl (cross-platform) echo -n "hello world" | openssl dgst -sha256 # → SHA2-256(stdin)= b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9