base64 根本不需要什么打开什么网站来生成啊 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
szq8014
V2EX    程序员

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

  •  7
     
  •   szq8014 2020-12-08 11:37:03 +08:00 12576 次点击
    这是一个创建于 1838 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    base64 编码

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

    base64 解码

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

    配个图

    base64

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

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

    echo 123 | md5sum # ba1f2511fc30423bdbb183fe33f3dd0f 

    配个图

    md5

    说完了,继续潜水了

    第 1 条附言    2020-12-08 12:22:58 +08:00
    有 append 了
    首先给之前创建那些分享工具的人道歉,是我自己使用的场景非常少,也没有考虑到过手机端的使用。
    其次 atob/btoa 问题也挺多,unicode 字符支持不全。

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

    https://best33.com/311.moe


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

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

    对于用 markdown 的程序员来讲,word 也是不需要的。
    di1012
        4
    di1012  
       2020-12-08 11:40:16 +08:00
    工具就是为懒人准备的
    baobao1270
        6
    baobao1270  
       2020-12-08 11:42:52 +08:00
    1 、DevTools 的那个,遇到 UTF8MB4 字符有一些 bug
    2 、不是所有 Windows 程序员都会装 MSYS/MINGW64/WSL 的
    3 、打开 Shell 很麻烦
    szq8014
        7
    szq8014  
    OP
       2020-12-08 11:43:02 +08:00
    @echowuhao #2 手机上我的确没尝试过怎么解决,是我见识少了,没在手机上有这种需求……
    iptables
        8
    iptables  
       2020-12-08 11:44:37 +08:00   11
    macOS 自带 base64 命令

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

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

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

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

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

    还要用工具?

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

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

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

    就是笼统的说是 git 带的,其实是安装 git 的时候需要一个运行环境,环境里面带了一些基本的 *nix 程序
    jmc891205
        65
    jmc891205  
       2020-12-08 17:47:22 +08:00
    base64 根本不需要打开什么电脑来生成啊(逃
    soulmt
        66
    soulmt  
       2020-12-08 17:55:09 +08:00
    如果你们用 utools, 你们就会发现常用的工具有多么好用, 在这个工具里面你只要唤起 utools,然后输入 base64(提前装一下 base64 插件) 然后复制图片或者拖入图片就好了....
    phpc
        67
    phpc  
       2020-12-08 18:01:41 +08:00
    不错,firefox 也可以用
    litiechui
        68
    litiechui  
       2020-12-08 18:08:39 +08:00
    学到了,感谢楼主
    keepeye
        69
    keepeye  
       2020-12-08 18:11:41 +08:00
    我用 utools 更方便
    tydl
        70
    tydl  
       2020-12-08 18:45:42 +08:00
    @iptables win 系统也有
    Kasumi20
        71
    Kasumi20  
       2020-12-08 18:51:07 +08:00   1
    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  
       2020-12-08 19:07:16 +08:00
    不能支持中文,有啥用
    HangoX
        73
    HangoX  
       2020-12-08 19:20:29 +08:00   1
    心算不就可以了?为什么还需要用电脑
    GoLand
        74
    GoLand  
       2020-12-08 19:42:24 +08:00
    直接 Alfred 不方便吗
    bjzhou1990
        75
    bjzhou1990  
       2020-12-08 20:00:53 +08:00
    既然来了,给我自己写的 base64 脚本打个广告吧 https://v2ex.com/t/699203
    abersheeran
        77
    abersheeran  
       2020-12-09 00:39:20 +08:00
    来都来了,我也给自己的工具打个广告 https://pixiv.app/
    littlecreek
        78
    littlecreek  
       2020-12-09 01:29:20 +08:00
    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  
       2020-12-09 08:43:11 +08:00
    我都是用这个的, 前端相关的工具还挺全的
    gabezhao
        80
    gabezhao  
       2020-12-09 08:46:26 +08:00
    我动动鼠标的事情为什么要动手输入呢
    binux
        81
    binux  
       2020-12-09 09:17:10 +08:00 via Android   2
    所有说 btoa 有缺陷的都是不理解 base64 算法是什么。
    我觉得这是一道不错的面试题,可以检查基本功是否扎实。
    raptor
        82
    raptor  
       2020-12-09 09:25:33 +08:00
    在电脑上咋弄都方便……哦,Windows 啊?告辞!
    Soar360
        83
    Soar360  
       2020-12-09 10:01:04 +08:00
    所以,我用 winform 做了一个小工具。。
    as5739
        84
    as5739  
       2020-12-09 10:11:31 +08:00
    @fanlis 这个以前集成在一起还蛮方便的,直到某一天改版后分成了多个扩展,就不再用了。。
    skye
        85
    skye  
       2020-12-09 10:18:13 +08:00
    vscode 和 sublime 都有插件
    killerv
        86
    killerv  
       2020-12-09 10:31:26 +08:00
    楼主这就是典型的程序员思维,不了解普通用户的需求。
    467469274
        87
    467469274  
       2020-12-09 10:53:17 +08:00
    有点意思
    Woodrow
        88
    Woodrow  
       2020-12-09 11:07:54 +08:00
    敏感数据, 比如机场的订阅链接, 担心被网站记录, 可以用这种方式.
    Curtion
        89
    Curtion  
       2020-12-09 11:26:14 +08:00
    atob 和 btoa 是肯定有局限性的,很久之前碰见过这个坑,在一定条件下进行的 base64 并不准确,这个条件被我忘记了...
    aguesuka
        90
    aguesuka  
       2020-12-09 11:51:29 +08:00 via Android
    windows 系统貌似自带 md5,还可以算文件
    leekafai
        91
    leekafai  
       2020-12-09 12:15:19 +08:00
    根本不需要下载什么 chrome,win10 自带 edge,linux 那些自带 firefox/opera,macOS 自带 safari
    Kamiyu0087
        92
    Kamiyu0087  
       2020-12-09 12:29:23 +08:00
    使用 jshell 输入 Base64.getEncoder().encodeToString("Hello World".getBytes()) 即可 [doge]
    Breadykid
        93
    Breadykid  
       2020-12-09 12:30:45 +08:00
    Linux 环境的话
    编码 echo $(base64 <<< "你好" )
    解码 echo $(base64 -d <<< "5L2g5aW9Cg==" )
    marsteel
        94
    marsteel  
       2023-02-07 22:12:39 +08:00
    $ export myemail="[email protected]"
    $ jq -n 'env.myemail|@base64'
    "YWJjQGV4YW1wbGUuY29t"
    $export myemail="YWJjQGV4YW1wbGUuY29t"
    $jq -n 'env.myemail|@base64d'
    "[email protected]"
    liuhui244671426
        95
    liuhui244671426  
       251 天前
    正好打个广告,https://base64.xin 方便 decode 和 encode ,支持 text 和 image 格式
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2706 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 09:10 PVG 17:10 LAX 01:10 JFK 04:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86