如何对 /dev/random 或 /dev/urandom 进行 Base64 编码?

发布于 2024-08-02 04:25:33 字数 170 浏览 8 评论 0原文

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

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

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

cat /dev/urandom is always a fun way to create scrolling characters on your display, but produces too many non-printable characters.

Is there an easy way to encode it on the command-line in such a way that all of its output are readable characters, base64 or uuencode for example.

Note that I prefer solutions that require no additional files to be created.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

心房敞 2024-08-09 04:25:33

类似

cat /dev/urandom | base64

Which 提供(很多)类似

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

Or 的东西怎么样,没有(无用的) cat+pipe :

base64 /dev/urandom

(相同类型的输出 ^^ )

编辑:您还可以使用base64--wrap选项,以避免出现“短行”:

base64 --wrap=0 /dev/urandom

这将删除换行,并且您将会得到“全屏”显示^^

What about something like

cat /dev/urandom | base64

Which gives (lots of) stuff like

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

Or, without the (useless) cat+pipe :

base64 /dev/urandom

(Same kind of output ^^ )

EDIT : you can also user the --wrap option of base64, to avoid having "short lines" :

base64 --wrap=0 /dev/urandom

This will remove wrapping, and you'll get "full-screen" display ^^

暗喜 2024-08-09 04:25:33

许多人建议通过 base64uuencode 进行cat编码和管道传输。 这样做的一个问题是您无法控制要读取的数据量(它将永远持续,或者直到您按下 ctrl+c)。 另一种可能性是使用 dd 命令,它可以让您指定退出之前要读取的数据量。 例如,要读取 1kb:

dd if=/dev/urandom bs=1k count=1 2>/dev/null | base64

另一个选项是通过管道传输到 strings 命令,该命令可能会提供更多种类的输出(不可打印的字符将被丢弃,任何至少 4 个可打印字符的运行 [默认情况下]显示)。 strings 的问题是它在自己的行上显示每个“run”。

dd if=/dev/urandom bs=1k count=1 2>/dev/null | strings

(当然,

strings /dev/urandom

如果您不希望它停止,您可以将整个命令替换为)。

如果你想要一些真正时髦的东西,请尝试以下之一:

cat -v /dev/urandom
dd if=/dev/urandom bs=1k count=1 2>/dev/null | cat -v

A number of folks have suggested catting and piping through base64 or uuencode. One issue with this is that you can't control how much data to read (it will continue forever, or until you hit ctrl+c). Another possibility is to use the dd command, which will let you specify how much data to read before exiting. For example, to read 1kb:

dd if=/dev/urandom bs=1k count=1 2>/dev/null | base64

Another option is to pipe to the strings command which may give more variety in its output (non-printable characters are discarded, any runs of least 4 printable characters [by default] are displayed). The problem with strings is that it displays each "run" on its own line.

dd if=/dev/urandom bs=1k count=1 2>/dev/null | strings

(of course you can replace the entire command with

strings /dev/urandom

if you don't want it to ever stop).

If you want something really funky, try one of:

cat -v /dev/urandom
dd if=/dev/urandom bs=1k count=1 2>/dev/null | cat -v
逆流 2024-08-09 04:25:33

那么,有什么问题吗

cat /dev/urandom | uuencode -

在第一次尝试实际上不起作用后修复...::sigh::

BTW——许多 UNIX 实用程序使用“-”代替文件名来表示“使用标准输入”。

So, what is wrong with

cat /dev/urandom | uuencode -

?

Fixed after the first attempt didn't actually work... ::sigh::

BTW-- Many unix utilities use '-' in place of a filename to mean "use the standard input".

日暮斜阳 2024-08-09 04:25:33

关于如何对随机数据进行 base64 编码(即 cat /dev/urandom | base64),已经有几个很好的答案。然而,在您的问题正文中,您详细阐述了:

...在命令行上对 [urandom] 进行编码,使其所有输出都是可读字符,例如 base64 或 uuencode。

鉴于您实际上并不需要可解析的 base64,只是希望它可读,我建议

cat /dev/urandom | tr -dC '[:graph:]'

base64 仅输出字母数字字符和两个符号(默认情况下为 + 和 /)。 [:graph:] 将匹配任何可打印的非空白 ascii,包括 base64 缺少的许多符号/标点符号。因此,使用 tr -dC '[:graph:]' 将产生看起来更随机的输出,并具有更好的输入/输出效率。

我经常使用 < /dev/random stdbuf -o0 tr -Cd '[:graph:]' | stdbuf -o0 head --bytes 32 用于生成强密码。

There are already several good answers on how to base64 encode random data (i.e. cat /dev/urandom | base64). However in the body of your question you elaborate:

... encode [urandom] on the command-line in such a way that all of it's output are readable characters, base64 or uuencode for example.

Given that you don't actually require parseable base64 and just want it to be readable, I'd suggest

cat /dev/urandom | tr -dC '[:graph:]'

base64 only outputs alphanumeric characters and two symbols (+ and / by default). [:graph:] will match any printable non-whitespace ascii, including many symbols/punctuation-marks that base64 lacks. Therefore using tr -dC '[:graph:]' will result in a more random-looking output, and have better input/output efficiency.

I often use < /dev/random stdbuf -o0 tr -Cd '[:graph:]' | stdbuf -o0 head --bytes 32 for generating strong passwords.

属性 2024-08-09 04:25:33

您可以使用 BASH 的 FIFO 管道做更多有趣的事情:

uuencode <(head -c 200 /dev/urandom | base64 | gzip)

You can do more interesting stuff with BASH's FIFO pipes:

uuencode <(head -c 200 /dev/urandom | base64 | gzip)
余罪 2024-08-09 04:25:33
cat /dev/urandom | tr -dc 'a-zA-Z0-9'
cat /dev/urandom | tr -dc 'a-zA-Z0-9'
没企图 2024-08-09 04:25:33

尝试

xxd -ps /dev/urandom

xxd(1)

Try

xxd -ps /dev/urandom

xxd(1)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文