VB_Python代码对照算法百题(003)

VB_Python代码对照算法百题(003)

VB代码:

(2015年10月_浙江)17.某数据加密方法描述如下:

(1)以字节为单位进行加密处理;

(2)将1个字节的8位二进制数分割成前4位与后4位两个二进制数;

(3)分别将上述两个4位二进制数转换为十进制数;

(4)将每个十进制数转换为1个加密字符,对应的“密码表”如下:

小明按照上述方法,设计了一个字符串(仅包含ASCII字符)加密的VB程序,功能如下:单击“加密”按钮Commandl,程序依次将文本框Textl中每个字符的ASCII码值作为1个字节转换为两个加密字符,连接这些加密字符,最后在文本框Text2中输出加密结果。下表显示了字符串中一个字符的加密过程:

程序运行效果如第17题图所示。

实现上述功能的VB程序如下:

(1)请在划线处填入合适代码。

Private SubCommand1_Click()

Dim n As Integer, s As String, i As Integer,ss As String

Dim a As Integer '存储加密前字符的ASCII码

Dim b1 As Integer, b2 As Integer '分别存储分割、转换后的两个十进制数

s = Text1.Text

For i = 1 To n

a =Asc(Mid(s, i, 1))

b1 =a \ 16

b2 =a Mod 16

ss =ss + Code2Char(b1) + Code2Char(b2)

Next i

Text2.Text = ss

End Sub

'十进制值转换为加密字符的函数

Function Code2Char(cAs Integer) As String

Dim s As String

s = "IlikeCHNpostcard"

Code2Char =②

End Function

(2)若将“密码表”中值为“0”对应的加密字符“I”改成“i”,加密后的密文可能无法解密,原因是。

参考答案:

(1)①n = Len(s)或 n = Len(Text1.Text) ②Mid(s,c + 1, 1)

(2)加密字符i对应两个值0,2

Python代码:

def code2char(c):

s = "IlikeCHNpostcard"

return s[c]

s=input('请输入明文:\n')

n = len(s)

ss=''

for i in range(n):

a=ord(s[i])

b1=a//16

b2=a%16

ss=ss + code2char(b1) + code2char(b2)

print('密文为:'+ ss)

Python代码运行结果:

请输入明文:

This is an example!

密文为:CeHpHoNkiIHoNkiIHlHriIHCNpHlHaNIHcHCil

====================

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180902G1GMHT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券