Imports System.Security.Cryptography
Public Enum AccessTypeEnum
Dim Features = New FeatureAccess With {
.DR = AccessTypeEnum.None,
.EE = AccessTypeEnum.None,
.FDD = AccessTypeEnum.None,
.Scheduling = AccessTypeEnum.None
Dim ValidationHash = Features.ComputeValidationHash()
Dim SerializedObject = JsonConvert.SerializeObject(Features)
Dim sValue = SerializedObject & "." & ValidationHash
Console.WriteLine(sValue)
Private Class FeatureAccess
Private Const SALT = "ru7fbUQHoQyp8*&xV*QJf2gc7f#hVR@0"
Public Function ComputeValidationHash() As String
Dim Hasher = MD5.Create()
Dim SerializedObject = JsonConvert.SerializeObject(Me)
Dim ComputedHash As Byte() = Hasher.ComputeHash(System.Text.Encoding.ASCII.GetBytes(SerializedObject & SALT))
Return ConvertByteDataToHexString(ComputedHash)
Private Function ConvertByteDataToHexString(bytes As Byte()) As String
Dim Builder As New System.Text.StringBuilder()
For n = 0 To bytes.Length - 1
Builder.Append(bytes(n).ToString("X2"))
Return Builder.ToString().ToLower()
Public Property DR As AccessTypeEnum
Public Property EE As AccessTypeEnum
Public Property FDD As AccessTypeEnum
Public Property Scheduling As AccessTypeEnum