数据加密--课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)

实例6:数据加密

数据加密是保存数据的一种方法,它通过加密算法和密钥将数据从明文转换为密文。

假设当前开发的程序中需要对用户的密码进行加密处理,已知用户的密码均为6位数字,其加密规则如下:

  1. 获取每个数字的ASCII值;
  2. 将所有数字的ASCII值进行累加求和;
  3. 将每个数字对应的ASCII值按照从前往后的顺序进行拼接,并将拼接后的结果进行反转;
  4. 将反转的结果与前面累加的结果相加,所得的结果即为加密后的密码。

本实例要求编写程序,按照上述加密规则讲用户输入的密码进行加密,并输出加密后的密码。

实例目标

通过完成本实例,读者应掌握以下知识技能:

  1. 熟练使用for循环
  2. 熟练使用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

你可能感兴趣的:(Python,python)