'******************************************************************************* ' Project : Generic ' ' Module : basEncryptDecrypt ' DateTime : 3/26/2010 09:01 ' Author : Arvin Meyer ' Purpose : Various encryption procedures ' References: ' Index :(Updated on 3/26/2010) ' Encrypt - Encrypt/Decrypt string using key '******************************************************************************* Option Compare Database Option Explicit Public Function Encrypt(ByVal strIn As String, ByVal strKey As String) As String 'Purpose : Encrypt/Decrypt string using key 'DateTime : 12/27/2007 'Author : Arvin Meyer 'Requires : strIn - Value to be encrypted or decrypted ' strKey - Case sensitive password key Dim i As Integer Dim bytData As Byte Dim bytKey As Byte Dim strEncrypted As String On Error GoTo err_PROC Encrypt = vbNullString For i = 1 To Len(strIn) bytData = Asc(Mid(strIn, i, 1)) bytKey = Asc(Mid(strKey, (i Mod Len(strKey)) + 1)) strEncrypted = strEncrypted & Chr(bytData Xor bytKey) Next i If strEncrypted <> vbNullString Then Encrypt = strEncrypted End If exit_PROC: On Error Resume Next Exit Function err_PROC: Dim strErrMsg As String Dim lngErrIconBtn As Long strErrMsg = "Error " & Err.Number & " (" & Err.Description & ") " _ & "occurred in procedure Encrypt of " _ & "VBA Document basEncryptDecrypt" lngErrIconBtn = vbOKOnly + vbInformation MsgBox strErrMsg, lngErrIconBtn, "Error" Resume exit_PROC End Function ' Prefix inserted before masked passwords. ' Move to declarations area. Global Const PASSWORD_PREFIX = "ĄżĄ" Public Function MaskPassword(inp As Variant) As Variant ' Returns masked version of a password ' Author unknown If IsNull(inp) Then MaskPassword = Null ElseIf Left(inp, Len(PASSWORD_PREFIX)) = PASSWORD_PREFIX And Len(PASSWORD_PREFIX) > 0 Then MaskPassword = inp Else Dim i As Integer For i = 1 To Len(inp) MaskPassword = MaskPassword & Chr(Asc(Mid(inp, i, 1)) + (i ^ 3 Mod 10) + 10) Next i MaskPassword = PASSWORD_PREFIX & MaskPassword End If End Function Public Function UnmaskPassword(inp As Variant) As Variant ' Undoes the password mask ' Author unknown If IsNull(inp) Then UnmaskPassword = Null ElseIf False Then UnmaskPassword = inp Else Dim i As Integer For i = 1 To Len(inp) UnmaskPassword = UnmaskPassword & Chr(Asc(Mid(inp, i, 1)) - (i ^ 3 Mod 10) - 10) Next i UnmaskPassword = Mid(UnmaskPassword, Len(PASSWORD_PREFIX) + 1) End If End Function