数据加密--课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)
实例6:数据加密
数据加密是保存数据的一种方法,它通过加密算法和密钥将数据从明文转换为密文。
假设当前开发的程序中需要对用户的密码进行加密处理,已知用户的密码均为6位数字,其加密规则如下:
- 获取每个数字的ASCII值;
- 将所有数字的ASCII值进行累加求和;
- 将每个数字对应的ASCII值按照从前往后的顺序进行拼接,并将拼接后的结果进行反转;
- 将反转的结果与前面累加的结果相加,所得的结果即为加密后的密码。
本实例要求编写程序,按照上述加密规则讲用户输入的密码进行加密,并输出加密后的密码。
实例目标
通过完成本实例,读者应掌握以下知识技能:
- 熟练使用for循环
- 熟练使用if-else语句
实例分析
根据加密规则对密码进行加密,第1步使用for循环获取密码中每个数字对应的ASCII值;第2步将获取的ASCII值进行累加;第3步对所有的ASCII值进行拼接操作,并对拼接的结果进行反转;第4步将反转的结果与ASCII的累加值进行相加,得出的结果即为加密后的数据。
代码实现
raw_data = input('请输入密码:')
num_asc = 0 # ASCII累加值
str_pwd = '' # ASCII拼接值
for i in raw_data:
ascii_val = ord(i) # 1.获取每个元素的ASCII值
num_asc = ascii_val + num_asc # 2.对遍历的ASCII值进行累加操作
str_pwd += str(ascii_val) # 3.拼接操作
reversal_num = str_pwd[::-1] # 4.将拼接的ASCII值倒序排列
encryption_num = int(reversal_num) + num_asc
print(f"加密后的密码为:{encryption_num}")
首先使用input()函数接收用户的输入的密码,之后设定变量num_asc与变量str_pwd分别来表示数字ASCII累加值与数字ASCII拼接值,然后在for循环中遍历用户输入的密码,使用ord()函数获取每个数字元素的ASCII值并赋值给变量ascii_val,累加所有的ASCII值并赋值给变量num_asc,对每个数字的ASCII值对进行拼接操作并赋值给变量str_pwd,通过切片方式将拼接后的结果进行倒序排列,最后将变量num_asc和变量reversal_num进行累加并赋值给变量encryption_num。
代码测试
运行代码,控制台输出结果如下:
请输入密码:123456
加密后的密码为:453525150903