维吉尼亚密码解密

2024-02-27

我正在尝试使用维吉尼亚密码进行加密和解密。

这是一项更大任务的一部分,而维吉尼亚密码只扮演了一小部分。我从 bash 得到了这个加密脚本,可以正常工作。问题是我如何反向使用相同的代码来解密代码。

#!/usr/local/bin/bash
# vigenere.sh
# http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher

a="ABCDEFGHIJKLMNOPQRSTUVWXYZ"

[[ "${*/-d/}" != "" ]] &&
echo "Usage: $0 [-d]" && exit 1
m=${1:+-}

printf "string: ";read t
printf "keyphrase: ";read -s k
printf "\n"
for ((i=0;i<${#t};i++)); do
  p1=${a%%${t:$i:1}*}
  p2=${a%%${k:$((i%${#k})):1}*}
  d="${d}${a:$(((${#p1}${m:-+}${#p2})%${#a})):1}"
done
echo "$d"

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

bash -x vig.sh

基本上,a存储大写字母

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

这从输入中读取t存储源字符串,k the key

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

以下对变量的字符索引进行循环t

for ((i=0;i<${#t};i++)); do

p1包含以当前字符开头的后缀的字母表t removed

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

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

然后是之间的和或差(当设置 -d 选项时)p1 and p2lengths 用于获取字母表中的字符并附加到d.

Examples

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

vig.sh -d
string: MSZQCKTFZI
keyphrase: FOO
-> HELLOWORLD
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

维吉尼亚密码解密 的相关文章

随机推荐

  • 在 Visual Studio Webtest 中插入 120 秒等待

    我想在两个 Web 请求的执行之间添加 120 秒的延迟 我尝试过使用思考时间 但它不会暂停执行 120 秒 谁能告诉我如何添加等待以暂停执行 120 秒 在执行 2 个 Web 请求之后 然后继续执行下一个请求 我正在使用 Visual
  • ImportError:无法导入名称 celery

    我正在尝试使用 Celery Redis Flask 运行一些后台作业 我的应用程序结构是 myapp celery worker py manage py myapp init py app py bot init py tasks py
  • 使无边框窗口具有较暗较大的阴影

    当无边框窗口中的窗口变为活动状态时 如何创建更暗和更大的阴影 我对 NSWindow 进行了子类化 我的窗口成为主窗口和关键窗口 但这没有帮助 阴影仍然很小 那么也许有人知道如何解决这个问题 我也尝试过使阴影无效 但这也没有帮助 NSWin
  • 使用 SQL 中的结果计算每天的总数

    我的订单表中有 50 行 条目 我有一个列 当订单被认领时保存 名为claimed at 该字段中的日期格式如下 2011 10 03 07 07 33 格式为 yy mm dd 时间 我还有一个专栏叫price this price是他们
  • Loopback.io 的 ACL 问题

    我目前正在评估用于开发新项目的 API 部分的 Loopback io 但在设置正确的 ACL 条目时遇到问题 我希望完成的是给定一个身份验证令牌 GET 端点应该只返回用户拥有的对象 例如 对 Shows access token xxx
  • 什么是“SQLiteDatabase 创建且从未关闭”错误?

    我已经在我的适配器类中关闭了数据库 那么为什么这个错误显示在 logcat 上 但我的应用程序不强制关闭 但只有错误显示在 log cat 上 我应该关闭数据库以忽略此错误 我的错误是 下面 我离开哪个类来关闭数据库 我从此链接获取帮助ht
  • C#,求一个数的最大素因数

    我是编程新手 正在练习我的 C 编程技能 我的应用程序旨在查找用户输入的数字的最大素因数 但我的应用程序没有返回正确的答案 我真的不知道问题出在哪里 你能帮我么 using System using System Collections G
  • 从 Action Script 到 C# 的 Rijndael 加密

    我正在尝试在 Action Script 和 C 之间共享加密 我的任务是在 C 中解密以下消息 f1ca22a365ba54c005c3eb599d84b19c354d26dcf475ab4be775b991ac97884791017b1
  • UUID 转换为无符号整数

    有没有地方可以将 UUID 压缩 转换 编码 加密为无符号整数 我从 sql 表中读取 UUID 历史记录很难看 我无法更改 我只有一个 unsigned int 来存储它 这是 C 以防产生影响 对此有什么想法吗 谢谢 礼萨 正如其他人所
  • 在两个容器之间共享/tmp

    我在用着docker compose生成两个容器 我想分享 tmp这两个容器之间的目录 但不与主机 tmp如果可能的话 这是因为我正在通过上传一些文件flask to tmp并想要处理这些文件celery flask build comma
  • 撤销 IdentityServer4 中特定会话的访问令牌(参考)

    我在用IdentityServer 4带有参考标记的隐式流程 我自己做了一个实现IPersistedGrantStore https github com IdentityServer IdentityServer4 blob releas
  • SVG使用element来克隆SVG

    是否可以在单独的 svg 中 使用 整个其他 svg 我想使用 d3 生成的地图作为同一页面上的图标 这是我尝试过的 但它不起作用
  • Angualr2 错误:无法设置仅具有 getter 的 # 的属性值

    表格看起来像
  • IntelliJ + JUnit 5(木星)

    My build gradle has testCompile org junit jupiter junit jupiter api 5 0 0 使用标准示例http junit org junit5 docs current user
  • XmlSerializer 和 IEnumerable:可以进行序列化,无需无参数构造函数:Bug?

    在我们的项目中 我们广泛使用 XmlSerializer 偶然我发现了一个没有无参数构造函数的类 我认为这一定会破坏序列化过程 但事实并非如此 通过调查这个问题 我发现 XmlSerializer 在序列化 反序列化时表现得很奇怪IE可枚举
  • 在 git 中为每个部署构建创建一个标签是一个好习惯吗?

    我刚刚从 Subversion 切换到 Git Subversion 的集中式架构为其提供了一个有意义的修订号 我将其构建到基于 Web 的应用程序的更改日志中 以便轻松登录并查看任何给定服务器上正在运行的版本 Git 没有友好的内部版本号
  • 如何使用 REST API 为领事附加手表?

    我使用 REST API 来访问领事 例如 这是我创建条目的方法 curl X PUT d localhost 8500 v1 kv example lt lt lt FooValue 我想添加watches当键值更改时通知我的服务的领事
  • 将函数发布到门户后,Azure 函数在函数列表中不可见

    我是Azure函数的新手 在函数发布到门户后发现这里 但它在函数列表中不可见 我附上了示例代码的快照和一个空的天蓝色列表 请帮忙 添加kudu ui 这里我找到了 wwwroot下唯一的host json Hi All 添加了kudu ui
  • 如何定义 Airflow 上 STFP Operator 的操作?

    class SFTPOperation object PUT put GET get operation SFTPOperation GET NameError name SFTPOperation is not defined 我在这里定
  • 维吉尼亚密码解密

    我正在尝试使用维吉尼亚密码进行加密和解密 这是一项更大任务的一部分 而维吉尼亚密码只扮演了一小部分 我从 bash 得到了这个加密脚本 可以正常工作 问题是我如何反向使用相同的代码来解密代码 usr local bin bash vigen