• 请不要在回答技术问题时复制粘贴 AI 生成的内容
szq8014
V2EX  ›  程序员

base64 根本不需要什么打开什么网站来生成啊

  •  7
     
  •   szq8014 · Dec 8, 2020 · 13813 views
    This topic created in 2159 days ago, the information mentioned may be changed or developed.

    这东西本不值得发一个帖子……主要是看到帖子有人又制作了在线 base64 编码 /解码的网站,也见过有人专门自己写了个 python 脚本来处理的……

    其实 chromium 内核的浏览器都自带了这个功能。。使用方式就是在做任意一个页面上打开 DevTools

    base64 编码

    btoa('hello,world')
    
    // "aGVsbG8sd29ybGQ="
    

    base64 解码

    atob('aGVsbG8sd29ybGQ=')
    
    // "hello,world"
    

    配个图

    base64

    顺便说一下平时怎么弄 md5 摘要

    楼主是 windows 用户,安装了 git 客户端,里面集成了 md5sum 功能。

    echo 123 | md5sum
    
    # ba1f2511fc30423bdbb183fe33f3dd0f
    

    配个图

    md5

    说完了,继续潜水了

    Supplement 1  ·  Dec 8, 2020
    有 append 了
    首先给之前创建那些分享工具的人道歉,是我自己使用的场景非常少,也没有考虑到过手机端的使用。
    其次 atob/btoa 问题也挺多,unicode 字符支持不全。

    但是我一直不太敢用在线的那些工具,主要考虑到后台会记录这些数据,现在前端 js 库也这么全了,不如出一个纯前端的工具,也不难
    Supplement 2  ·  Dec 8, 2020
    34L @orzfly 分享了如何解决 atob/btoa 下 utf-8 的处理,又涨见识了

    https://best33.com/311.moe


    有人能把 atob/btoa 联想到 拿针刻磁盘 我也是没想到……

    也让我认识到的确有很多的人愿意用思维负担少的工具的需求
    95 replies  •  2025-04-13 05:00:36 +08:00
    hellojay
    hellojay
    Dec 8, 2020❤️5
    1
    我真的是懒得输入这些,不如我点点鼠标
    echowuhao
    echowuhao
    Dec 8, 2020
    2
    手机上咋办。
    echowuhao
    echowuhao
    Dec 8, 2020❤️2
    3
    需求不一样,方便程度不一样。

    对于用 markdown 的程序员来讲,word 也是不需要的。
    di1012
    di1012
    Dec 8, 2020
    4
    工具就是为懒人准备的
    52coder
    52coder
    Dec 8, 2020
    5
    虽然知道楼主说的方法,但我都用 chrome 或者 notepad 插件,哈哈哈
    baobao1270
    baobao1270
    Dec 8, 2020
    6
    1 、DevTools 的那个,遇到 UTF8MB4 字符有一些 bug
    2 、不是所有 Windows 程序员都会装 MSYS/MINGW64/WSL 的
    3 、打开 Shell 很麻烦
    szq8014
    szq8014
    OP
    Dec 8, 2020
    7
    @echowuhao #2 手机上我的确没尝试过怎么解决,是我见识少了,没在手机上有这种需求……
    iptables
    iptables
    Dec 8, 2020❤️11
    8
    macOS 自带 base64 命令

    编码
    ```
    $ echo "Hello, world" | base64
    SGVsbG8sIHdvcmxkCg==
    ```

    解码
    ```
    $ echo "SGVsbG8sIHdvcmxkCg==" | base64 -D
    Hello, world
    ```
    szq8014
    szq8014
    OP
    Dec 8, 2020
    9
    @baobao1270 #6 一般安装了 git 都自带了,这个只能限定在使用 git 的用户,如果用了 svn 等等就只能再想其它办法了……
    xiaoliu926
    xiaoliu926
    Dec 8, 2020
    10
    还要写代码? 我打开百度随便搜一下网站,复制粘贴不爽嚒
    echowuhao
    echowuhao
    Dec 8, 2020
    11
    @szq8014 你下班后灌水看 v2,有人发了个 base64 的 id,你想加他。你可以回家打开电脑。你也可以打开一个网页,解决问题。需求不就来的么。

    我有时候会有些固定的模式的代码,比如一个属性,我要生成多个配置。我可以自己编辑,也可以写个编辑器插件。最后还是发现,我写个 js 函数。弄个网页方便。 当然,我做了很多这方面的工作,生成一个网页太方便。
    szq8014
    szq8014
    OP
    Dec 8, 2020
    12
    @iptables #8 是的 base64/ md5sum 在 unix 环境里面都自带了,挺方便的
    echowuhao
    echowuhao
    Dec 8, 2020
    13
    弄个网页,根据需求,生成我要的配置。 我也可以写个 script,还是没有网页方便。
    h4wklee
    h4wklee
    Dec 8, 2020❤️1
    14
    怎么讲,如果有个小白问你我用的是 360 浏览器,然后怎么打开 DevTool,然好要不要带括号,这个引号怎么输入的时候,您会负责地教他还是扔个网站给他呢?
    NVDA
    NVDA
    Dec 8, 2020 via iPhone
    15
    iPhone 上可以用 shortcut,也很简单
    szq8014
    szq8014
    OP
    Dec 8, 2020
    16
    怎么找不到 append 功能了,不管是 base64 还是 md5 都完全可以在浏览器端实现,如果不是,那可能有别企图。

    不如找一个纯前端的网页工具来使用。

    之前也没想到过还有移动端使用的需求……
    xingyue
    xingyue
    Dec 8, 2020❤️2
    17
    atob 和 btoa 在有些场景下是“有缺陷”的,比如你试试 btoa('汉字');
    所以 base64-js 在 npm 上高达两千多万的周下载量。。。。
    参见: https://developer.mozilla.org/zh-CN/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Unicode_%E9%97%AE%E9%A2%98
    aloxaf
    aloxaf
    Dec 8, 2020❤️11
    18
    捉虫:`echo 123` 末尾会有换行符,实际计算的是 123\n 的 md5,应该写成 `echo -n 123 | md5sum` 才对
    不少人都踩过这个坑 2333
    3dwelcome
    3dwelcome
    Dec 8, 2020 via Android
    19
    制作工具还是有必要的,我都自己写过一个 base64 工具页面,无脑点点鼠标,难道不香吗?
    crab
    crab
    Dec 8, 2020
    20
    win 下可以 cmd certutil
    aheadlead
    aheadlead
    Dec 8, 2020
    21
    像我就觉得点鼠标是个很麻烦的事情。。。还得抬手,还得找鼠标指针在哪
    haonse
    haonse
    Dec 8, 2020❤️1
    22
    无意冒犯楼主,前几天我看过那个帖子,人也说了不是为程序员准备的...就是给小白用的。楼主发这个帖子可能会打击后人分享的积极性
    alan0liang
    alan0liang
    Dec 8, 2020 via Android
    23
    @echowuhao #2 termux
    Cbdy
    Cbdy
    Dec 8, 2020 via Android
    24
    你试试中文
    nnnToTnnn
    nnnToTnnn
    Dec 8, 2020
    25
    无意冒犯楼主,btoa,atob 存在缺陷 ,md5 存在缺陷,sha 的算法比较好。
    nnnToTnnn
    nnnToTnnn
    Dec 8, 2020
    26
    @nnnToTnnn 其次 base 更多的时候不是用 base64 to text 而是 base64 to hex
    ptrees
    ptrees
    Dec 8, 2020
    27
    学到了,装逼技巧+1
    gromit1337
    gromit1337
    Dec 8, 2020
    28
    学到了
    RRRoger
    RRRoger
    Dec 8, 2020❤️9
    29
    还要写代码?

    还要用工具?

    我都是口算的 [doge]
    kosmosr
    kosmosr
    Dec 8, 2020
    30
    用 uTools 不香吗,啥工具都是一键唤出
    hansnow
    hansnow
    Dec 8, 2020
    31
    没装 git bash 的 windows 用户可以试试 certutil -hashfile yourFullPathFileAddress MD5
    rock_cloud
    rock_cloud
    Dec 8, 2020❤️1
    32
    啊,说个小细节,echo 123456 | md5sum 和 echo -n 123456 | md5sum 的结果是不一样的,echo -n 可以去除 echo 输出的\n 符,不然出来的 md5 是错的。
    IGJacklove
    IGJacklove
    Dec 8, 2020 via Android
    35
    我想起了拿针刻光盘的故事
    fiveelementgid
    fiveelementgid
    Dec 8, 2020
    36
    你们不咋用 WSL 的吗.......手机上面 termux 也挺好用的
    ─$ echo -n "123" | base64
    MTIz
    fiveelementgid
    fiveelementgid
    Dec 8, 2020❤️1
    37
    @rock_cloud 确实细节,当年忘了-n 直接 error 到天亮(
    jimmyismagic
    jimmyismagic
    Dec 8, 2020
    38
    大家都是狠人,不需要那一点
    ETiV
    ETiV
    Dec 8, 2020 via iPhone
    39
    echo -n 也不是万能的,
    好像 alpine 的 echo 实现的不一样,-n -e 都能被直接打印出来,后面我都用 printf 了
    Osk
    Osk
    Dec 8, 2020 via Android
    40
    @ETiV alpine 的 echo 大概是 busybox 的实现,过于简洁
    Osk
    Osk
    Dec 8, 2020 via Android
    41
    Windows 可以用 certutil 和 Pwershell: get-filehash -alg md5|sha1|sha256... file
    yaphets666
    yaphets666
    Dec 8, 2020
    42
    @orzfly 这个文章好像有点问题? 好像不需要 escape 和 unescape 呀 btoa(encodeURIComponent("汉字")) decodeURIComponent(atob(base64)) 就行了
    SmallTeddy
    SmallTeddy
    Dec 8, 2020
    43
    @iptables 我用 echo 编码可以实现 但是解码会提示我 bash: base: command not found
    szq8014
    szq8014
    OP
    Dec 8, 2020
    44
    @yaphets666 #42 你这样出来的 base64 其它方法解的话结果不正确;你可以对比其它工具看看
    Lemeng
    Lemeng
    Dec 8, 2020
    45
    进来学习学习的
    ThirdFlame
    ThirdFlame
    Dec 8, 2020
    46
    echo 要加上-n ,否则会在字符串后边加上\n
    sherlockwhite
    sherlockwhite
    Dec 8, 2020
    47
    我用的是 Chrome 插件
    newtype0092
    newtype0092
    Dec 8, 2020
    48
    @iptables shell 里 echo 有个坑
    echo "hello,world" | base64
    结果是 aGVsbG8sd29ybGQK,和实际结果 aGVsbG8sd29ybGQ= 不一致
    仔细看了下发现原来是 echo 结果默认带换行,改成 printf "hello,world" | base64 正常了
    tadebao
    tadebao
    Dec 8, 2020
    49
    laptop:~$ echo hello,word |base64
    aGVsbG8sd29yZAo=
    aptop:~$ echo aGVsbG8sd29yZAo=|base64 -d
    hello,word
    sasalemma
    sasalemma
    Dec 8, 2020
    50
    呃 (⊙﹏⊙)

    windows 用户有没有 git,都自带 powershell 的。只要是 8.1 以上的系统。就是 powershell 4.x ?以上。

    直接用 get-filehash -algorithm sha1/sha256/md5 都行吧
    wangxiaoaer
    wangxiaoaer
    Dec 8, 2020
    51
    @echowuhao #3 说真的,就 MD 那个列表的鸟样,文档如果层级多点,作者不头晕吗? 再加上如果用了无序列表,读者不眼花吗?
    webshe11
    webshe11
    Dec 8, 2020❤️1
    52
    推荐一个开源的在线小工具集,可以下下来离线使用,或者放到自己服务器上
    https://github.com/gchq/CyberChef
    nidaye999
    nidaye999
    Dec 8, 2020
    53
    浏览器自带的 btoa 和 atob 有缺陷,比如 btoa('你好') , 否则为什么还有 js-base64 。 第三方库存在肯定是有它的道理,而且 base64 还要兼容 URL 编码。
    20200924
    20200924
    Dec 8, 2020
    54
    学到了
    TypeError
    TypeError
    Dec 8, 2020 via Android
    55
    @echowuhao Android tasker/termux
    julyclyde
    julyclyde
    Dec 8, 2020
    56
    md5sum 是 git 里带的?我还以为是系统自带的……
    ttys001
    ttys001
    Dec 8, 2020
    57
    Mac 有个叫 Boop 的 App 很好用。
    hatebugs
    hatebugs
    Dec 8, 2020
    58
    base64 <<< 'hello'
    base64 -d <<<'aGVsbG8K'
    hatebugs
    hatebugs
    Dec 8, 2020
    59
    @julyclyde md5sum 不是 gnu 里的 coreutils 吗 咋是 git 带的
    qwerthhusn
    qwerthhusn
    Dec 8, 2020
    60
    黑猫白猫
    stille
    stille
    Dec 8, 2020
    61
    macOS 上的 popclip 有 base64 插件好方便的..
    yuzo555
    yuzo555
    Dec 8, 2020
    62
    我们的 base64.us 不会记录,你可以抓包看看。
    除非你主动在高级设置里面切换到 GB2312 编码,否则默认的 UTF-8 编码情况下,纯前端完成,不记录也不走服务端。
    hatebugs
    hatebugs
    Dec 8, 2020
    63
    纠正 , base64 <<< 'hello' ,同样带了换行,还是用 echo -n
    szq8014
    szq8014
    OP
    Dec 8, 2020
    64
    @julyclyde #56
    @hatebugs #59

    就是笼统的说是 git 带的,其实是安装 git 的时候需要一个运行环境,环境里面带了一些基本的 *nix 程序
    jmc891205
    jmc891205
    Dec 8, 2020
    65
    base64 根本不需要打开什么电脑来生成啊(逃
    soulmt
    soulmt
    Dec 8, 2020
    66
    如果你们用 utools, 你们就会发现常用的工具有多么好用, 在这个工具里面你只要唤起 utools,然后输入 base64(提前装一下 base64 插件) 然后复制图片或者拖入图片就好了....
    phpc
    phpc
    Dec 8, 2020
    67
    不错,firefox 也可以用
    litiechui
    litiechui
    Dec 8, 2020
    68
    学到了,感谢楼主
    keepeye
    keepeye
    Dec 8, 2020
    69
    我用 utools 更方便
    tydl
    tydl
    Dec 8, 2020
    70
    @iptables win 系统也有
    Kasumi20
    Kasumi20
    Dec 8, 2020❤️1
    71
    btoa 只支持二进制字符串,要支持 UTF-8,可以参考:
    https://github.com/develon2015/js/blob/main/src/web/encode/base64.ts

    /**
    * 将 Blob 对象(File 基于 Blob)转换为 Base64 编码.
    * @param blob File 或`new Blob([string])`等 Blob 对象
    */
    export async function Blob2Base64(blob: Blob): Promise<string> {
    let arrayBuffer = await blob.arrayBuffer();
    return ArrayBuffer2Base64(arrayBuffer);
    }

    /**
    * 将 UTF-8 字符串编码为 Base64 字符串
    * String => Blob => ArrayBuffer => Uint8Array => BinaryString => btoa()
    * @param str
    */
    export async function String2Base64(str: string): Promise<string> {
    return Blob2Base64(new Blob([str]));
    }

    export function ArrayBuffer2Base64(buffer: ArrayBuffer): string {
    var binary = '';
    var bytes = new Uint8Array(buffer);
    var len = bytes.byteLength;
    // 将原始二进制数据按字节转换, 拼接为二进制字符串
    for (var i = 0; i < len; i++) {
    、、、
    darknoll
    darknoll
    Dec 8, 2020
    72
    不能支持中文,有啥用
    HangoX
    HangoX
    Dec 8, 2020❤️1
    73
    心算不就可以了?为什么还需要用电脑
    GoLand
    GoLand
    Dec 8, 2020
    74
    直接 Alfred 不方便吗
    bjzhou1990
    bjzhou1990
    Dec 8, 2020
    75
    既然来了,给我自己写的 base64 脚本打个广告吧 https://v2ex.com/t/699203
    abersheeran
    abersheeran
    Dec 9, 2020
    77
    来都来了,我也给自己的工具打个广告 https://pixiv.app/
    littlecreek
    littlecreek
    Dec 9, 2020
    78
    linux/macos 上也有命令行 command: base64. 不过总有很多对计算机一知半解的用户(包括不少开发者都是一知半解), 告诉他们用命令行或者 Chrome Dev Tools 可能会有畏难情绪, 他们也不在乎 /不了解信息泄露. 定位不同而已.

    ```
    y@192 ~/Downloads » echo hello | base64
    aGVsbG8K
    y@192 ~/Downloads » echo aGVsbG8K | base64 -d
    hello
    y@192 ~/Downloads »
    ```
    fanlis
    fanlis
    Dec 9, 2020
    79
    我都是用这个的, 前端相关的工具还挺全的
    gabezhao
    gabezhao
    Dec 9, 2020
    80
    我动动鼠标的事情为什么要动手输入呢
    binux
    binux
    Dec 9, 2020 via Android❤️2
    81
    所有说 btoa 有缺陷的都是不理解 base64 算法是什么。
    我觉得这是一道不错的面试题,可以检查基本功是否扎实。
    raptor
    raptor
    Dec 9, 2020
    82
    在电脑上咋弄都方便……哦,Windows 啊?告辞!
    Soar360
    Soar360
    Dec 9, 2020
    83
    所以,我用 winform 做了一个小工具。。
    as5739
    as5739
    Dec 9, 2020
    84
    @fanlis 这个以前集成在一起还蛮方便的,直到某一天改版后分成了多个扩展,就不再用了。。
    skye
    skye
    Dec 9, 2020
    85
    vscode 和 sublime 都有插件
    killerv
    killerv
    Dec 9, 2020
    86
    楼主这就是典型的程序员思维,不了解普通用户的需求。
    467469274
    467469274
    Dec 9, 2020
    87
    有点意思
    Woodrow
    Woodrow
    Dec 9, 2020
    88
    敏感数据, 比如机场的订阅链接, 担心被网站记录, 可以用这种方式.
    Curtion
    Curtion
    Dec 9, 2020
    89
    atob 和 btoa 是肯定有局限性的,很久之前碰见过这个坑,在一定条件下进行的 base64 并不准确,这个条件被我忘记了...
    aguesuka
    aguesuka
    Dec 9, 2020 via Android
    90
    windows 系统貌似自带 md5,还可以算文件
    leekafai
    leekafai
    Dec 9, 2020
    91
    根本不需要下载什么 chrome,win10 自带 edge,linux 那些自带 firefox/opera,macOS 自带 safari
    Kamiyu0087
    Kamiyu0087
    Dec 9, 2020
    92
    使用 jshell 输入 Base64.getEncoder().encodeToString("Hello World".getBytes()) 即可 [doge]
    Breadykid
    Breadykid
    Dec 9, 2020
    93
    Linux 环境的话
    编码 echo $(base64 <<< "你好" )
    解码 echo $(base64 -d <<< "5L2g5aW9Cg==" )
    marsteel
    marsteel
    Feb 7, 2023
    94
    $ export myemail="[email protected]"
    $ jq -n 'env.myemail|@base64'
    "YWJjQGV4YW1wbGUuY29t"
    $export myemail="YWJjQGV4YW1wbGUuY29t"
    $jq -n 'env.myemail|@base64d'
    "[email protected]"
    liuhui244671426
    liuhui244671426
    Apr 13, 2025
    95
    正好打个广告,https://base64.xin 方便 decode 和 encode ,支持 text 和 image 格式
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4826 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 146ms · UTC 05:51 · PVG 13:51 · LAX 21:51 · JFK 00:51
    ♥ Do have faith in what you're doing.