鍍金池/ 問(wèn)答/PHP/ php想要實(shí)現(xiàn)一個(gè)可逆加密,加密后還是數(shù)字

php想要實(shí)現(xiàn)一個(gè)可逆加密,加密后還是數(shù)字

想實(shí)現(xiàn)一個(gè)可逆加密,要求加密后內(nèi)容是數(shù)字

還有一個(gè)限制條件是,轉(zhuǎn)換后的數(shù)字不能大于 4294967295

回答
編輯回答
她愚我

skip32

2017年5月23日 15:26
編輯回答
笨尐豬

乘以或除以一個(gè)質(zhì)數(shù)

2017年8月6日 20:06
編輯回答
乖乖瀦

你是想做散列還是加密?

2018年1月20日 07:29
編輯回答
孤島

先給樓主介紹一個(gè)工具包,就是這個(gè) http://hashids.org/

它有各個(gè)語(yǔ)言的實(shí)現(xiàn),所以不用擔(dān)心通用性,可以很方便的跨語(yǔ)言和移植。

然后針對(duì)樓主要結(jié)果是全數(shù)字的,也很簡(jiǎn)單,hashids 生成的都是數(shù)字和字母,轉(zhuǎn)成 ASCII碼
或者 自己設(shè)計(jì)一個(gè) 26+10 的 36 進(jìn)制轉(zhuǎn)換算法就 OK 了。

加密的過(guò)程主要由 hashids 來(lái)實(shí)現(xiàn),轉(zhuǎn)成 ASCII碼 只是為了適應(yīng)題主要求結(jié)果全數(shù)字的特定條件。

不太推薦 DES 加密,是因?yàn)槿绻O(shè)計(jì)到多語(yǔ)言的話,可能會(huì)有坑。具體可以百度一下 php 和其他語(yǔ)言加密結(jié)果比較,有人踩過(guò)坑的。如果不關(guān)注這塊,選 DES或者其他對(duì)稱加密都是一樣的。

2017年2月19日 05:50
編輯回答
解夏

加密算法一般都是自己設(shè)計(jì)的,你要根據(jù)自己的想法去做。而可逆加密需要考慮可逆過(guò)程的關(guān)鍵要素,比如你用私鑰加密一組字符,用公鑰對(duì)加密字符進(jìn)行解密?;蛘吆?jiǎn)單的將字符與ASCII碼的對(duì)應(yīng)關(guān)系作為密碼的加密方式都是可以的。

2018年7月24日 04:46
編輯回答
你的瞳

最最最簡(jiǎn)單的就是每一位的數(shù)字都加一個(gè)數(shù)字,超過(guò) 10 就取個(gè)位

比如 12345 =》 加 7 加密,=》 89012
89012 =》 - 7 解密,=》 12345

2017年9月30日 14:36
編輯回答
焚音

贊同lifei6671的回答,像des,aes這類加密都做到你需要的功能,本質(zhì)上它們加密出來(lái)都是若干比特位,這些比特比特位你要怎么表現(xiàn)取決于你自己,按照你的需求,你只是將它們保存起來(lái),然后看上去是一個(gè)十進(jìn)制數(shù)而已。

2018年2月2日 17:32