01-10-12, 05:47 PM
كاتب الموضوع : magicsword
Hash Algorithm هو طريقة تستخدم في التاكد من صحة البيانات الواردة و عدم تعرضها للتحريف data tampering.تقوم Hash Algorithm بتوليد بصمة للملف وهي عبارة عن 20 bytes , و اي تعديل و لو في byte واحد من الملف سوف يودي الى تغير في Hash fingerprint للملف ولذلك تستخد في التطبيقات الامنية التي تحتاج الى التحقق من صحة البيانات.
طريقة الاستخدام:
استدعاء System.Security.Cryptography
استدعاء System.IO
كود :
[color=#000000][COLOR=#0000bb]Imports System[/color][color=#007700].[/color][color=#0000bb]Security[/color][color=#007700].[/color][COLOR=#0000bb]Cryptography
Imports System[/COLOR][color=#007700].[/color][COLOR=#0000bb]IO
[/COLOR][/COLOR]
عمل HashAlgorithm object باستخدام HashAlgorithm.Create
كود :
[color=#000000][COLOR=#0000bb]Dim Hash [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Security[/color][color=#007700].[/color][color=#0000bb]Cryptography[/color][color=#007700].[/color][COLOR=#0000bb]HashAlgorithm
Hash [/COLOR][color=#007700]= [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Security[/color][color=#007700].[/color][color=#0000bb]Cryptography[/color][color=#007700].[/color][color=#0000bb]HashAlgorithm[/color][color=#007700].[/color][color=#0000bb]Create[/color][COLOR=#007700]()
[/COLOR][/COLOR]
حساب ال Hash لملف اسمة a.txt
كود :
[color=#000000][COLOR=#0000bb] Dim fsA [/color][color=#007700]As New [/color][color=#0000bb]FileStream[/color][color=#007700]([/color][color=#dd0000]"c:\a.txt"[/color][color=#007700], [/color][color=#0000bb]FileMode[/color][color=#007700].[/color][color=#0000bb]Open[/color][COLOR=#007700])
[/COLOR][color=#0000bb]Dim HashA[/color][color=#007700]() As [/color][color=#0000bb]Byte [/color][color=#007700]= [/color][color=#0000bb]Hash[/color][color=#007700].[/color][color=#0000bb]ComputeHash[/color][color=#007700]([/color][color=#0000bb]fsA[/color][COLOR=#007700])
[/COLOR][color=#0000bb]fsA[/color][color=#007700].[/color][color=#0000bb]Close[/color][COLOR=#007700]()
[/COLOR][/COLOR]
عرض ال Hash code في اداة Label
كود :
[color=#000000][COLOR=#0000bb] Dim i [/color][color=#007700]As [/color][color=#0000bb]Integer [/color][color=#007700]= [/color][COLOR=#0000bb]0
[/COLOR][color=#007700]For [/color][color=#0000bb]i [/color][color=#007700]= [/color][color=#0000bb]0 To HashA[/color][color=#007700].[/color][color=#0000bb]Length [/color][color=#007700]- [/color][COLOR=#0000bb]1
Label1[/COLOR][color=#007700].[/color][color=#0000bb]Text [/color][color=#007700]= [/color][color=#0000bb]Label1[/color][color=#007700].[/color][color=#0000bb]Text [/color][color=#007700]& [/color][color=#0000bb]HashA[/color][color=#007700]([/color][color=#0000bb]i[/color][COLOR=#007700])
[/COLOR][COLOR=#0000bb]Next
[/COLOR][/COLOR]
الكود الكامل:
كود :
[color=#000000][COLOR=#0000bb]Imports System[/color][color=#007700].[/color][color=#0000bb]Security[/color][color=#007700].[/color][COLOR=#0000bb]Cryptography
Imports System[/COLOR][color=#007700].[/color][COLOR=#0000bb]IO
[/COLOR][color=#007700]Public Class [/color][COLOR=#0000bb]Form1
[/COLOR][color=#007700]Private [/color][color=#0000bb]Sub Button1_Click[/color][color=#007700]([/color][color=#0000bb]ByVal sender [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Object[/color][color=#007700], [/color][color=#0000bb]ByVal e [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]EventArgs[/color][color=#007700]) [/color][color=#0000bb]Handles Button1[/color][color=#007700].[/color][COLOR=#0000bb]Click
[/COLOR][COLOR=#dd0000]' Create the hashing object.
Dim Hash As System.Security.Cryptography.HashAlgorithm
Hash = System.Security.Cryptography.HashAlgorithm.Create()
' [/COLOR][color=#0000bb]Calculate the hash [/color][color=#007700]for [/color][color=#0000bb]the first file[/color][COLOR=#007700].
[/COLOR][color=#0000bb]Dim fsA [/color][color=#007700]As New [/color][color=#0000bb]FileStream[/color][color=#007700]([/color][color=#dd0000]"c:\a.txt"[/color][color=#007700], [/color][color=#0000bb]FileMode[/color][color=#007700].[/color][color=#0000bb]Open[/color][COLOR=#007700])
[/COLOR][color=#0000bb]Dim HashA[/color][color=#007700]() As [/color][color=#0000bb]Byte [/color][color=#007700]= [/color][color=#0000bb]Hash[/color][color=#007700].[/color][color=#0000bb]ComputeHash[/color][color=#007700]([/color][color=#0000bb]fsA[/color][COLOR=#007700])
[/COLOR][color=#0000bb]fsA[/color][color=#007700].[/color][color=#0000bb]Close[/color][COLOR=#007700]()
[/COLOR][color=#0000bb]Dim i [/color][color=#007700]As [/color][color=#0000bb]Integer [/color][color=#007700]= [/color][COLOR=#0000bb]0
[/COLOR][color=#007700]For [/color][color=#0000bb]i [/color][color=#007700]= [/color][color=#0000bb]0 To HashA[/color][color=#007700].[/color][color=#0000bb]Length [/color][color=#007700]- [/color][COLOR=#0000bb]1
Label1[/COLOR][color=#007700].[/color][color=#0000bb]Text [/color][color=#007700]= [/color][color=#0000bb]Label1[/color][color=#007700].[/color][color=#0000bb]Text [/color][color=#007700]& [/color][color=#0000bb]HashA[/color][color=#007700]([/color][color=#0000bb]i[/color][COLOR=#007700])
[/COLOR][COLOR=#0000bb]Next
End Sub
End [/COLOR][COLOR=#007700]Class
[/COLOR][/COLOR]
الاستخدام العملي لل Hash Algorithm يمكن في جلب Hash code لملف و مقارنتة بملف اخر للتاكد من عدم تعرض الملف الثاني للتحريف.
بالتوفيق
اخوكم Magic Sword