求 不定长度字符串 加密压缩成 固定长度字符串 的方法

2016-01-29 09:41:47 +08:00
 MeiganFang

正文如题,请 V 友帮忙~~~

7055 次点击
所在节点    编程
25 条回复
xenme
2016-01-29 09:45:20 +08:00
参考 md5 类似的 hash
otakustay
2016-01-29 09:57:16 +08:00
加密是不可能的,摘要是可以的,比如 md5
xylophone21
2016-01-29 10:01:43 +08:00
加密,上传云盘,得到 url

除非“固定长度” >= 最大“不定长度”
sherlocktheplant
2016-01-29 10:06:27 +08:00
找到一个最大长度 然后填 0 呗
yeyeye
2016-01-29 10:10:07 +08:00
@MeiganFang
@xenme
@otakustay
@xylophone21
@sherlocktheplant

这不就是磁力链么……(磁力链,长度固定,而且很小,磁力链生成 BT 种子,再生成任意大小的文件)
otakustay
2016-01-29 10:12:42 +08:00
@yeyeye 磁力链本身并不含有数据,数据是从其他地方检索的,即有存储存在

你咋不说数据库主键也是个算法呢- -
yeyeye
2016-01-29 10:17:36 +08:00
@otakustay 不要太在意过程~ 在磁力链的基础上再加密一下,不就达到楼主要求的效果了么,既保密,又短小、
seki
2016-01-29 10:20:36 +08:00
@yeyeye 但是你需要维护一个磁力链到内容的对应表,这个表丢了就哭哭了
otakustay
2016-01-29 10:21:39 +08:00
@yeyeye 楼主的要求也没说清楚,比如是不是允许联网,是不是允许带个数据库,如果都不允许的话,磁力链这种方案就是残废的呗

另外解密速度上的要求也要看,磁力链那种依赖网络 IO 的速度注定不能做大规模运算
allan888
2016-01-29 10:24:23 +08:00
@yeyeye 在意的就是这个过程。
按照你这个思路,一个 map , key 是整数, value 是真实的数据,那岂不是把所有数据都加密成一个 int 长度了,这不叫加密也不叫压缩。。。。
yeyeye
2016-01-29 10:29:17 +08:00
@otakustay “不定长度字符串 加密压缩成 固定长度字符串 的方法”

首先这个标题就是一个不会提问的人说出来的,你要达到它的要求,除非成为中国的佛主或者外国的上帝。

世界上最小的数字是二进制的 0 和 1 ,占用最低了,如果再压缩成所谓的固定长度,你说怎么压,还需要加密……

不往远了说,数字 1-10 ,怎样才能压缩到二进制的 1 位?



也就是说不可能任何字符串都能压缩,甚至是压缩后还会变大。那选择多大作为存储的目标呢?(还要固定大小)

为了安全,找一个地球一样大的星球来存储吧,既能保证足够存储下地球上的任何数据和大小,又能保证长度一致。
yeyeye
2016-01-29 10:31:30 +08:00
@allan888 一个固定长度就玩死了所有的方式关于压缩的部分,我在 11 楼说了,除非再找一个地球来存储这段数据,才能保证长度一致。实现其他目标。否则一个目标都完成不了。
yeyeye
2016-01-29 10:33:21 +08:00
@seki 用 BTSync 吧,多搞几个设备做同步,东西肯定不会丢。
fising
2016-01-29 10:34:35 +08:00
违背自然规律
allan888
2016-01-29 10:40:24 +08:00
@yeyeye 把短的加密成长的字符串当然是可以的,具体怎么做就不说了,哪怕是填充 0 也是可行的。
然后如果知道压缩后的最大长度,那就没问题了,字符串压缩后,不够的就填充一下。
如果不知道,也可以在每次新来一个字符串,然后压缩后比之前的要长的情况下去填充以前的所有压缩后的字符串。
所以工程上压根就没有所谓的地球那么大,实际操作上,比如一篇文章或者一个标题,还可能一开始就限制长度。
你说的办法当然也是个思路,但是直接扯地球佛祖啥的一点意思也没有。
jugelizi
2016-01-29 10:42:55 +08:00
加密 压缩 定长
这是产品经理提出来的吗
allan888
2016-01-29 10:44:15 +08:00
@yeyeye 当然我认为你说的都是解决办法。
但是其实我觉得“加密”成一个长度的话,很多情况下都做得到,比如对于比如文章标题这种加密。
loading
2016-01-29 10:44:37 +08:00
楼主,如果是用于密码验证,是不需要这样的,请说下你的用途。
yeyeye
2016-01-29 10:53:01 +08:00
@allan888 所以楼主只是脑洞大开一下……不要在纠结了,你说的那些懂的人都懂。扯地球佛主没意义,但是这个主题其实更没意义。所以我也是继续开脑洞

@jugelizi 哈哈,逻辑不完善就是这样

@loading 楼主估计也就是开下脑洞。
yougg
2016-01-29 11:11:37 +08:00
需求描述不明确.

不定长度字符串 的上下边界是多少?
固定长度字符串 的长度又是多少?

1B 和 1TB 的字符串 能同时满足加密压缩至 1MB 吗?

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

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

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

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

© 2021 V2EX