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

ldioqlga  于 2022-11-16  发布在  Shell
关注(0)|答案(6)|浏览(133)

我在网上看过很多关于“tr”命令用法的教程。但是,我不明白如何用shell脚本使用rot13转换字符来加密电子邮件地址。有人能给予链接或示例吗?

nkkqxpd9

nkkqxpd91#

不确定如何使用它,但下面是一个基本示例:

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
lx0bsm1f

lx0bsm1f2#

对于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"

lf5gs5x2

lf5gs5x23#

Ruby(1.9+)

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

Python皮

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

pepwfjgg4#

同时执行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)

0h4hbjxa

0h4hbjxa5#

#相互转换

# 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/

Shell脚本

#!/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 $?
kgsdhlau

kgsdhlau6#

您可以在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

相关问题