Text Encryption with a Password in ASP
Version: ASP
Compatibility: ASP3.0
Category: ASP
This is a text encryption/decryption snippet that utilizes the powerful xICE encryption algorithm. It's extremely simple to use.
To encrypt use:
QuickEncrypt("your text","password")
To decrypt just use:
QuickDecrypt("encrypted text here","password").
Declarations:
Dim dblCenterY
Dim dblCenterX
Dim LastResult
Dim LastErrDes
Dim LastErrNum
Const errInvalidKeyLength = 65101
Const errInvalidKey = 65102
Const errInvalidSize = 65103
Const errKeyMissing = 65303
Const errClearTextMissing = 65304
Const errCipherTextMissing = 65305
Const A = 10
Const B = 11
Const C = 12
Const D = 13
Const E = 14
Const F = 15
Code:
Function QuickEncrypt(strClear, strKey)
Dim intRet
intRet = EncryptText(strClear, strKey)
If intRet = -1 Then
QuickEncrypt = "ERROR"
Else
QuickEncrypt = LastResult
End If
End Function
Function QuickDecrypt(strCipher, strKey)
Dim intRet
intRet = DecryptText(strCipher, strKey)
If intRet = -1 Then
QuickDecrypt = "ERROR"
Else
QuickDecrypt = LastResult
End If
End Function
Function GetStrength(strPassword)
strPassword = CStr(strPassword)
GetStrength = (Len(strPassword) * 8) + (Len(GetSerial) * 8)
End Function
Function GetSerial()
GetSerial = Now
End Function
Function GetHash(strKey)
Dim strCipher
Dim byKey()
ReDim byKey(Len(strKey))
For i = 1 To Len(strKey)
byKey(i) = Asc(Mid(strKey, i, 1))
Next
For i = 1 To UBound(byKey) / 2
strCipher = strCipher & NumToHex(byKey(i) Xor byKey((UBound(byKey) - i) + 1))
Next
GetHash = strCipher
End Function
Function CreatePassword(strSeed, lngLength)
Dim bySeed()
Dim bySerial()
Dim strTimeSerial
Dim Random
Dim lngPosition
Dim lngSerialPosition
strCipher = ""
lngPosition = 1
lngSerialPosition = 1
ReDim bySeed(Len(strSeed))
For i = 1 To Len(strSeed)
bySeed(i) = Asc(Mid(strSeed, i, 1))
Next
strTimeSerial = GetSerial()
ReDim bySerial(Len(strTimeSerial))
For i = 1 To Len(strTimeSerial)
bySerial(i) = Asc(Mid(strTimeSerial, i, 1))
Next
ReCenter CDbl(bySeed(lngPosition)), CDbl(bySerial(lngSerialPosition))
lngPosition = lngPosition + 1
lngSerialPosition = lngSerialPosition + 1
For i = 1 To (lngLength / 2)
Generate CDbl(bySeed(lngPosition)), CDbl(bySerial(lngSerialPosition)), False
strCipher = strCipher & NumToHex(MakeRandom(dblCenterX, 255))
strCipher = strCipher & NumToHex(MakeRandom(dblCenterY, 255))
If lngPosition = Len(strSeed) Then
lngPosition = 1
Else
lngPosition = lngPosition + 1
End If
If lngSerialPosition = Len(strTimeSerial) Then
lngSerialPosition = 1
Else
lngSerialPosition = lngSerialPosition + 1
End If
Next
CreatePassword = Left(strCipher, lngLength)
End Function
Sub ReCenter(mdblCenterY, mdblCenterX)
dblCenterY = mdblCenterY
dblCenterX = mdblCenterX
End Sub
Sub Generate(dblRadius, dblTheta, blnRad)
Const Pi = 3.14159265358979
Const sngMaxUpper = 2147483647
Const sngMaxLower = -2147483648
If blnRad = False Then
If (dblRadius * Cos((dblTheta / 180) * Pi)) + dblCenterX > sngMaxUpper Or (dblRadius * Cos((dblTheta / 180) * Pi)) + dblCenterX < sngMaxLower Then
ReCenter dblCenterY, 0
Else
dblCenterX = (dblRadius * Cos((dblTheta / 180) * Pi)) + dblCenterX
End If
If (dblRadius * Sin((dblTheta / 180) * Pi)) + dblCenterY > sngMaxUpper Or (dblRadius * Sin((dblTheta / 180) * Pi)) + dblCenterY < sngMaxLower Then
ReCenter 0, dblCenterX
Else
dblCenterY = (dblRadius * Sin((dblTheta / 180) * Pi)) + dblCenterY
End If
Else
If (dblRadius * Cos(dblTheta)) + dblCenterX > sngMaxUpper Or (dblRadius * Cos(dblTheta)) + dblCenterX < sngMaxLower Then
ReCenter dblCenterY, 0
Else
dblCenterX = (dblRadius * Cos(dblTheta)) + dblCenterX
End If
If (dblRadius * Sin(dblTheta)) + dblCenterY > sngMaxUpper Or (dblRadius * Sin(dblTheta)) + dblCenterY < sngMaxLower Then
ReCenter 0, dblCenterX
Else
dblCenterY = (dblRadius * Sin(dblTheta)) + dblCenterY
End If
End If
End Sub
Function MakeRandom(dblValue, lngMax)
Dim lngRandom
lngRandom = Int(dblValue Mod (lngMax + 1))
If lngRandom > lngMax Then
lngRandom = 0
End If
MakeRandom = Abs(lngRandom)
End Function
Sub RaiseError(lngErrNum, strErrDes)
LastErrDes = strErrDes
LastErrNum = lngErrNum
End Sub
Function EncryptText(strClear, strKey)
Dim byClear()
Dim byKey()
Dim byCipher()
Dim lngPosition
Dim lngSerialPosition
Dim strTimeSerial
Dim blnSecondValue
Dim strCipher
strKey = CStr(strKey)
strClear = CStr(strClear)
If strKey = "" Then
RaiseError errKeyMissing, "Key Missing"
EncryptText = -1
Exit Function
End If
If Len(strKey) <= 1 Then
RaiseError errInvalidKeyLength, "Invalid Key Length"
EncryptText = -1
Exit Function
End If
strTimeSerial = GetSerial()
ReDim byKey(Len(strKey))
For i = 1 To Len(strKey)
byKey(i) = Asc(Mid(strKey, i, 1))
Next
If Len(strClear) = 0 Then
RaiseError errInvalidSize, "Text Has Zero Length"
EncryptText = -1
Exit Function
End If
ReDim byClear(Len(strClear))
For i = 1 To Len(strClear)
byClear(i) = Asc(Mid(strClear, i, 1))
Next
lngPosition = 1
lngSerialPosition = 1
For i = 1 To UBound(byKey) / 2
strCipher = strCipher & NumToHex(byKey(i) Xor byKey((UBound(byKey) - i) + 1))
Next
lngPosition = 1
strCipher = strCipher & NumToHex(Len(strTimeSerial) Xor byKey(lngPosition))
lngPosition = lngPosition + 1
For i = 1 To Len(strTimeSerial)
strCipher = strCipher & NumToHex(byKey(lngPosition) Xor Asc(Mid(strTimeSerial, i, 1)))
If lngPosition = UBound(byKey) Then
lngPosition = 1
Else
lngPosition = lngPosition + 1
End If
Next
lngPosition = 1
lngSerialPosition = 1
ReCenter CDbl(byKey(lngPosition)), Asc(Mid(strTimeSerial, lngSerialPosition, 1))
lngPosition = lngPosition + 1
lngSerialPosition = lngSerialPosition + 1
blnSecondValue = False
For i = 1 To UBound(byClear)
If blnSecondValue = False Then
Generate CDbl(byKey(lngPosition)), Asc(Mid(strTimeSerial, lngSerialPosition, 1)), False
strCipher = strCipher & NumToHex(byClear(i) Xor MakeRandom(dblCenterX, 255))
blnSecondValue = True
Else
strCipher = strCipher & NumToHex(byClear(i) Xor MakeRandom(dblCenterY, 255))
blnSecondValue = False
End If
If lngPosition = UBound(byKey) Then
lngPosition = 1
Else
lngPosition = lngPosition + 1
End If
If lngSerialPosition = Len(strTimeSerial) Then
lngSerialPosition = 1
Else
lngSerialPosition = lngSerialPosition + 1
End If
Next
LastResult = strCipher
EncryptText = 1
Exit Function
End Function
Public Function DecryptText(strCipher, strKey)
Dim strClear
Dim byCipher()
Dim byKey()
Dim strTimeSerial
Dim strCheckKey
Dim lngPosition
Dim lngSerialPosition
Dim lngCipherPosition
Dim bySerialLength
Dim blnSecondValue
strCipher = CStr(strCipher)
strKey = CStr(strKey)
If Len(strCipher) = 0 Then
RaiseError errCipherTextMissing, "Cipher Text Missing"
DecryptText = -1
Exit Function
End If
If Len(strCipher) < 10 Then
RaiseError errInvalidSize, "Bad Text Length"
DecryptText = -1
Exit Function
End If
If Len(strKey) = 0 Then
RaiseError errKeyMissing, "Key Missing"
DecryptText = -1
Exit Function
End If
If Len(strKey) <= 1 Then
RaiseError errInvalidKeyLength, "Invalid Key Length"
DecryptText = -1
Exit Function
End If
ReDim byKey(Len(strKey))
For i = 1 To Len(strKey)
byKey(i) = Asc(Mid(strKey, i, 1))
Next
ReDim byCipher(Len(strCipher) / 2)
lngCipherPosition = 1
For i = 1 To Len(strCipher) Step 2
byCipher(lngCipherPosition) = HexToNum(Mid(strCipher, i, 2))
lngCipherPosition = lngCipherPosition + 1
Next
lngCipherPosition = 1
For i = 1 To UBound(byKey) / 2
strCheckKey = strCheckKey & NumToHex(byKey(i) Xor byKey((UBound(byKey) - i) + 1))
Next
If Left(strCipher, Len(strCheckKey)) <> strCheckKey Then
RaiseError errInvalidKey, "Invalid Key"
DecryptText = -1
Exit Function
Else
lngCipherPosition = (Len(strCheckKey) / 2) + 1
End If
lngPosition = 1
bySerialLength = byCipher(lngCipherPosition) Xor byKey(lngPosition)
lngCipherPosition = lngCipherPosition + 1
lngPosition = lngPosition + 1
For i = 1 To bySerialLength
strTimeSerial = strTimeSerial & Chr(byCipher(lngCipherPosition) Xor byKey(lngPosition))
If lngPosition = UBound(byKey) Then
lngPosition = 1
Else
lngPosition = lngPosition + 1
End If
lngCipherPosition = lngCipherPosition + 1
Next
lngPosition = 1
lngSerialPosition = 1
ReCenter CDbl(byKey(lngPosition)), Asc(Mid(strTimeSerial, lngSerialPosition, 1))
lngPosition = lngPosition + 1
lngSerialPosition = lngSerialPosition + 1
blnSecondValue = False
For i = 1 To UBound(byCipher) - lngCipherPosition + 1
If blnSecondValue = False Then
Generate CDbl(byKey(lngPosition)), Asc(Mid(strTimeSerial, lngSerialPosition, 1)), False
strClear = strClear & Chr(byCipher(lngCipherPosition) Xor MakeRandom(dblCenterX, 255))
blnSecondValue = True
Else
strClear = strClear & Chr(byCipher(lngCipherPosition) Xor MakeRandom(dblCenterY, 255))
blnSecondValue = False
End If
If lngPosition = UBound(byKey) Then
lngPosition = 1
Else
lngPosition = lngPosition + 1
End If
If lngSerialPosition = Len(strTimeSerial) Then
lngSerialPosition = 1
Else
lngSerialPosition = lngSerialPosition + 1
End If
lngCipherPosition = lngCipherPosition + 1
Next
LastResult = strClear
DecryptText = 1
Exit Function
End Function
Function NumToHex(bByte)
Dim strOne
Dim strTwo
strOne = CStr(Int((bByte / 16)))
strTwo = bByte - (16 * strOne)
If CDbl(strOne) > 9 Then
If CDbl(strOne) = 10 Then
strOne = "A"
ElseIf CDbl(strOne) = 11 Then
strOne = "B"
ElseIf CDbl(strOne) = 12 Then
strOne = "C"
ElseIf CDbl(strOne) = 13 Then
strOne = "D"
ElseIf CDbl(strOne) = 14 Then
strOne = "E"
ElseIf CDbl(strOne) = 15 Then
strOne = "F"
End If
End If
If CDbl(strTwo) > 9 Then
If strTwo = "10" Then
strTwo = "A"
ElseIf strTwo = "11" Then
strTwo = "B"
ElseIf strTwo = "12" Then
strTwo = "C"
ElseIf strTwo = "13" Then
strTwo = "D"
ElseIf strTwo = "14" Then
strTwo = "E"
ElseIf strTwo = "15" Then
strTwo = "F"
End If
End If
NumToHex = Right(strOne & strTwo, 2)
End Function
Function HexToNum(hexnum)
Dim X
Dim y
Dim cur
hexnum = UCase(hexnum)
cur = CStr(Right(hexnum, 1))
Select Case cur
Case "A"
y = A
Case "B"
y = B
Case "C"
y = C
Case "D"
y = D
Case "E"
y = E
Case "F"
y = F
Case Else
y = CDbl(cur)
End Select
Select Case Left(hexnum, 1)
Case "0"
X = (16 * CInt(Left(hexnum, 1))) + y
Case "1"
X = (16 * CInt(Left(hexnum, 1))) + y
Case "2"
X = (16 * CInt(Left(hexnum, 1))) + y
Case "3"
X = (16 * CInt(Left(hexnum, 1))) + y
Case "4"
X = (16 * CInt(Left(hexnum, 1))) + y
Case "5"
X = (16 * CInt(Left(hexnum, 1))) + y
Case "6"
X = (16 * CInt(Left(hexnum, 1))) + y
Case "7"
X = (16 * CInt(Left(hexnum, 1))) + y
Case "8"
X = (16 * CInt(Left(hexnum, 1))) + y
Case "9"
X = (16 * CInt(Left(hexnum, 1))) + y
Case "A"
X = 160 + y
Case "B"
X = 176 + y
Case "C"
X = 192 + y
Case "D"
X = 208 + y
Case "E"
X = 224 + y
Case "F"
X = 240 + y
End Select
HexToNum = X
End Function
5 comments:
hello... hapi blogging... have a nice day! just visiting here....
視訊美女msvt.視訊聊天室hibb.免費視訊twaric.金瓶梅視訊聊天室.戀愛ing免費視訊影音.成人交友視訊網.一夜激情聊天室.線上a片-免費影片.交友聊天室meet520.情色聊天.完美情人視訊.c字庫-視訊美女.一元真爽黃電影.線上a長片.免費視訊mm17i.美女視網魔.視訊交友-美女館.0401 影音視訊美女聊天室.東東成人論壇.免費成人片欣賞.ut女同聊天室.八大娛樂網-視訊.免費視訊聊天 no4.美女視訊聊天網.麗的情色遊戲.080 免費聊天網.交友嘟嘟聯誼網.影音視訊聊天.淫娃免費視訊聊天室.本土自拍-交友網.男人幫.520視訊聊天室.成人聊天fm1768.love104 影音視訊 love 秀.小高視訊聊天室.真愛視訊聊天室.限制寫真女郎.免費影音視訊hibb.五分鐘護半身視訊美女.激情網愛聊天室.一葉情貼圖片區.sex888免費影片.uthome 免費聊天室.後宮視訊聊天網.藍色情人視訊網.啦咧影音聊天室.本土自拍.網路交友hibb 17hi.go2av影片.美女交友-免費視訊.show girl5320貼影片.一葉晴視訊聊天av127.視訊交友愛戀之.kiss成人聊天室.免費視訊妹.情色交友視訊.台灣情綜合論壇.小弟弟成人娛樂網.104愛戀速配網.18美女視訊.1111 視訊網愛.美女交友elove
謝謝您囉~~很好的經驗分享! .................................................................
This content creates a new hope and inspiration with in me. Thanks for sharing article like this. The way you have stated everything above is quite awesome. Keep blogging like this. Thanks.
Branding Services in Chennai
Wonderful blog.. Thanks for sharing informative blog.. its very useful to me.. android Training in Chennai
Post a Comment