V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jeesk
V2EX  ›  程序员

文件加密后体积膨胀

  •  
  •   jeesk · 2022-12-05 00:13:25 +08:00 · 3058 次点击
    这是一个创建于 727 天前的主题,其中的信息可能已经有所发展或是发生改变。

    无论是使用 aes 还是 ras 加密后体积都非常大的,但是我发现谷歌文件极客的安全文件夹也是加密的, 文件可以在根目录的 gfile 找到, 但是 mp4 文件加密后是不能播放的? 这种加密技术使用的是什么原理? 我在 V2EX 上面看到有人说在文件头和尾巴加点字节就可以了,我想问一下的是, 这种会不会被文件分析。

    21 条回复    2022-12-05 17:55:58 +08:00
    jeesk
        1
    jeesk  
    OP
       2022-12-05 00:16:20 +08:00
    最近在做自己的相册,所以打算做点私密空间的功能,很多东西向调研清楚一点。
    815979670
        2
    815979670  
       2022-12-05 00:17:14 +08:00
    有一种方式 其实可以尝试 就是 base64 然后自定义编码库 也算是一种加密了
    edis0n0
        3
    edis0n0  
       2022-12-05 00:19:07 +08:00
    我记得可以生成一个长密钥,然后非对称加密这个长密钥,实际文件内容用长密钥对称加密,这样体积就不会变大很多了
    jeesk
        4
    jeesk  
    OP
       2022-12-05 00:27:39 +08:00
    @815979670 base64 感觉体积太大了,如果用户发现 10g 的视频被我移动到安全文件夹后,体积增加 1/3, 用户肯定会反感的。
    jeesk
        5
    jeesk  
    OP
       2022-12-05 00:30:37 +08:00
    @edis0n0 您说的大概是 rc4 这种加密方案? 密文和原文一致 ?
    edis0n0
        6
    edis0n0  
       2022-12-05 00:32:12 +08:00
    @jeesk #5 不是,我记得 TLS 就是我说的这种方式设计的,太久没研究这块忘记了
    xy90321
        7
    xy90321  
       2022-12-05 00:36:40 +08:00 via iPhone
    只是加密文件头那分分钟被人爆出💩来…
    其实如果私人的话最简单的是 zip 加密… 算法 rc4 或者 aes 都可以
    你要做的只是确保用户输入主密码后你能补起到足够长以防爆破就可以
    eason1874
        8
    eason1874  
       2022-12-05 01:41:06 +08:00
    AES 是等长加密,并不会导致体积膨胀,最多相差一个块的长度,也就是不超过 16 字节,再加上 16 字节的 IV ,总共不到 32 字节。如果分段加密,也就每段增加不到 32 字节

    估计你把 base64 当密文本身了( base64 编码后体积膨胀大概三分之一),原始密文是 latin1 (平时说的二进制、乱码),你存 latin1 就行
    shiji
        9
    shiji  
       2022-12-05 01:55:41 +08:00 via iPhone   ❤️ 1
    加密文件大小不会变大。 你肯定是代码写错了
    geelaw
        10
    geelaw  
       2022-12-05 01:59:50 +08:00 via iPhone
    只要求 CCA 安全性的时候公钥加密的码率是 1 ,而且普遍通行的加密算法都是这样做的。
    SlipStupig
        11
    SlipStupig  
       2022-12-05 03:50:47 +08:00
    自己设计一个一个文件格式,加密后压缩,用自己的解码器来解码
    dingwen07
        12
    dingwen07  
       2022-12-05 04:23:31 +08:00 via iPhone
    AES 加密并不会导致文件体积变大很多啊
    cppc
        13
    cppc  
       2022-12-05 09:42:27 +08:00
    对称加密,如果输入和加密算法的块大小对齐,不会增加体积,没有对齐,则会 padding 。增加的体积都是按字节算的,不会很大。
    newmlp
        14
    newmlp  
       2022-12-05 09:47:12 +08:00
    aes 并不会导致加密后内容变大很多,顶多增加一个 16 字节对齐
    lisxour
        15
    lisxour  
       2022-12-05 10:05:31 +08:00
    1. 加密后看到很多,你不会看的是加密后的 base64 吧,二进制形式不会加很多的。
    2. 修改文件头文件尾的方式其实不太安全,如果双击打开确实基本是打不开的,但用分析工具比如 trid ,还是很容易识别的,除非你把这种类型的文件的结构都破坏掉,只破坏文件头通常是不够安全的。
    leavic
        16
    leavic  
       2022-12-05 10:26:37 +08:00
    padding 可能会引入一些数据吧,但应该不会很大。
    xtinput
        17
    xtinput  
       2022-12-05 10:33:35 +08:00
    自己设计一个加密方案,比如每多少字节反转一下,0 到 x-1 保持不变,x 到 2x-1 0 、1 反转
    KouShuiYu
        18
    KouShuiYu  
       2022-12-05 11:47:16 +08:00
    你可以试试 aes-256-cbc https://www.npmjs.com/package/@ckvv/mimi 文件大小变化不大
    jeesk
        19
    jeesk  
    OP
       2022-12-05 17:52:57 +08:00
    @xy90321 哈哈。ok , 明白。


    @eason1874 @shiji
    @dingwen07 @cppc

    是我搞错了,我把密文和二进制搞混了
    jeesk
        20
    jeesk  
    OP
       2022-12-05 17:53:30 +08:00
    @lisxour 是的, 如果只是破坏文件头还不如不加密。
    jeesk
        21
    jeesk  
    OP
       2022-12-05 17:55:58 +08:00
    @xtinput 这样对比 aes 速度会慢还是快点?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1280 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:52 · PVG 01:52 · LAX 09:52 · JFK 12:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.