如何基于index_shuffle数组对encryted_message字符按索引加密重排?
基于索引数组实现消息加密重排
你已经完成了将用户输入拆分为字符数组encryted_message,并生成对应索引数组index_shuffle的代码。先提个小优化:你的字符拆分逻辑可以简化——直接用encryted_message = list(User_input)就能得到单个字符组成的数组,不需要嵌套循环处理char_split。
接下来要实现**通过打乱index_shuffle来重排encryted_message**的加密效果,核心思路是:先打乱索引数组,再根据打乱后的索引从原字符数组中取对应字符,生成加密后的消息。具体实现如下:
完整代码示例
import random encryted_message = [] index_shuffle = [] User_input = input("Type your message here: ") # 简化字符拆分逻辑 encryted_message = list(User_input) # 生成初始索引数组 index_shuffle = list(range(len(encryted_message))) # 1. 打乱索引数组(加密核心逻辑,打乱规则可自定义) random.shuffle(index_shuffle) # 2. 根据打乱后的索引重排字符数组,生成加密消息 encrypted_result = [encryted_message[idx] for idx in index_shuffle] # 输出验证 print("原字符数组:", encryted_message) print("打乱后的索引数组:", index_shuffle) print("加密后的消息数组:", encrypted_result)
代码说明
- 用
random.shuffle()直接打乱index_shuffle数组,随机性是加密的关键;如果需要固定的置换规则(比如你示例中的[4,1,2,3,0]),可以手动设置index_shuffle的顺序,替换掉随机打乱的步骤。 - 列表推导式
[encryted_message[idx] for idx in index_shuffle]会遍历打乱后的索引,依次从原字符数组中取出对应位置的字符,自动生成重排后的加密数组。
示例输出
输入hello时,可能得到如下结果(因随机性,每次索引打乱结果不同):
Type your message here: hello 原字符数组: ['h', 'e', 'l', 'l', 'o'] 打乱后的索引数组: [4, 1, 2, 3, 0] 加密后的消息数组: ['o', 'e', 'l', 'l', 'h']
内容的提问来源于stack exchange,提问作者CentralDev
相关产品推荐
相关产品推荐

