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

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

  •  7
     
  •   szq8014 · Dec 8, 2020 · 12997 views
    This topic created in 1987 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
        1
    hellojay  
       Dec 8, 2020   ❤️ 5
    我真的是懒得输入这些,不如我点点鼠标
    echowuhao
        2
    echowuhao  
       Dec 8, 2020
    手机上咋办。
    echowuhao
        3
    echowuhao  
       Dec 8, 2020   ❤️ 2
    需求不一样,方便程度不一样。

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

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

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

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

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

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

    还要用工具?

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

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

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

    就是笼统的说是 git 带的,其实是安装 git 的时候需要一个运行环境,环境里面带了一些基本的 *nix 程序
    jmc891205
        65
    jmc891205  
       Dec 8, 2020
    base64 根本不需要打开什么电脑来生成啊(逃
    soulmt
        66
    soulmt  
       Dec 8, 2020
    如果你们用 utools, 你们就会发现常用的工具有多么好用, 在这个工具里面你只要唤起 utools,然后输入 base64(提前装一下 base64 插件) 然后复制图片或者拖入图片就好了....
    phpc
        67
    phpc  
       Dec 8, 2020
    不错,firefox 也可以用
    litiechui
        68
    litiechui  
       Dec 8, 2020
    学到了,感谢楼主
    keepeye
        69
    keepeye  
       Dec 8, 2020
    我用 utools 更方便
    tydl
        70
    tydl  
       Dec 8, 2020
    @iptables win 系统也有
    Kasumi20
        71
    Kasumi20  
       Dec 8, 2020   ❤️ 1
    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
        72
    darknoll  
       Dec 8, 2020
    不能支持中文,有啥用
    HangoX
        73
    HangoX  
       Dec 8, 2020   ❤️ 1
    心算不就可以了?为什么还需要用电脑
    GoLand
        74
    GoLand  
       Dec 8, 2020
    直接 Alfred 不方便吗
    bjzhou1990
        75
    bjzhou1990  
       Dec 8, 2020
    既然来了,给我自己写的 base64 脚本打个广告吧 https://v2ex.com/t/699203
    abersheeran
        77
    abersheeran  
       Dec 9, 2020
    来都来了,我也给自己的工具打个广告 https://pixiv.app/
    littlecreek
        78
    littlecreek  
       Dec 9, 2020
    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
        79
    fanlis  
       Dec 9, 2020
    我都是用这个的, 前端相关的工具还挺全的
    gabezhao
        80
    gabezhao  
       Dec 9, 2020
    我动动鼠标的事情为什么要动手输入呢
    binux
        81
    binux  
       Dec 9, 2020 via Android   ❤️ 2
    所有说 btoa 有缺陷的都是不理解 base64 算法是什么。
    我觉得这是一道不错的面试题,可以检查基本功是否扎实。
    raptor
        82
    raptor  
       Dec 9, 2020
    在电脑上咋弄都方便……哦,Windows 啊?告辞!
    Soar360
        83
    Soar360  
       Dec 9, 2020
    所以,我用 winform 做了一个小工具。。
    as5739
        84
    as5739  
       Dec 9, 2020
    @fanlis 这个以前集成在一起还蛮方便的,直到某一天改版后分成了多个扩展,就不再用了。。
    skye
        85
    skye  
       Dec 9, 2020
    vscode 和 sublime 都有插件
    killerv
        86
    killerv  
       Dec 9, 2020
    楼主这就是典型的程序员思维,不了解普通用户的需求。
    467469274
        87
    467469274  
       Dec 9, 2020
    有点意思
    Woodrow
        88
    Woodrow  
       Dec 9, 2020
    敏感数据, 比如机场的订阅链接, 担心被网站记录, 可以用这种方式.
    Curtion
        89
    Curtion  
       Dec 9, 2020
    atob 和 btoa 是肯定有局限性的,很久之前碰见过这个坑,在一定条件下进行的 base64 并不准确,这个条件被我忘记了...
    aguesuka
        90
    aguesuka  
       Dec 9, 2020 via Android
    windows 系统貌似自带 md5,还可以算文件
    leekafai
        91
    leekafai  
       Dec 9, 2020
    根本不需要下载什么 chrome,win10 自带 edge,linux 那些自带 firefox/opera,macOS 自带 safari
    Kamiyu0087
        92
    Kamiyu0087  
       Dec 9, 2020
    使用 jshell 输入 Base64.getEncoder().encodeToString("Hello World".getBytes()) 即可 [doge]
    Breadykid
        93
    Breadykid  
       Dec 9, 2020
    Linux 环境的话
    编码 echo $(base64 <<< "你好" )
    解码 echo $(base64 -d <<< "5L2g5aW9Cg==" )
    marsteel
        94
    marsteel  
       Feb 7, 2023
    $ export myemail="[email protected]"
    $ jq -n 'env.myemail|@base64'
    "YWJjQGV4YW1wbGUuY29t"
    $export myemail="YWJjQGV4YW1wbGUuY29t"
    $jq -n 'env.myemail|@base64d'
    "[email protected]"
    liuhui244671426
        95
    liuhui244671426  
       Apr 13, 2025
    正好打个广告,https://base64.xin 方便 decode 和 encode ,支持 text 和 image 格式
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3093 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 335ms · UTC 11:36 · PVG 19:36 · LAX 04:36 · JFK 07:36
    ♥ Do have faith in what you're doing.