MaiCong
V2EX  ›  PHP

php 最短的加解密方式是什么?

  •  
  •   MaiCong · Dec 1, 2014 · 7540 views
    This topic created in 4367 days ago, the information mentioned may be changed or developed.
    用于url传递,请问哪种方式加密(可解密)后字符数最少?
    29 replies  •  2014-12-01 14:59:45 +08:00
    c
    c
    Dec 1, 2014
    1
    base64
    Automan
    Automan
    Dec 1, 2014
    2
    凯撒变换
    tabris17
    tabris17
    Dec 1, 2014
    3
    gzcompress
    MaiCong
    MaiCong
    OP
    Dec 1, 2014
    4
    @c 如果字符很长,base64加密后也很长

    @Automan 第一次听说,谷歌之
    MaiCong
    MaiCong
    OP
    Dec 1, 2014
    5
    @tabris17 - -这个,在url里乱码显示怪难受的
    bingo605
    bingo605
    Dec 1, 2014
    6
    可以考虑一些数据压缩算法么,比如哈夫曼、RICE等
    coolzjy
    coolzjy
    Dec 1, 2014
    7
    你需要的是压缩算法
    wesley
    wesley
    Dec 1, 2014
    8
    最短的当然是把url存入数据库,传递url对应的数字ID
    Mutoo
    Mutoo
    Dec 1, 2014
    9
    你的需求是 编码/解码 还是 加密/解密?这完全是两回事。
    ETiV
    ETiV
    Dec 1, 2014 via iPhone
    10
    凯撒转换就是你自己搞一张字符串映射表

    加解密就是明文/密文字符串的挨个字符从表中找出对应的密文/明文字符。

    缺点是不要让用户接触到映射表或者使用加密的函数/接口,或者同时看到明文和密文。

    否则映射表是可以逆推出来的。
    iyaozhen
    iyaozhen
    Dec 1, 2014
    11
    估计楼主想要的是编码。
    顺带求一个php简单的可逆加密算法,基于mcrypt扩展实现了一个AES-256加密方法,但想知道有没有更简单的。我需要发送账号、密码从自己主机到另一台提供api的主机。
    MaiCong
    MaiCong
    OP
    Dec 1, 2014
    12
    @bingo605 huffman 看上去也是乱码,不适用于url传递啊... https://github.com/Heru-Luin/PHP-Huffman
    @coolzjy 就是不知道才问的QAQ
    @wesley 但是目前不能操作数据库...
    @Mutoo 都可以,只要最短的
    sneezry
    sneezry
    Dec 1, 2014 via iPhone
    13
    @MaiCong urlencode不可以咩
    mengskysama
    mengskysama
    Dec 1, 2014
    14
    要用url传递必须先urlencode把数据编码到某个符号范围内,长度需要增加百分之三十左右。否则不可能用url传递
    feiyuanqiu
    feiyuanqiu
    Dec 1, 2014
    15
    我知道的两种编码:base64(增加33%)、uuencode(增加35%)
    楼主还是要说下应用环境,好多情况是不用做这些加密啊什么的,如果两个服务器能访问同一个数据库或者缓存,直接存数据库或缓存里面url传一个查询ID比什么加密都好

    如果一定要用url传的话,可以试试1L说的凯撒加密(这个函数只适用于纯英文,解密的话直接把加密的字符串作为参数再调一次这个函数就行了):
    tczzjin
    tczzjin
    Dec 1, 2014
    16
    url传递参数的话有字符串上限的吧 `The limit is in MSIE and Safari about 2KB, in Opera about 4KB and in Firefox about 8KB. `
    如果非得传大量的数据的话还是先gz成二进制然后base36应该可以
    skybr
    skybr
    Dec 1, 2014
    17
    针对常规的url长度, 压缩只会更大.
    cnxh
    cnxh
    Dec 1, 2014
    18
    url能很好的处理base64生成的+/吗?
    MaiCong
    MaiCong
    OP
    Dec 1, 2014
    20
    @sneezry 中文编码后很长
    @mengskysama 先编码,只要长度够短就可以了,urlencode后多一点%XX没关系
    @feiyuanqiu 就是用于GET传递,介于用户和服务器之间,字符长度在1-120左右,不能使用POST,于是发现url会很长,于是就来求缩短的方法了。
    @tczzjin 嗯,传递的字符长度在1-120左右
    @skybr 真的吗?
    @cnxh 这个,只能urlencode一下了...
    @CupTools 3Q,正在解读
    zts1993
    zts1993
    Dec 1, 2014
    21
    @cnxh url_safe
    cnxh
    cnxh
    Dec 1, 2014
    22
    hansnow
    hansnow
    Dec 1, 2014
    24
    @belin520

    @livid
    页面乱掉了…… OSX 10.10.1 Chrome 39.0.2171.71 (64-bit)

    mengzhuo
    mengzhuo
    Dec 1, 2014
    25
    借知乎的说法:
    离开了具体是什么数据谈压缩都是耍流氓啊
    bystand3r
    bystand3r
    Dec 1, 2014
    26
    用Discuz的authcode函数吧,上面说的base64,urlencode都是编码不是加密
    justplaymore
    justplaymore
    Dec 1, 2014❤️1
    27
    能把问题的上下文给出来么?LZ的提问有点类似XY问题了,缺少上下文,只提出了LZ想到的解决方案,没有给出问题本身,说不定有更好的解决方案,但是别人不知道问题本身,所以难以帮助LZ。

    可逆算法的密文一般都是随明文长度线性增长的,所以如果想找到一个密文长度始终在一定范围内的算法,非常难。
    wudikua
    wudikua
    Dec 1, 2014
    28
    加密不会比明文更短吧。不可逆的叫摘要。短不短是压缩的问题。你可以先压缩在加密啊。
    subpo
    subpo
    Dec 1, 2014
    29
    后移一位
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1854 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 10:07 · PVG 18:07 · LAX 02:07 · JFK 05:07
    ♥ Do have faith in what you're doing.