48 lines
1.5 KiB
VB.net
48 lines
1.5 KiB
VB.net
Imports System.Configuration
|
|
Imports System.Security.Cryptography
|
|
Imports System.Text
|
|
Imports Strata.Configuration.Client.Models.Jazz
|
|
|
|
Namespace Encryptors
|
|
|
|
Public Class UserGUIDEncryptionMethod
|
|
Implements IPasswordEncryptionMethod
|
|
|
|
#Region " Declarations "
|
|
|
|
Private Const NUMBER_ITERATIONS As Integer = 100000
|
|
|
|
#End Region
|
|
|
|
#Region " Methods "
|
|
|
|
Public Function Encode(ByVal username As String, ByVal anOrgPin As String, ByVal aNewPassword As String, ByVal aUserGUID As System.Guid, aSalt As String) As String Implements IPasswordEncryptionMethod.Encode
|
|
Dim salt As String = aUserGUID.ToString & ConfigurationManager.AppSettings(NameOf(StrataJazzOptions.UserGuidEncryptionKey))
|
|
|
|
Dim result As String = GetHashedValue(aNewPassword, salt)
|
|
For i As Integer = 1 To NUMBER_ITERATIONS
|
|
result = GetHashedValue(result)
|
|
Next
|
|
|
|
Return result
|
|
End Function
|
|
|
|
Private Shared Function GetHashedValue(ByVal aValue As String) As String
|
|
|
|
'Create an instance of the sha encrypter
|
|
Using hasher As HashAlgorithm = SHA256.Create()
|
|
Return Convert.ToBase64String(hasher.ComputeHash(Encoding.UTF8.GetBytes(aValue)))
|
|
End Using
|
|
|
|
End Function
|
|
|
|
Private Shared Function GetHashedValue(ByVal aValue As String, ByVal aSalt As String) As String
|
|
Return GetHashedValue(aValue & aSalt)
|
|
End Function
|
|
|
|
#End Region
|
|
|
|
End Class
|
|
|
|
End Namespace
|