①将明码中每个字符的八位二进制ASCII码(不足八位的左端补0,凑足八位)分成两段(左4位一段,右4位为另一段),如字符“C”的二进制ASCI值为01000011,分段后为0100,0011 ;
②将高位段(左边4位)左移一位,并将原第一位数码移到第4位(如0100转化为1000),再转化为十六进制数(如1000 化为8);
③对另一段(右4位)执行2)所示算法,如0011→0110→6;
④顺次连接两位十六进制数,得到该字符的暗码,如“C”的暗码为“86”;
⑤将每个字符的暗码按照明码的顺序连接。
实现上述功能的VB程序如下,请回答下列问题:
Private Sub Command1_Click()
Dim i As Integer, j As Integer, m As Integer, k As Integer
Dim c As String, x As Integer, y As Integer
Dim d(1 To 8)As Integer '数组d存储字符ASCII码二进制从左到右的各位数码
Dim mw As String 'mw存储暗码
mw = " "
For i=1 To Len(Text1. Text)
c= Mid(Text1. Text, i, 1)
For j=1 To 8
d(j)=0
Next j
m= Asc(c)
①
Do While m>0
d(k)=m Mod 2
m=m\2
k=k-1
Loop
x=d(1) : y=d(5)
For j=1 To 3
d(j)=d(j+1)
②
Next j
d(4)= x:d(8)=y
mw= mw十btoh(d)
Next i
Text2. Text= mw
End Sub
'以下函数是将数组元素中的二进制数转换成对应的十六进制数
Function btoh(m() As Integer) As String
'将数组m作为函数的参数
Dim s As Integer, i As Integer
Dim str As String, ch As String
str=" "
s=0 : ch=" "
For i=1 To 8
s=s * 2+m(i)
If i=4 Then
ch= Mid(str, s+1, 1)
s= 0
End If
Next i
③
End Function
① ② ③
def jiami(x,key):
if 'a'<=x<='z':
x=chr((ord(x))%26+65)
return x
mingwen=input('请输入明文:')
key=input('请输入密钥:')
miwen=''
for i in range(n):
a=mingwen[i]
print(miwen)