华为OD-字符串加密

题目描述

有一种技巧可以对数据进行加密,它使用一个单词作为它的密匙。下面是它的工作原理:首先,选择一个单词作为密匙,如TRAILBLAZERS。如果单词中包含有重复的字母,只保留第1个,将所得结果作为新字母表开头,并将新建立的字母表中未出现的字母按照正常字母表顺序加入新字母表。如下所示:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

T R A I L B Z E S C D F G H J K M N O P Q U V W X Y (实际需建立小写字母的字母表,此字母表仅为方便演示)

上面其他用字母表中剩余的字母填充完整。在对信息进行加密时,信息中的每个字母被固定于顶上那行,并用下面那行的对应字母一一取代原文的字母(字母字符的大小写状态应该保留)。因此,使用这个密匙, Attack AT DAWN (黎明时攻击)就会被加密为Tpptad TP ITVH。

请实现下述接口,通过指定的密匙和明文得到密文。

数据范围:1≤100 1≤n≤100 ,保证输入的字符串中仅包含小写字母

输入描述

先输入key和要加密的字符串

输出描述

返回加密后的字符串

示例一

输入

复制代码
nihao

输出

复制代码
ni

示例二

输入

复制代码
le

输出

复制代码
1,2,3,4,1,2,3,1,2,3,4,5,6

代码实现

python 复制代码
# coding:utf-8

import sys

try:
    while True:
        line = sys.stdin.readline().strip()
        if line == '':
            break
        lines = line.split()
        # print(lines)
        s2 = list(lines[0])
        line2 = sys.stdin.readline().strip()
        if line2 == '':
            break
        lines2 = line2.split()
        s1 = list(lines2[0])
        res = []
        lts = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
               'v', 'w', 'x', 'y', 'z']
        lt = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
              'v', 'w', 'x', 'y', 'z']
        # 对秘钥字符串进行去重,并在自然字母表中剔除掉已有的秘钥字符串
        s3 = []
        for i in range(len(s2)):
            if s2[i] in s3:
                continue
            else:
                s3.append(s2[i])
                lt.remove(s2[i])
        # 将秘钥字符串和剔除秘钥的字母表连在一起,行成新的密码表
        s4 = s3 + lt
        # 对需要加密的字符串按照新的密码表进行加密
        for i in range(len(s1)):
            index = lts.index(s1[i])
            res.append(s4[index])
        print(''.join(res))

except:
    pass
相关推荐
FYKJ_2010几秒前
springboot助农产品销售商城05829-计算机课程设计、毕业设计
java·spring boot·python·mysql·spark·django
Yunovian5 分钟前
AI时代,针对模型与应用,浅谈一下各编程语言
开发语言·c++·人工智能·python·ai·rust·ai编程
weixin_4577600014 分钟前
基于 YOLO11m-Pose 的动物姿态估计系统:从 Animal-Pose 标注到 Python 桌面部署
人工智能·python·深度学习
Ticnix1 小时前
RAG 烂大街?烂大街的只是那条流水线——真正的分水岭在这五处
后端·python·agent
黄金龙PLUS1 小时前
5个1024比特大状态置换算法的设计与分析
算法·网络安全·密码学·哈希算法·同态加密
Wx-bishekaifayuan1 小时前
springboot社区扶贫救助管理系统13300-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
心中有你02141 小时前
C语言埃氏筛法(素数筛选)
c语言·数据结构·算法
小小张说故事1 小时前
LightGBM 入门指南:更快的梯度提升树,Python 实战
后端·python·机器学习
Ticnix1 小时前
RAG 检索不准,九成的锅不在向量——不同文件,就该有不同的入库方案
后端·python·agent
jerryinwuhan2 小时前
python快速入门第二周
python