求PHP加密方案

2011-12-05 15:50:53 +08:00
 eric_zyh
要求:
1.加密前数字,加密后也是数字
2.不管加密钱数字是多大(只要小于10位数),加密后数字始终是10位数

我想了个方法把加密前的数字的2进制在31位中循环左偏移10位,然后第一位补充1。不知道可不可行。

如:加密前 : 706
二进制偏移前:0000000000000000000001011000010
偏移后偏移后:0000000000101100001000000000000
加密后二进制:10000000000101100001000000000000
加密后 : 2147484354
5307 次点击
所在节点    PHP
29 条回复
eric_zyh
2011-12-05 15:51:22 +08:00
有现成的方案更好了。。求帮助
skywinger
2011-12-05 15:56:39 +08:00
用个des或是rsa算法不就搞定了?
issac
2011-12-05 16:18:51 +08:00
MD5不行?
要是偏移的话
可以用706 << 10;
CoX
2011-12-05 16:20:19 +08:00
zend? 得通过组件解密吧,如果自己加密自己解密,就没啥意义了。
skywinger
2011-12-05 16:28:21 +08:00
@issac MD5/SHA1等HASH签名算法不是加解密算法,只是计算一个散列值数字签名而已,因此数字签名不能够反向计算出原先的明文。
可以使用DES或是RSA这类的加解密算法来加解密关键数据。
eric_zyh
2011-12-05 16:34:12 +08:00
@skywinger : des rsa 看的半天没看太懂~~ php好像也没有内置的函数

@issac : MD5不行. 我希望加密后是一个10位定长的数字

偏移的话 可以用706 << 10; 偏移貌似是在操作系统的位做循环,我希望是31位做偏移,不知道有没有方法?

@CoX : 没找到合适的加解密组件,我只用过 btye64 和 md5 。 都不太符合我的要求,我希望加密后是10位定长的数字,另外 skywinger提到的 des、ras正在看~~ 不知道行不行
issac
2011-12-05 16:39:46 +08:00
@skywinger 呃..要解密的话MD5是不行- -..加解密这方面用的不多..
miao
2011-12-05 18:37:31 +08:00
CoX
2011-12-05 19:32:57 +08:00
@eric_zyh 开始误解意思了,看样子你只是想对某个字符串加密而不是所有php文件加密;如果不需要解密验证的话,md5够用,取前10位就成。
@miao easycms估计就用的这个加密的,用python几行代码就解了。
Hyperion
2011-12-05 21:15:46 +08:00
干什么用的? 密钥固定嘛?

可以考虑自己弄一个高次方程, 带入...
miao
2011-12-05 23:03:42 +08:00
@CoX 呵呵,求此解密方式.
CoX
2011-12-05 23:10:12 +08:00
@miao 没加密后的代码,呵呵~~ 其实我就是想说这种不需要额外组件的加密方式,都能轻松解密的
skywinger
2011-12-06 10:01:07 +08:00
@Cox 那简单啊,直接用706转成hex 16进制byte码对一个固定byte字串做一次异或运算就行了。
CoX
2011-12-06 10:45:41 +08:00
@skywinger 这样加密之后的php文件,能直接解析?
skywinger
2011-12-06 11:08:56 +08:00
@CoX 你是要整个PHP文件加密?
那用deflate压缩后再做一次base64就好了,这样做比较符合规范
CoX
2011-12-06 11:22:18 +08:00
@skywinger 我的意思就是指php文件的加密,如果不额外用组件,都能轻松解密。可以看一下我前面的回帖。
skywinger
2011-12-06 12:41:09 +08:00
@CoX 自己写加解密算法?何必呢!
CoX
2011-12-06 12:50:02 +08:00
@skywinger 我很少写php的,我只是想说普通的php加密不靠谱
skywinger
2011-12-06 13:11:11 +08:00
@CoX 我也不是做PHP的,但是我接触加解密体系这块比较多,我是做金融终端设备接入系统的,接触很多金融安全级别的加解密体系,DES、RSA、mac计算等等。
eric_zyh
2011-12-06 15:00:56 +08:00
@miao @CoX @skywinger 多谢3位的回答~~

我不折腾那么烦了。 直接向左边位移三位、取反、第一位异或为0。

可能我一开始也没讲太清楚,其实我就是想把“用户ID”字段 做加密解密,并保证加密后一定是10位的数字。加密方法也不一定要多严密,只要第一眼看不出来“用户ID”就OK。而且加密解密操作很频繁,所以想到用2进制去弄。

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

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

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

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

© 2021 V2EX