Custom Lightweight Hashing Utility in C#
2025/08/11

کلاس Hashing یک پیادهسازی ساده و سبک برای هش کردن رشتهها در C# ارائه میدهد.
ویژگیهای آن شامل:
هش کردن بدون سالت
متد Hash(string input) یک هش یکتا بر اساس الگوریتم سفارشی تولید میکند که از سه حالت (state1، state2، state3) و عملیات بیتی برای تولید مقدار نهایی استفاده میکند.
هش کردن با سالت تصادفی
متد Hash(string input, out string salt) قبل از هش کردن، یک سالت تصادفی ایجاد کرده و به ابتدای رشته اضافه میکند.
هش کردن با سالت مشخص
متد Hash(string input, string salt) امکان استفاده از سالت از پیش تعیینشده را فراهم میکند.
تولید سالت تصادفی
متد CreateRandomSalt(int length) یک سالت با طول مشخص (حداکثر ۶۴ بایت) بهصورت Base64 برمیگرداند.
تأیید هش
متدهای Verify دو نسخه دارند؛ یکی بدون سالت و دیگری با سالت، که رشته ورودی را دوباره هش کرده و با مقدار هششده ذخیرهشده مقایسه میکنند.
نحوه استفاده از این کلاس
//Hash without salt
var hasher = new Hashing();
string hash = hasher.Hash(password);
//Hash with radnom salt
string salt;
string hash = hasher.Hash(password, out salt);
//Hash with custom salt
string salt = "yourCustomSalt==";
string hash = hasher.Hash(password, salt);
//Verify a hash without salt
bool isValid = hasher.Verify(password, hash);
//Verify a hash with salt
bool isValid = hasher.Verify(password, hash, salt);
//Salt Generation
string salt = hasher.CreateRandomSalt(); // Default is 32 bytes, max 64