①将明文字符串分成3个字符一组,对每组字符进行②③处理,剩余不足3个的字符不做处理。
②随机产生由26个不重复的小写英文字母组成的密文串,将明文中的每组字符分别替换为密文串中对应的字符,若密文串如表1所示,则明文“abcdefghijkl”替换为“jpgntkwmaery”。
小写字母 | 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 |
密文串 | j | p | g | n | t | k | w | m | a | e | r | y | l | d | c | q | f | i | x | u | h | z | b | o | v | s |
表 1
③输入一串数字密钥(由1~9数字组成),密钥中每个数字依次为每组字符向右旋转次数,若密钥长度不足,则重复使用密钥,数字与对应旋转次数见表2。例如,数字密钥为“45”,则将第1组字符向右旋转1次,如“jpg”>“gjp”,将第2组字符向右旋转2次,如“ntk”>“knt”>“tkn”,第3组字符向右旋转1次,第4组字符向右旋转2次,依次类推。
数字 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
旋转次数 | 1 | 2 | 3 | 1 | 2 | 3 | 1 | 2 | 3 |
表 2
④将每组处理后的字符串顺序连接, 每组之间用“*”作为间隔符号, 再将分组剩余的字符倒序 连接, 得到密文。
程序运行结果如下: