SHA-384 হ্যাশ জেনারেটর
যেকোনো টেক্সট থেকে SHA-384 হ্যাশ তৈরি করুন
ইনপুট টেক্সট
SHA-384 হ্যাশ
SHA-384 হ্যাশ এখানে দেখাবে…
SHA-384 হ্যাশিং কী?
SHA-384 হলো একটি ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন, যা NIST FIPS 180-4-এ SHA-2 পরিবারের অংশ হিসেবে সংজ্ঞায়িত। এটি যেকোনো দৈর্ঘ্যের ইনপুট গ্রহণ করে এবং একটি নির্দিষ্ট 384-bit (48-byte) মেসেজ ডাইজেস্ট তৈরি করে, যা সাধারণত 96টি হেক্সাডেসিমাল অক্ষর হিসেবে প্রদর্শিত হয়। SHA-384 TLS সাইফার স্যুট, ডিজিটাল সার্টিফিকেট স্বাক্ষর এবং সরকারি ব্যবস্থায় ব্যাপকভাবে ব্যবহৃত হয়, যেখানে SHA-256-এর তুলনায় বেশি collision-resistance প্রয়োজন।
অভ্যন্তরীণভাবে, SHA-384 হলো SHA-512-এর একটি ট্রাংকেটেড ভ্যারিয়েন্ট। এটি SHA-512-এর মতো একই 1024-bit ব্লক সাইজ, 80টি কম্প্রেশন রাউন্ড এবং 64-bit শব্দ অ্যারিথমেটিক ব্যবহার করে, তবে ভিন্ন প্রাথমিক হ্যাশ মান (৯ম থেকে ১৬তম মৌলিক সংখ্যা থেকে প্রাপ্ত) দিয়ে শুরু করে এবং চূড়ান্ত অবস্থার প্রথম 384 বিট আউটপুট দেয়। এই ট্রাংকেশনের কারণে SHA-384 একই কোর অ্যালগরিদম ব্যবহার করলেও একই ইনপুটের জন্য SHA-512-এর চেয়ে ভিন্ন ডাইজেস্ট তৈরি করে।
SHA-384 64-bit শব্দে কাজ করায় আধুনিক 64-bit প্রসেসরে SHA-256-এর চেয়ে দ্রুত চলে এবং বড় ডাইজেস্ট প্রদান করে। এটি একটি কার্যকর মধ্যবর্তী পছন্দ: SHA-256-এর চেয়ে শক্তিশালী (192-bit বনাম 128-bit collision resistance), SHA-512-এর 128-অক্ষরের হেক্স আউটপুটের সঞ্চয় ওভারহেড ছাড়াই। TLS 1.3 সার্টিফিকেট যাচাইকরণ স্বাক্ষরের জন্য SHA-384 হলো ডিফল্ট হ্যাশ এবং শ্রেণিবদ্ধ তথ্যের জন্য NSA Suite B (বর্তমানে CNSA) এটি বাধ্যতামূলক করে।
অনলাইন SHA-384 জেনারেটর কেন ব্যবহার করবেন?
SHA-384 হ্যাশ তৈরি করতে সাধারণত একটি টার্মিনাল কমান্ড বা কোড লেখার প্রয়োজন হয়। এই ব্রাউজার-ভিত্তিক টুলটি আপনাকে কিছু ইনস্টল না করে বা কোনো সার্ভারে ডেটা না পাঠিয়ে তাৎক্ষণিকভাবে SHA-384 ডাইজেস্ট গণনা করতে দেয়। CDN অ্যাসেটের SRI হ্যাশ তৈরি করতে, ফাইল চেকসাম যাচাই করতে বা একই ইনপুটের জন্য SHA-384 ও SHA-256 আউটপুট তুলনা করতে — যেকোনো আধুনিক ব্রাউজারে নির্ভরতামুক্তভাবে SHA-384 ডাইজেস্টের সাথে কাজ করার সরাসরি উপায় এই টুলটি।
SHA-384 হ্যাশ জেনারেটরের ব্যবহার ক্ষেত্র
SHA-2 পরিবারের ভ্যারিয়েন্ট তুলনা
SHA-384 আরও কয়েকটি ভ্যারিয়েন্টের পাশাপাশি SHA-2 পরিবারের অন্তর্গত। নিচের সারণিটি ডাইজেস্ট আকার, আউটপুট দৈর্ঘ্য এবং সাধারণ প্রয়োগের ক্ষেত্রে তাদের পার্থক্য দেখায়।
| ভ্যারিয়েন্ট | ডাইজেস্ট | হেক্সের দৈর্ঘ্য | বাইট | সবচেয়ে উপযুক্ত |
|---|---|---|---|---|
| SHA-384 | 384 bits | 96 hex chars | 48 bytes | TLS 1.2/1.3, government/CNSA, certificate signatures |
| SHA-256 | 256 bits | 64 hex chars | 32 bytes | TLS, blockchain, code signing, JWTs, SRI |
| SHA-512 | 512 bits | 128 hex chars | 64 bytes | Digital signatures, HMAC with large keys |
| SHA-224 | 224 bits | 56 hex chars | 28 bytes | Truncated SHA-256 — rare, specific compliance |
| SHA-512/256 | 256 bits | 64 hex chars | 32 bytes | SHA-512 speed on 64-bit CPUs, 256-bit output |
SHA-384 বনাম SHA-256 বনাম SHA-512 বনাম SHA-3-384
SHA-384 ও অন্যান্য হ্যাশ অ্যালগরিদমের মধ্যে বেছে নেওয়া আপনার নিরাপত্তার প্রয়োজনীয়তা, প্ল্যাটফর্মের সীমাবদ্ধতা এবং কার্যক্ষমতার চাহিদার উপর নির্ভর করে। এই তুলনাটি সবচেয়ে প্রাসঙ্গিক বৈশিষ্ট্যগুলো কভার করে।
| বৈশিষ্ট্য | SHA-384 | SHA-256 | SHA-512 | SHA-3-384 |
|---|---|---|---|---|
| Digest size | 384 bits (96 hex) | 256 bits (64 hex) | 512 bits (128 hex) | 384 bits (96 hex) |
| Internal state | 512 bits (8x64-bit) | 256 bits (8x32-bit) | 512 bits (8x64-bit) | 1600 bits (sponge) |
| Block size | 1024 bits | 512 bits | 1024 bits | 832 bits |
| Rounds | 80 | 64 | 80 | 24 |
| Word size | 64 bits | 32 bits | 64 bits | N/A (sponge) |
| Length extension | Resistant | Vulnerable | Vulnerable | Resistant |
| 64-bit performance | Fast (native ops) | Slower (32-bit ops) | Fast (native ops) | Moderate |
| Standard | FIPS 180-4 | FIPS 180-4 | FIPS 180-4 | FIPS 202 |
| Web Crypto API | Yes | Yes | Yes | No |
SHA-384 অভ্যন্তরীণভাবে কীভাবে কাজ করে
SHA-384 SHA-512-এর মতো একই Merkle–Damgård কনস্ট্রাকশনের মাধ্যমে ইনপুট প্রক্রিয়া করে। ইনপুটকে 1024 বিটের গুণিতকে প্যাড করা হয়, ব্লকে বিভক্ত করা হয় এবং প্রতিটি ব্লক 64-bit শব্দ অ্যারিথমেটিক সহ Ch, Maj এবং দুটি Sigma ফাংশন ব্যবহার করে 80 রাউন্ডের মিক্সিংয়ের মধ্য দিয়ে যায়। SHA-512 থেকে মূল পার্থক্য হলো প্রাথমিক হ্যাশ মান: SHA-384 ৯ম থেকে ১৬তম মৌলিক সংখ্যার বর্গমূলের ভগ্নাংশ থেকে প্রাপ্ত মান ব্যবহার করে, যেখানে SHA-512 প্রথম ৮টি মৌলিক সংখ্যা ব্যবহার করে। সমস্ত ব্লক প্রক্রিয়া হওয়ার পর SHA-384 512-bit অভ্যন্তরীণ অবস্থার প্রথম 384 বিটে ট্রাংকেট করে।
SHA-384: fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd
(384 bits = 48 bytes = 96 hex characters)
ট্রাংকেশন ও ভিন্ন ইনিশিয়ালাইজেশনের কারণে SHA-384 ও SHA-512 সবসময় একই ইনপুটের জন্য ভিন্ন ডাইজেস্ট তৈরি করে। এটি SHA-384-কে length-extension আক্রমণের বিরুদ্ধে স্বভাবতই প্রতিরোধী করে, SHA-256 ও SHA-512-এর বিপরীতে যেখানে আক্রমণকারী মূল বার্তা না জেনেই ডেটা যোগ করে একটি বৈধ হ্যাশ গণনা করতে পারে।
SHA-384 কোডের উদাহরণ
SHA-384 প্রতিটি প্রধান ভাষা ও রানটাইমে নেটিভলি সমর্থিত। নিচে কার্যকর উদাহরণ রয়েছে যা আপনি সরাসরি আপনার প্রকল্পে কপি করতে পারবেন।
// Works in all modern browsers and Node.js 18+
async function sha384(text) {
const data = new TextEncoder().encode(text)
const hashBuffer = await crypto.subtle.digest('SHA-384', data)
const hashArray = Array.from(new Uint8Array(hashBuffer))
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}
await sha384('hello world')
// → "fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd"
// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha384').update('hello world').digest('hex')
// → "fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd"import hashlib
# Basic SHA-384 hash
result = hashlib.sha384(b'hello world').hexdigest()
print(result)
# → "fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd"
# Hash a string with Unicode characters
text = 'café ☕'
hashlib.sha384(text.encode('utf-8')).hexdigest()
# → 96-character hex string
# Hash a file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
sha = hashlib.sha384()
for chunk in iter(lambda: f.read(8192), b''):
sha.update(chunk)
print(sha.hexdigest())package main
import (
"crypto/sha512"
"fmt"
)
func main() {
data := []byte("hello world")
// SHA-384 lives in the crypto/sha512 package
hash := sha512.Sum384(data)
fmt.Printf("%x\n", hash)
// → fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd
}# Using sha384sum (Linux) echo -n "hello world" | sha384sum # → fdbd8e75a67f29f701a4e040385e2e23... - # macOS echo -n "hello world" | shasum -a 384 # → fdbd8e75a67f29f701a4e040385e2e23... - # Using openssl (cross-platform) echo -n "hello world" | openssl dgst -sha384 # → SHA2-384(stdin)= fdbd8e75a67f29f701a4e040385e2e23986303ea... # Verify a file checksum sha384sum myfile.bin > checksum.txt sha384sum -c checksum.txt # → myfile.bin: OK