Public Function EncryptString(theString As String, TheKey As String) As String
Dim X As Long
Dim eKey As Byte, eChr As Byte, oChr As Byte, tmp$
For i = 1 To Len(TheKey)
'generate a key
eKey = Asc(Mid$(TheKey, i, 1)) Xor eKey
Next
'reset random function
Rnd -1
'initilize our key as the random seed
Randomize eKey
'generate a pseudo old char
oChr = Int(Rnd * 256)
'start encryption
For X = 1 To Len(theString)
pp = pp + 1
If pp > Len(TheKey) Then pp = 1
eChr = Asc(Mid$(theString, X, 1)) Xor _
Int(Rnd * 256) Xor Asc(Mid$(TheKey, pp, 1)) Xor oChr
tmp$ = tmp$ & Chr(eChr)
oChr = eChr
Next
EncryptString = AsctoHex(tmp$)
End Function
Public Function DecryptString(theString As String, TheKey As String) As String
Dim X As Long
Dim eKey As Byte, eChr As Byte, oChr As Byte, tmp$
For i = 1 To Len(TheKey)
'generate a key
eKey = Asc(Mid$(TheKey, i, 1)) Xor eKey
Next
'reset random function
Rnd -1
'initilize our key as the random seed
Randomize eKey
'generate a pseudo old char
oChr = Int(Rnd * 256)
'start decryption
tmp$ = HexToAsc(theString)
DecryptString = ""
For X = 1 To Len(tmp$)
pp = pp + 1
If pp > Len(TheKey) Then pp = 1
If X > 1 Then oChr = Asc(Mid$(tmp$, X - 1, 1))
eChr = Asc(Mid$(tmp$, X, 1)) Xor Int(Rnd * 256) Xor _
Asc(Mid$(TheKey, pp, 1)) Xor oChr
DecryptString = DecryptString & Chr$(eChr)
Next
End Function
Private Function AsctoHex(ByVal astr As String)
For X = 1 To Len(astr)
hc = Hex$(Asc(Mid$(astr, X, 1)))
nstr = nstr & String(2 - Len(hc), "0") & hc
Next
AsctoHex = nstr
End Function
|
|
||||
|
closed as too localized by Antony Vennard May 24 '12 at 7:36
This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, see the FAQ.
|
Yes, it looks quite vulnerable. It is a variant of a Vigenère cipher, with two changes:
So, the obvious way to attack this would be:
|
|||
|
|