تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
مجموعة التشفير في إتجاه واحد
#1
السلام عليكم ورحمة الله وبركاته

إمتدادا للموضوع الموجود في اللينك التالي
التشفيير في إتجاه واحد

تم تطوير الكلاس الموجود في اللينك أعلاه لكي يدعم أكثر من طريقة للتشفير و هنا يمكن لمستخدم الكلاس أن يختار من بين واحدة من ثلاثة طرق للتشفير وهي كالتالي

SHA512
SHA384
SHA256


الكلاس الجديد تمت كتابته بحيث لا يمكن تمريره من خلال الكود عن طريق تعريف متغير يعبر عنه
بل هو يسمح فقط بتمرير النوع المراد استخدامه في النشفير من خلال دالة عامة واحدة اسمها GetSuite
ومن خلالها يتم تمرير طريقة التشفير هلي هيئة Enum

الكود التالي يوضح شكل الكلاس

PHP كود :
Imports System.Security.Cryptography
Imports System
.Text

Public MustInherit Class HashSuite

#Region "Field"
 
   Private Const hashLength As Integer 8
#End Region

#Region "Property"
 
   Friend MustOverride Property Algorithm As HashAlgorithm
    Friend ReadOnly Property SuiteName 
As String
        Get
            Return MyBase
.GetType().Name.Replace("Suite"String.Empty)
 
       End Get
    End Property
#End Region

#Region "Method"
 
   Protected Friend MustOverride Function Encrypt(source As String) As String

    Protected Friend 
Function Verify(source As Stringhashed As String) As Boolean
        Return Verify
(Encoding.UTF8.GetBytes(Encrypt(source)), Encoding.UTF8.GetBytes(hashed))
 
   End Function

 
   Public Shared Function GetSuite(kind As SuiteKind) As Func(Of HashSuite)
 
       Select Case kind
            Case SuiteKind
.SHA512
                Return 
Function() GetSuites()(CInt(SuiteKind.SHA512))()
 
           Case SuiteKind.SHA384
                Return 
Function() GetSuites()(CInt(SuiteKind.SHA384))()

 
           Case SuiteKind.SHA256
                Return 
Function() GetSuites()(CInt(SuiteKind.SHA256))()
 
       End Select
        Return Nothing
    End 
Function

 
   Private Shared Iterator Function GetSuites() As IEnumerable(Of Func(Of HashSuite))
 
       Yield Function() New SHA256ManagedSuite
        Yield 
Function() New SHA384ManagedSuite
        Yield 
Function() New SHA512ManagedSuite
        Return
    End 
Function

 
   Private Function Encrypt(provider As HashAlgorithmsource As String) As String
        Dim data 
As Byte() = provider.ComputeHash(Encoding.UTF8.GetBytes(source))

 
       For i As Integer hashLength To data.Length 1 Step hashLength
            For j 
As Integer 0 To hashLength 1
                data
(j) = (data(j) Xor data(i))
 
           Next
        Next
        Return BitConverter
.ToString(data0hashLength).Replace("-"String.Empty)

 
   End Function

 
   Private Function Verify(a() As Byteb() As Byte) As Boolean
        Dim length 
As Integer a.Length Xor b.Length
        Dim i 
As Integer 0
        While i 
a.Length AndAlso i b.Length
            length 
length Or a(i) Xor b(i)
 
           i += 1
        End 
While
 
       Return length 0
    End 
Function

#End Region

#Region "SHA512ManagedSuite"

 
   Private Class SHA512ManagedSuite
        Inherits HashSuite

#Region "Field"
 
       Private internalHasher As HashAlgorithm
#End Region

#Region "Property"
 
       Friend Overrides Property Algorithm As HashAlgorithm
            Get
                Dim hasher 
As HashAlgorithm internalHasher
                If hasher Is Nothing Then
                    hasher 
= New SHA512Managed
                    Algorithm 
hasher
                End 
If
 
               Return hasher
            End Get
            Set
(value As HashAlgorithm)
 
               internalHasher value
            End Set
        End Property
#End Region

#Region "Method"
 
       Protected Friend Overrides Function Encrypt(source As String) As String
            Return MyBase
.Encrypt(Algorithmsource)
 
       End Function
#End Region

 
   End Class ' SHA512ManagedSuite

#End Region

