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

2014-12-01 10:23:47 +08:00
 MaiCong
用于url传递,请问哪种方式加密(可解密)后字符数最少?
6256 次点击
所在节点    PHP
29 条回复
c
2014-12-01 10:26:32 +08:00
base64
Automan
2014-12-01 10:27:16 +08:00
凯撒变换
tabris17
2014-12-01 10:30:36 +08:00
gzcompress
MaiCong
2014-12-01 10:32:09 +08:00
@c 如果字符很长,base64加密后也很长

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

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

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

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

如果一定要用url传的话,可以试试1L说的凯撒加密(这个函数只适用于纯英文,解密的话直接把加密的字符串作为参数再调一次这个函数就行了):
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
2014-12-01 11:07:37 +08:00
针对常规的url长度, 压缩只会更大.
cnxh
2014-12-01 11:59:13 +08:00
url能很好的处理base64生成的+/吗?
CupTools
2014-12-01 12:01:13 +08:00
MaiCong
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,正在解读

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/150562

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX