Շատ սկսնակ ծրագրավորողներ հաճախ շփոթում են Hashing-ը և Encryption-ը, ինչպես նաև MD5, SHA-256 և bcrypt տեխնոլոգիաները։
Եկեք հասկանանք տարբերությունը։
Hashing-ը և Encryption-ը նույն բանը չեն
Encryption (Գաղտնագրում)
Encryption-ի դեպքում տվյալը վերածվում է անընթեռնելի տեսքի, բայց հնարավոր է հետ բերել սկզբնական տվյալը՝ հատուկ բանալիի (key) միջոցով։
Օրինակ՝
«password123» → Encrypt → «x8F$2kP...»
Եթե ունեք ճիշտ բանալին, կարող եք վերականգնել «password123»-ը։
Encryption-ը օգտագործվում է.
• HTTPS
• VPN
• Ֆայլերի գաղտնագրում
• Բանկային համակարգեր
Hashing
Hashing-ի դեպքում տվյալը վերածվում է ֆիքսված երկարության արժեքի, և այն հետ բերել հնարավոր չէ։
Օրինակ՝
password123
↓
482c811da5d5b4bc6d497ffa98491e38
Hash ֆունկցիաները միակողմանի են (one-way)։
Դրանք օգտագործվում են.
• Գաղտնաբառերի պահպանման
• Ֆայլերի ամբողջականության ստուգման
• Թվային ստորագրությունների
համար։
MD5
MD5-ը ստեղծվել է 1991 թվականին։
Այն արտադրում է 128-bit hash։
Օրինակ՝
password123
↓
482c811da5d5b4bc6d497ffa98491e38
MD5-ը ժամանակին շատ տարածված էր, բայց այսօր համարվում է կոտրված։
Հնարավոր է ստանալ երկու տարբեր տվյալներ, որոնք կտան նույն hash-ը (collision attack)։
Այդ պատճառով MD5-ը այլևս խորհուրդ չի տրվում օգտագործել անվտանգության համար։
SHA-256
SHA-256-ը պատկանում է SHA-2 ընտանիքին։
Այն արտադրում է 256-bit hash։
Օրինակ՝
password123
↓
ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f
SHA-256-ը շատ ավելի անվտանգ է, քան MD5-ը։
Այն օգտագործվում է.
• Blockchain համակարգերում
• API Signature-ներում
• Digital Signature-ներում
• Տվյալների ամբողջականության ստուգման համար
Եթե SHA-256-ը անվտանգ է, ինչու՞ գաղտնաբառերը չենք պահում SHA-256-ով
Խնդիրը արագությունն է։
SHA-256-ը շատ արագ է աշխատում։
Ժամանակակից GPU-ները կարող են վայրկյանում միլիարդավոր hash-եր հաշվարկել։
Եթե տվյալների բազան արտահոսք ունենա, հարձակվողը կարող է շատ արագ փորձել միլիոնավոր գաղտնաբառեր։
bcrypt
bcrypt-ը ստեղծվել է հատուկ գաղտնաբառերի պահպանման համար։
Այն ունի երկու կարևոր առավելություն.
Salt
Յուրաքանչյուր գաղտնաբառի համար ստեղծվում է պատահական Salt։
Այս պատճառով նույն գաղտնաբառը երկու օգտատերերի մոտ կունենա տարբեր hash։
Cost Factor
bcrypt-ը թույլ է տալիս կառավարել hash-ի հաշվարկման բարդությունը։
Օրինակ՝
Cost 8
Cost 10
Cost 12
Cost 14
Որքան մեծ է թիվը, այնքան ավելի երկար ժամանակ է պահանջվում hash ստեղծելու համար։
Սա զգալիորեն դժվարացնում է brute force հարձակումները։
bcrypt Cost Levels
Cost 8 → Հին համակարգեր
Cost 10 → Նորմալ օգտագործում
Cost 12 → Առաջարկվող տարբերակ
Cost 14 → Բարձր անվտանգություն
Cost 16+ → Շատ ծանր բեռնվածություն
Այսօր շատ նախագծերում օգտագործվում է Cost 10 կամ Cost 12։
Ամփոփում
❌ MD5 — այլևս անվտանգ չէ
⚠️ SHA-256 — անվտանգ hash ֆունկցիա է, բայց նախատեսված չէ գաղտնաբառերի համար
✅ bcrypt — լավագույն տարբերակներից մեկը գաղտնաբառերի պահպանման համար
Եթե կառուցում եք authentication համակարգ, գաղտնաբառերը պահեք bcrypt-ով, JWT Secret-ները պահեք environment variables-ում, իսկ SHA-256-ը օգտագործեք տվյալների integrity-ի կամ signature-ների համար։





ՄԵԿՆԱԲԱՆՈՒԹՅՈՒՆՆԵՐ
Դարձիր առաջինը, ով կգրի։