#Region "SHA384ManagedSuite"
    Private Class SHA384ManagedSuite
        Inherits HashSuite

#Region "Field"
        Private internalHasher As HashAlgorithm
#End Region

#Region "Property"
        Friend Overrides Property Algorithm As HashAlgorithm
            Get
                Dim hasher As HashAlgorithm = internalHasher
                If hasher Is Nothing Then
                    hasher = New SHA384Managed
                    Algorithm = hasher
                End If
                Return hasher
            End Get
            Set(value As HashAlgorithm)
                internalHasher = value
            End Set
        End Property
#End Region

#Region "Method"
        Protected Friend Overrides Function Encrypt(source As String) As String
            Return MyBase.Encrypt(Algorithm, source)
        End Function
#End Region

    End Class ' 
SHA384ManagedSuite

#End Region

#Region "SHA256ManagedSuite"

 
   Private Class SHA256ManagedSuite
        Inherits HashSuite

#Region "Field"
 
       Private internalHasher As HashAlgorithm
#End Region

#Region "Property"
 
       Friend Overrides Property Algorithm As HashAlgorithm
            Get
                Dim hasher 
As HashAlgorithm internalHasher
                If hasher Is Nothing Then
                    hasher 
= New SHA256Managed
                    Algorithm 
hasher
                End 
If
 
               Return hasher
            End Get
            Set
(value As HashAlgorithm)
 
               internalHasher value
            End Set
        End Property
#End Region

#Region "Method"
 
       Protected Friend Overrides Function Encrypt(source As String) As String
            Return MyBase
.Encrypt(Algorithmsource)
 
       End Function
#End Region

 
   End Class ' SHA256ManagedSuite

#End Region

End Class ' 
HashSuite

Public Enum SuiteKind
    SHA512 
0
    SHA384 
1
    SHA256 
2
End Enum 

في المرفقات ستجدون الكود كاملا مكتوب ينسخة الفيحوال استوديو 2015 و ايضا في المرفقات ستجدون توضيح لكيفية استخدام الكلاس


الملفات المرفقة
.rar   Test_OneWayHash.rar (الحجم : 71.19 ك ب / التحميلات : 129)
الرد }}}
تم الشكر بواسطة: myalsailamy
#2
جميل جدا .. سلمت يداك
اسم معرفي : محمد يحيى
الرد }}}
تم الشكر بواسطة:
#3
شكرا لك موضوعك رائع
(( نحن قوم أعزنا الله بالإسلام فمهما ابتغينا العزة بغيره أذلنا الله )) .. 











الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  Private Text Encryption -خدمة للمبرمجين في جديد عالم التشفير- RaggiTech 1 3,545 07-05-20, 05:48 AM
آخر رد: سعود
  التشفيير في إتجاه واحد silverlight 5 4,614 29-05-19, 10:33 PM
آخر رد: egbest2
  [VB.NET] انتبه من كتابة الشرط if في سطر واحد ali.alfoly 0 1,944 02-01-19, 06:32 AM
آخر رد: ali.alfoly
  [درس فيديو] شرح ربط البرنامج بقاعدة بيانات, إدراج حذف تعديل جلب البيانات ( بدون أن تكتب سطر واحد) عبدالله الدوسري 4 6,449 08-02-18, 12:55 AM
آخر رد: Ameer Eagle
  التشفير وهم أم حقيقة silverlight 10 7,933 18-10-17, 10:49 AM
آخر رد: silverlight
  [VB.NET] مجموعة من الدروس الخاصة بالفيجوال بيسك دوت نت ayoub 1 3,512 18-03-17, 12:05 AM
آخر رد: sendbad100
  [مقال] دمج كل ملفات برنامجك الى ملف تنفيذى واحد ali.alfoly 25 21,871 02-12-16, 04:04 PM
آخر رد: ali.alfoly
  Conventers مجموعة برمج لتحويل الكود بين لغات البرمجه zinom 2 3,473 29-12-15, 01:30 AM
آخر رد: zinom
  [كود] إختيار صف واحد أو اختيار جميع الصفوف في الداتا جريد فيو silverlight 0 3,752 18-12-15, 03:50 PM
آخر رد: silverlight
  [VB.NET] التشفير باستخدام خوارزمية rsa alking-0999 10 7,543 08-07-15, 04:24 PM
آخر رد: مبرمج بلا حدود

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


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