如何base64编码/ dev/random或/ dev/urandom?

ale*_*pas 44 linux random bash base64 uuencode

cat /dev/urandom 在显示器上创建滚动字符始终是一种有趣的方式,但会生成太多不可打印的字符.

是否有一种简单的方法可以在命令行上对其进行编码,使其所有输出都是可读字符,例如base64或uuencode.

请注意,我更喜欢不需要创建其他文件的解决方案.

Pas*_*TIN 67

怎么样的

cat /dev/urandom | base64
Run Code Online (Sandbox Code Playgroud)

这给了(很多)像这样的东西

hX6VYoTG6n+suzKhPl35rI+Bsef8FwVKDYlzEJ2i5HLKa38SLLrE9bW9jViSR1PJGsDmNOEgWu+6
HdYm9SsRDcvDlZAdMXAiHBmq6BZXnj0w87YbdMnB0e2fyUY6ZkiHw+A0oNWCnJLME9/6vJUGsnPL
TEw4YI0fX5ZUvItt0skSSmI5EhaZn09gWEBKRjXVoGCOWVlXbOURkOcbemhsF1pGsRE2WKiOSvsr
Xj/5swkAA5csea1TW5mQ1qe7GBls6QBYapkxEMmJxXvatxFWjHVT3lKV0YVR3SI2CxOBePUgWxiL
ZkQccl+PGBWmkD7vW62bu1Lkp8edf7R/E653pi+e4WjLkN2wKl1uBbRroFsT71NzNBalvR/ZkFaa
2I04koI49ijYuqNojN5PoutNAVijyJDA9xMn1Z5UTdUB7LNerWiU64fUl+cgCC1g+nU2IOH7MEbv
gT0Mr5V+XAeLJUJSkFmxqg75U+mnUkpFF2dJiWivjvnuFO+khdjbVYNMD11n4fCQvN9AywzH23uo
03iOY1uv27ENeBfieFxiRwFfEkPDgTyIL3W6zgL0MEvxetk5kc0EJTlhvin7PwD/BtosN2dlfPvw
cjTKbdf43fru+WnFknH4cQq1LzN/foZqp+4FmoLjCvda21+Ckediz5mOhl0Gzuof8AuDFvReF5OU
Run Code Online (Sandbox Code Playgroud)

或者,没有(无用的)猫+管道:

base64 /dev/urandom
Run Code Online (Sandbox Code Playgroud)

(同类输出^^)


编辑:你也可以--wrap选择base64,以避免"短线":

base64 --wrap=0 /dev/urandom
Run Code Online (Sandbox Code Playgroud)

这将删除包装,你将得到"全屏"显示^^

  • "我现在看到的只是金发,黑发,红头发." (26认同)
  • base64 --wrap = 0 / dev / urandom | head -c 100将会给你100个随机的base64字符。如果您正在寻找基于bash的矩阵样式的屏幕保护程序,则[之前已完成](http://www.commandlinefu.com/commands/view/10585/matrix-style):-) (3认同)

Ada*_*kin 21

许多人建议cat通过base64或管道uuencode.这个问题的一个问题是你无法控制要读取多少数据(它将永远持续,或者直到你点击ctrl + c).另一种可能性是使用该dd命令,它允许您指定在退出之前要读取的数据量.例如,要读取1kb:

dd if=/dev/urandom bs=1k count=1 2>/dev/null | base64
Run Code Online (Sandbox Code Playgroud)

另一种选择是管道strings输出命令,它可以使输出更多样化(不可打印的字符被丢弃,显示至少4个可打印字符的默认运行).问题strings是它在自己的行上显示每个"运行".

dd if=/dev/urandom bs=1k count=1 2>/dev/null | strings
Run Code Online (Sandbox Code Playgroud)

(当然你可以用.替换整个命令

strings /dev/urandom
Run Code Online (Sandbox Code Playgroud)

如果你不想让它永远停止).

如果你想要一些非常时髦的东西,可以试试下列之一:

cat -v /dev/urandom
dd if=/dev/urandom bs=1k count=1 2>/dev/null | cat -v
Run Code Online (Sandbox Code Playgroud)

  • 或者`head -c 100`例如会打印文件的前100个字节. (4认同)

dmc*_*kee 5

所以,怎么了

cat /dev/urandom | uuencode -
Run Code Online (Sandbox Code Playgroud)

已修复首次尝试后实际上未起作用的问题... :: sigh ::

顺便说一句-许多Unix实用程序使用“-”代替文件名来表示“使用标准输入”。