Vigenére密码解密

时间:2018-04-25 11:58:50

标签: bash encryption scripting vigenere

我试图用vigenere密码进行加密和解密。

它是vigenere扮演一小部分的更大任务的一部分。我从bash那里得到了这个加密脚本。问题是我如何反向使用相同的代码来解密代码

import argparse
import textwrap
parser = argparse.ArgumentParser(
      prog='ProgramName',
      formatter_class=argparse.RawDescriptionHelpFormatter,
      epilog=textwrap.dedent('''\
         additional information:
             I have indented it
             exactly the way
             I want it
         '''))
parser.add_argument('--foo', nargs='?', help='foo help')
parser.add_argument('bar', nargs='+', help='bar help')
parser.print_help()

我不是数学天才或程序员,所以我能得到的所有帮助都会很好。如果有人可以解释或反转它,那么它也可以解密或告诉代码如何操作,所以我在leat上了解发生的事情会很好。

//新

2 个答案:

答案 0 :(得分:1)

要查看它的作用,只需使用bash -x选项集启动它,例如,如果脚本保存在vig.sh中:

bash -x vig.sh

基本上,a来存储大写字母

-d,是设置m设置为-时可解密的可选参数

从输入t读取以存储源字符串,k

printf "string: ";read t
printf "keyphrase: ";read -s k

以下内容对变量t

的字符索引进行循环
for ((i=0;i<${#t};i++)); do

p1包含带有后缀的字母,其中包含t已删除的当前字符

p1=${a%%${t:$i:1}*}

p2对key中的当前字符执行相同操作(使用模数以避免超出界限)

然后p1p2长度之间的总和或差异(当设置-d选项时)用于获取字母表中的字符并附加到d

实施例

vig.sh
string: HELLOWORLD
keyphrase: FOO
-> MSZQCKTFZI

vig.sh -d
string: MSZQCKTFZI
keyphrase: FOO
-> HELLOWORLD

答案 1 :(得分:0)

要运行解密,请在命令中键入./vig.sh -d。因为您已经在代码中声明了[[“ $ {* /-d /}”!=“”]],所以应该这样做。