鱼C论坛

 找回密码
 立即注册
查看: 1990|回复: 4

[已解决]维吉尼亚算法加密与解密

[复制链接]
发表于 2022-11-8 23:51:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用Python编程使用维吉尼亚算法 将《锦瑟》全文加密,密钥“ Ilovelife”,并进行解密。跪求各位大佬解答
最佳答案
2022-11-9 09:26:12
代码:
def encode(string, secret): #加密
    for n in range(len(string)):
        string = string[:n] + chr(ord(string[n])+ord(secret[n%len(secret)])) + string[n+1:]
    return string

def decode(string, secret): #解密
    for n in range(len(string)):
        string = string[:n] + chr(ord(string[n])-ord(secret[n%len(secret)])) + string[n+1:]
    return string
效果:
>>> poem = "锦瑟无端五十弦,一弦一柱思华年。庄生晓梦迷蝴蝶,望帝春心托杜鹃。沧海月明珠有泪,蓝田日暖玉生烟。此情可待成追忆,只是当时已惘然。"
>>> secret = 'Ilovelife'
>>> password = encode(poem, secret)
>>> password
'镯瓋晏筥仹厭徏イ乥彯乬桠悓厳廠に廪疄暜椒遦蟪蟛ク构広暊怌拄柋麹で洓淠杮晳琩杵浙ツ蕂疜晎曼珮畨煋ぱ毚愪呛忮扶遢怏ク呙暥徸晢幛愾熛か'
>>> poem_1 = decode(password, secret)
>>> poem_1
'锦瑟无端五十弦,一弦一柱思华年。庄生晓梦迷蝴蝶,望帝春心托杜鹃。沧海月明珠有泪,蓝田日暖玉生烟。此情可待成追忆,只是当时已惘然。'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-9 08:07:47 | 显示全部楼层
>>> poem = """锦瑟无端五十弦,一弦一柱思华年。庄生晓梦迷蝴蝶,望帝春心托杜鹃。沧海月明珠有泪,蓝田日暖玉生烟。此情可待成追忆,只是当时已惘然。"""
>>> secret = "Ilovelife"
>>> def turn_secret(n):
        global secret
        temp = chr(ord(poem[n])+ord(secret[n%len(secret)]))
        secret = secret[:n] + temp + secret[n+1:]

    
>>> [turn_secret(i) for i in range(0, len(poem))]
[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]
>>> secret
'镯瓋晏筥仹厭徏イ乥\uf495\ue36fﵠ\uf58c\ue8bd\uf3e3앱\uf3f3𐪎﯂︕\U00012566\U00011ce3\U00011ce5\U0001947bﲊ\uf38cﮔ\uf532\uf7c7ﳋ𓎲앱\U00010216𐋦ﱷﭽ\U0001094fﱸ\U00010259\U0001947b\U00011a4c𐪟ﭔﰅ\U000108f8𐪎𐙎앱𐃓\uf634\ue95e\uf4f4\uf77f\U0001256c\uf535\U0001947b\ue959ﮞ\uf4c2ﭥ\uf361\uf647𐚥앱'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-9 09:15:45 | 显示全部楼层

大佬,该怎么解密呢??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-9 09:16:42 | 显示全部楼层
asdg 发表于 2022-11-9 09:15
大佬,该怎么解密呢??

我现在编一下解密的程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-9 09:26:12 | 显示全部楼层    本楼为最佳答案   
代码:
def encode(string, secret): #加密
    for n in range(len(string)):
        string = string[:n] + chr(ord(string[n])+ord(secret[n%len(secret)])) + string[n+1:]
    return string

def decode(string, secret): #解密
    for n in range(len(string)):
        string = string[:n] + chr(ord(string[n])-ord(secret[n%len(secret)])) + string[n+1:]
    return string
效果:
>>> poem = "锦瑟无端五十弦,一弦一柱思华年。庄生晓梦迷蝴蝶,望帝春心托杜鹃。沧海月明珠有泪,蓝田日暖玉生烟。此情可待成追忆,只是当时已惘然。"
>>> secret = 'Ilovelife'
>>> password = encode(poem, secret)
>>> password
'镯瓋晏筥仹厭徏イ乥彯乬桠悓厳廠に廪疄暜椒遦蟪蟛ク构広暊怌拄柋麹で洓淠杮晳琩杵浙ツ蕂疜晎曼珮畨煋ぱ毚愪呛忮扶遢怏ク呙暥徸晢幛愾熛か'
>>> poem_1 = decode(password, secret)
>>> poem_1
'锦瑟无端五十弦,一弦一柱思华年。庄生晓梦迷蝴蝶,望帝春心托杜鹃。沧海月明珠有泪,蓝田日暖玉生烟。此情可待成追忆,只是当时已惘然。'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 17:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表