📄 加密和解密.htm
字号:
<HTML>
<HEAD>
<META name="VI60_DefaultClientScript" Content="VBScript">
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>
密码生成器
</TITLE>
</HEAD>
<script LANGUAGE="VBScript">
<!--
'萨拉法加密
Function Crypt(texti, salasana)
dim X1
'得到辅助字符串所有字符ASC码的总和
For T = 1 To Len(salasana)
sana = Asc(Mid(salasana, T, 1))
X1 = X1 + sana
Next
X1 = Int((X1 * 0.1) / 6)
'得到一个用于加密的固定值salasana
salasana = X1
G = 0
Crypted=""
'轮流给每个字符加密,其方式不具有太多的理论性,完全依靠固定规则的数字计算,再将得到的Ascii码转换为字符
For TT = 1 To Len(texti)
sana = Asc(Mid(texti, TT, 1))
G = G + 1
If G = 6 Then G = 0
X1 = 0
If G = 0 Then X1 = sana - (salasana - 2)
If G = 1 Then X1 = sana + (salasana - 5)
If G = 2 Then X1 = sana - (salasana - 4)
If G = 3 Then X1 = sana + (salasana - 2)
If G = 4 Then X1 = sana - (salasana - 3)
If G = 5 Then X1 = sana + (salasana - 5)
X1 = X1 + G
Crypted = Crypted & Chr(X1)
Next
Crypt = Crypted
End Function
'萨拉法解密,是上述过程的逆过程,即如果上面符号是正的,这就是负的
Function DeCrypt(texti, salasana)
For T = 1 To Len(salasana)
sana = Asc(Mid(salasana, T, 1))
X1 = X1 + sana
Next
X1 = Int((X1 * 0.1) / 6)
salasana = X1
G = 0
DeCrypted=""
For TT = 1 To Len(texti)
sana = Asc(Mid(texti, TT, 1))
G = G + 1
If G = 6 Then G = 0
X1 = 0
If G = 0 Then X1 = sana + (salasana - 2)
If G = 1 Then X1 = sana - (salasana - 5)
If G = 2 Then X1 = sana + (salasana - 4)
If G = 3 Then X1 = sana - (salasana - 2)
If G = 4 Then X1 = sana + (salasana - 3)
If G = 5 Then X1 = sana - (salasana - 5)
X1 = X1 - G
DeCrypted = DeCrypted & Chr(X1)
Next
DeCrypt = DeCrypted
End Function
'迷式加密法,加密和解密是互逆过程
'参数是要加密(或解密)的字符串和关键字
Function Enigma(mstext,sKeyString)
Dim X
Dim Y
Dim Z
Dim W
Dim C2E
Dim Str2Encrypt
Dim LCW
Dim LS2E
Dim LAM
Dim MP
Dim Matrix
Dim mov1
Dim mov2
Dim CodeWord
Dim CWL
Dim EncryptedString
Dim EncryptedLetter
Dim strCryptMatrix(97)
'初始矩阵的字符串,这里包含了几乎所有的可输入字符,前面7位标识了这个字符串的代号
Matrix = "8x3p5BeabcdfghijklmnoqrstuvwyzACDEFGHIJKLMNOPQRSTUVWXYZ 1246790-.#/\!@$<>&*()[]{}';:,?=+~`^|%_"
'增添回车符
Matrix = Matrix + Chr(13)
'增添退格符
Matrix = Matrix + Chr(10)
'增添"符
Matrix = Matrix + Chr(34)
W = 1
'初始矩阵长度
LAM = Len(Matrix)
'加密矩阵的第一行就是初始矩阵
strCryptMatrix(1) = Matrix
'生成一个LAM*LAM的加密矩阵,矩阵元如下形式
'以3*3为例:
'|1 2 3|
'|2 3 1|
'|3 1 2|
'矩阵是个对称阵
For X = 2 To LAM
mov1 = Left(strCryptMatrix(W), 1)
mov2 = Right(strCryptMatrix(W), (LAM - 1))
strCryptMatrix(X) = mov2 + mov1
W = W + 1
Next
'加密关键字字符串
CodeWord = sKeyString
'需加密的字符串
Str2Encrypt = mstext
'需加密字符串的长度
LS2E = Len(mstext)
'加密关键字串的长度
LCW = Len(CodeWord)
'加密字
EncryptedLetter = ""
'加密好的字符串
EncryptedString = ""
'加密关键字指针
Y = 1
For X = 1 To LS2E
'取待加密字符串中的一个字符
C2E = Mid(Str2Encrypt, X, 1)
'获取该字符在起始矩阵(加密矩阵的第一行)中的位置
MP = InStr(1, Matrix, C2E, 0)
'取一个加密关键字
CWL = Mid(CodeWord, Y, 1)
'遍历矩阵的行,寻找合适的加密字
For Z = 1 To LAM
'如果矩阵哪一行中的第MP个字符恰好是加密关键字
If Mid(strCryptMatrix(Z), MP, 1) = CWL Then
'则该字符所在矩阵的第一个字符即为加密字符
EncryptedLetter = Left(strCryptMatrix(Z), 1)
'存储加密后的字符
EncryptedString = EncryptedString + EncryptedLetter
Exit For
End If
Next
'加密关键字指针加1
Y = Y + 1
'如果大于LCW就回1
If Y > LCW Then Y = 1
Next
'将加密(解密)好的字符串赋给函数值
Enigma = EncryptedString
End Function
'当用户改变了密码生成方法时
sub D1_onchange
'根据用户的不同选择,决定辅助选项栏的内容
select case D1.value
case "0"
div0.style.visibility ="visible"
div1.style.visibility ="hidden"
case "1"
div0.style.visibility ="hidden"
div1.style.visibility ="visible"
end select
end sub
'禁止用户编辑密码栏
sub S2_onfocus
s2.blur
end sub
'用户点击加密键
sub B1_onclick
'根据不同的加密方法进行加密
select case D1.value
case "0"
if trim(t1.value)="" then
msgbox "没有密钥,不能加密"
exit sub
end if
s2.value =enigma(S1.value ,t1.value)
S1.value=""
case "1"
if trim(t2.value)="" then
msgbox "没有密钥,不能加密"
exit sub
end if
S2.value =Crypt(S1.value,t2.value)
S1.value=""
end select
end sub
'用户点击了解密键
sub B2_onclick
'根据不同的加密方法进行解密
select case D1.value
case "0"
if trim(t1.value)="" then
msgbox "没有密钥,不能解密"
exit sub
end if
s1.value =enigma(S2.value ,t1.value)
S2.value=""
case "1"
if trim(t2.value)="" then
msgbox "没有密钥,不能解密"
exit sub
end if
S1.value =DeCrypt(S2.value,t2.value)
s2.value =""
end select
end sub
-->
</script>
<body background="1.jpg">
<p align="center">
<font size="5" >
<strong>加密和解密</strong>
</font>
</p>
<div align="center">
<center>
<table border="2" width="95.4%" height=226 style="HEIGHT: 226px; WIDTH: 436px">
<tr>
<td width="50%">
<p><font>
<strong>原文:</strong>
<strong>
<TEXTAREA name=S1></TEXTAREA>
</strong>
</font>
</p>
</td>
<td width="50%">
<p><font size="3" >
<strong>选择加密算法:</strong><br><br>
<strong>
<select name="D1" size="1">
<option selected value="0">迷 式 加 密 法
<option value="1">辅 助 加 密 法
</select>
</strong>
</font>
</p>
<p>
<font face="隶书" size="3" color="#ff0000">
</font>
</p>
</td>
</tr>
<tr>
<td width="50%">
<font >
<strong>密码:</strong>
</font>
<p><font>
<strong><TEXTAREA name=S2>
</TEXTAREA></strong>
</font>
</p>
</td>
<td width="50%">
<div id=div0 style="POSITION: absolute; TOP: 200px; VISIBILITY: visible" >
<font>
<strong>加密密钥(关键字符):
</strong>
</font><br><br>
<input id=t1>
</div>
<div id=div1 style="POSITION: absolute; TOP: 200px; VISIBILITY: hidden" >
<font >
<strong>加密密钥(加密字符):
</strong>
</font><br><br>
<input id=t2>
</div>
</td>
</tr>
</table>
<font color=red>
<strong>注一定要输入加密或解密,否则不能做任何事
</strong>
</font>
<br><br>
<strong>
<input type="button" value="加密" name="B1">
<input type="button" value="解密" name="B2">
</strong>
</center>
</div>
</body>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -