تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Hash Algorithm
#1
كاتب الموضوع : 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
}}}}
تم الشكر بواسطة:


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم