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

Reg*_*ser 30 shell

我在互联网上阅读了很多关于'tr'命令用法的教程.但是,我无法理解如何使用shell脚本加密电子邮件地址使用rot13来移动字符.任何人都可以提供链接或示例吗?

sam*_*len 70

不确定你想如何使用它,但这是一个让你入门的基本例子:

echo 'fooman@example.com' | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Run Code Online (Sandbox Code Playgroud)

为了简化操作,您可以tr.bashrc文件中为命令添加别名:

alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'"
Run Code Online (Sandbox Code Playgroud)

现在你可以打电话:

echo 'fooman@example.com' | rot13
Run Code Online (Sandbox Code Playgroud)

  • 任何其他组合都不会腐烂**13**;-) (5认同)
  • @xizdaqrian这不会是自相反的---也许从0-9到5-90-4会更像rot13的精神? (3认同)

Cha*_*oss 7

tr的确是一项完美的任务。这应该做您想要的:

tr 'A-Za-z' 'N-ZA-Mn-za-m'
Run Code Online (Sandbox Code Playgroud)

第一组中的每个字符都将替换为第二组中的相应字符。例如,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]
Run Code Online (Sandbox Code Playgroud)

字符类相同。例如tr -d '[[:lower:]]',可能是一个错误,应该为tr -d '[:lower:]'

但是,在这种情况下,无论如何,您都可以将括号括起来!例如,tr "[a-z]" "[A-Z]"偶然的工作是因为第一组中的方括号被第二组中的相同方括号替代,但这确实是一个不好的习惯。使用tr "a-z" "A-Z"代替。


sja*_*jas 7

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

tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'
Run Code Online (Sandbox Code Playgroud)

用法:

echo test | tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'
Run Code Online (Sandbox Code Playgroud)

您的别名定义~/.bashrc,以防您更频繁地需要它:

alias rot="tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'"
Run Code Online (Sandbox Code Playgroud)

(准确地说是 rot135 或 rot18)


kur*_*umi 6

红宝石(1.9+)

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

蟒蛇

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


Jim*_*ios 6

# 相互变换

# 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/
Run Code Online (Sandbox Code Playgroud)

外壳脚本

#!/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 $?
Run Code Online (Sandbox Code Playgroud)