使用 rot13和 tr 命令获得加密的电子邮件地址

我在互联网上阅读了许多关于使用“ tr”命令的教程。 但是,我不能理解如何使用 shell 脚本加密电子邮件地址,使用 rot13改变字符。有人能给出一个链接或例子吗?

127982 次浏览

不确定你到底想怎样使用它,但是这里有一个基本的例子可以帮助你开始:

echo 'fooman@example.com' | tr 'A-Za-z' 'N-ZA-Mn-za-m'

为了简单起见,您可以在 .bashrc文件中使用 tr命令的别名,如下所示:

alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'"

现在你可以打电话:

echo 'fooman@example.com' | rot13

Ruby (1.9 +)

$ ruby -ne 'print $_.tr( "A-Za-z", "N-ZA-Mn-za-m") ' file

巨蟒

$ echo "test" | python -c 'import sys; print sys.stdin.read().encode("rot13")'

对于 tr来说,这确实是一项完美的任务。这应该可以达到你想要的效果:

tr 'A-Za-z' 'N-ZA-Mn-za-m'

第一个集合中的每个字符将被第二个集合中的相应字符替换。例如。A 被 N 代替,B 被 O 代替,等等。小写字母也一样。所有其他字符将不变地传递。

请注意缺少 [],而这正是您通常所期望的。这是因为 tr从字面上看待方括号,而不是作为范围表达式。因此,例如,tr -d '[A-Z]'将删除大写字母 还有方括号。如果要保留括号,请使用 tr -d 'A-Z':

$ echo "foo BAR [baz]" | tr -d '[A-Z]'
foo  baz
$ echo "foo BAR [baz]" | tr -d 'A-Z'
foo  [baz]

对于字符类也是一样,例如 tr -d '[[:lower:]]'可能是一个错误,应该是 tr -d '[:lower:]'

然而,在像这样的幸运情况下,你可以不管怎样包括括括号!例如,tr "[a-z]" "[A-Z]"意外地工作了,因为第一组中的方括号被第二组中相同的方括号所替换,但实际上这是一个坏习惯。使用 tr "a-z" "A-Z"代替。

同时做 ROT13(字母)和 ROT5(数字) :

tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'

用途:

echo test | tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'

你的 ~/.bashrc的别名定义,以防你经常需要它:

alias rot="tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'"

(准确地说是 rot135或 rot18)

# 互惠转型

# rot13
tr 'A-Za-z' 'N-ZA-Mn-za-m' <<< 'user@domain.com'


# rot13.5 (rot18)
tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4' <<< 'user123@domain.com'


# rot47
tr '\!-~' 'P-~\!-O' <<< 'user123@domain.com'


# rot13 -- SED anyone
echo 'user@domain.com' | sed y/NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/

贝壳脚本

#!/bin/bash
# Purpose: Rotate 13 characters (a reciprocal transformation)


# ./rot13.sh 'A String to look Ciphered'
tr 'A-Za-z' 'N-ZA-Mn-za-m' <<< "$1"


exit $?

您可以在 shell 脚本中执行它

#!/bin/bash
echo 'rot13@rot.com' | tr 'A-Za-z' 'N-ZA-Mn-za-m'


echo 'rot13@rot.com' | rot13


运行以下命令使文件可执行:

sudo chmod +x file_name

输出答案:

./file_name
example:
./try.sh