代码之家  ›  专栏  ›  技术社区  ›  alexanderpas

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

  •  45
  • alexanderpas  · 技术社区  · 16 年前

    cat /dev/urandom

    7 回复  |  直到 12 年前
        1
  •  60
  •   Pascal MARTIN    16 年前

    cat /dev/urandom | base64
    

    这给出了(很多)类似的东西

    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
    

    或者,如果没有(无用的)猫+烟斗:

    base64 /dev/urandom
    

    (同类输出^^)


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

    base64 --wrap=0 /dev/urandom
    

    这将移除包装,您将获得“全屏”显示^^

        2
  •  19
  •   Adam Batkin    16 年前

    cat 穿过管道 base64 uuencode 一个问题是,你无法控制要读取的数据量(它将永远持续下去,或者直到你按下ctrl+c)。另一种可能是使用 dd

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

    另一种选择是通过管道连接到 strings 命令,其输出可能会更加多样化(丢弃不可打印的字符,显示至少4个可打印字符的任何运行[默认])。的问题在于 它在自己的行上显示每个“跑步”。

    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
    
        3
  •  4
  •   dmckee --- ex-moderator kitten    16 年前

    cat /dev/urandom | uuencode -
    

    ?

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

        4
  •  4
  •   Aaron J Lang    12 年前

    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 用于生成强密码。

        5
  •  2
  •   Serg    13 年前

    uuencode <(head -c 200 /dev/urandom | base64 | gzip)
    
        6
  •  1
  •   greyfade    16 年前
    cat /dev/urandom | tr -dc 'a-zA-Z0-9'
    
        7
  •  -1
  •   Zombo tliff    13 年前

    尝试

    xxd -ps /dev/urandom
    

    xxd(1)

    推荐文章