php 最短的加解密方式是什么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MaiCong
V2EX    PHP

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

  •  
  •   MaiCong 2014-12-01 10:23:47 +08:00 6697 次点击
    这是一个创建于 3974 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用于url传递,请问哪种方式加密(可解密)后字符数最少?
    29 条回复    2014-12-01 14:59:45 +08:00
    c
        1
    c  
       2014-12-01 10:26:32 +08:00
    base64
    Automan
        2
    Automan  
       2014-12-01 10:27:16 +08:00
    凯撒变换
    tabris17
        3
    tabris17  
       2014-12-01 10:30:36 +08:00
    gzcompress
    MaiCong
        4
    MaiCong  
    OP
       2014-12-01 10:32:09 +08:00
    @c 如果字符很长,base64加密后也很长

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

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

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

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

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

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

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

    可逆算法的密文一般都是随明文长度线性增长的,所以如果想找到一个密文长度始终在一定范围内的算法,非常难。
    wudikua
        28
    wudikua  
       2014-12-01 14:10:00 +08:00
    加密不会比明文更短吧。不可逆的叫摘要。短不短是压缩的问题。你可以先压缩在加密啊。
    subpo
        29
    subpo  
    PRO
       2014-12-01 14:59:45 +08:00
    后移一位
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     917 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 20:06 PVG 04:06 LAX 13:06 JFK 16:06
    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