【加試題】某數(shù)據(jù)加密方法描述如下:
(1)以字節(jié)為單位進行加密處理;
(2)將1個字節(jié)的8位二進制數(shù)分割成前4位與后4位兩個二進制數(shù);
(3)分別將上述兩個4位二進制數(shù)轉換為十進制數(shù);
(4)將每個十進制數(shù)轉換為1個加密字符,對應的“密碼表”如下:
值(十進制) |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
加密字符 |
I |
l |
i |
k |
e |
C |
H |
N |
P |
0 |
s |
t |
c |
a |
r |
d |
小明按照上述方法,設計了一個字符串(僅包含ASCII字符)加密的VB程序,功能如下:單擊“加密”按鈕Commandl,程序依次將文本框Textl中每個字符的ASCII碼值作為1個字節(jié)轉換為兩個加密字符,連接這些加密字符,最后在文本框Text2中輸出加密結果.如圖1顯示了字符串中一個字符的加密過程:
程序運行效果如圖2所示.
實現(xiàn)上述功能的VB程序如下:
(1)請?zhí)钊牒线m代碼.
Private Sub Command1_Click ( ?。?br />Dim n As Integer,s As String,i As Integer,ss As String
Dim a As Integer'存儲加密前字符的ASCII碼
Dim b1As Integer,b2As Integer'分別存儲分割、轉換后的兩個十進制數(shù)
s=Text1.Text
①
n=Len(s)
n=Len(s)
For i=1To n
a=Asc(Mid(s,i,1))
b1=a\16
b2=a Mod 16
ss=ss+Code2Char(b1)+Code2Char(b2)
Text2.Text=ss
Next i
End Sub
'十進制值轉換為加密字符的函數(shù)
Function Code2Char(c As Integer) As String
Dim s As String
s=“IlikeCHNpostcard”
Code2Char=②
Mid(s,c+1,1)
Mid(s,c+1,1)
End Function
(2)若將“密碼表”中值為“0”對應的加密字符“I”改成“i”,加密后的密文可能無法解密,原因是
加密字符i對應兩個值0,2
加密字符i對應兩個值0,2
.