V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
eric_zyh
V2EX  ›  PHP

求PHP加密方案

  •  
  •   eric_zyh · 2011-12-05 15:50:53 +08:00 · 5309 次点击
    这是一个创建于 4774 天前的主题,其中的信息可能已经有所发展或是发生改变。
    要求:
    1.加密前数字,加密后也是数字
    2.不管加密钱数字是多大(只要小于10位数),加密后数字始终是10位数

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

    如:加密前 : 706
    二进制偏移前:0000000000000000000001011000010
    偏移后偏移后:0000000000101100001000000000000
    加密后二进制:10000000000101100001000000000000
    加密后 : 2147484354
    29 条回复    1970-01-01 08:00:00 +08:00
    eric_zyh
        1
    eric_zyh  
    OP
       2011-12-05 15:51:22 +08:00
    有现成的方案更好了。。求帮助
    skywinger
        2
    skywinger  
       2011-12-05 15:56:39 +08:00
    用个des或是rsa算法不就搞定了?
    issac
        3
    issac  
       2011-12-05 16:18:51 +08:00
    MD5不行?
    要是偏移的话
    可以用706 << 10;
    CoX
        4
    CoX  
       2011-12-05 16:20:19 +08:00
    zend? 得通过组件解密吧,如果自己加密自己解密,就没啥意义了。
    skywinger
        5
    skywinger  
       2011-12-05 16:28:21 +08:00
    @issac MD5/SHA1等HASH签名算法不是加解密算法,只是计算一个散列值数字签名而已,因此数字签名不能够反向计算出原先的明文。
    可以使用DES或是RSA这类的加解密算法来加解密关键数据。
    eric_zyh
        6
    eric_zyh  
    OP
       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
        7
    issac  
       2011-12-05 16:39:46 +08:00
    @skywinger 呃..要解密的话MD5是不行- -..加解密这方面用的不多..
    miao
        8
    miao  
       2011-12-05 18:37:31 +08:00
    CoX
        9
    CoX  
       2011-12-05 19:32:57 +08:00
    @eric_zyh 开始误解意思了,看样子你只是想对某个字符串加密而不是所有php文件加密;如果不需要解密验证的话,md5够用,取前10位就成。
    @miao easycms估计就用的这个加密的,用python几行代码就解了。
    Hyperion
        10
    Hyperion  
       2011-12-05 21:15:46 +08:00
    干什么用的? 密钥固定嘛?

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

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

    可能我一开始也没讲太清楚,其实我就是想把“用户ID”字段 做加密解密,并保证加密后一定是10位的数字。加密方法也不一定要多严密,只要第一眼看不出来“用户ID”就OK。而且加密解密操作很频繁,所以想到用2进制去弄。
    myrual
        21
    myrual  
       2011-12-06 15:48:01 +08:00
    @skywinger
    金融系统用的PBOC算法么?
    skywinger
        22
    skywinger  
       2011-12-06 16:22:32 +08:00
    @myrual PBOC不是算法,是IC卡设备安全认证,
    算法基本上就是DES、3DES(对称加密算法)
    RSA(非对称加密算法)
    SHA1、MD5(数字签名)
    myrual
        23
    myrual  
       2011-12-06 16:29:07 +08:00
    @skywinger 多谢指导。我才知道原来我们总用的这个PBOC是怎么来的。
    其实PBOC用到了算法。他使用的是3des。只不过是两次而已。

    银行领域还在使用des 3des么?不是说已经不够安全了么?
    arzon
        24
    arzon  
       2011-12-06 16:30:22 +08:00
    要保证加密后的结果是定长, 那怎么能解密??
    skywinger
        25
    skywinger  
       2011-12-06 17:13:02 +08:00
    @myrual 需要保证安全的话,就需要使用硬件加密,尽量不采用软加密,另外计算数字签名mac值,mac算法由具体的金融机构定制。另外金融交易报文多采用ISO8583报文规范。
    CoX
        26
    CoX  
       2011-12-06 18:07:56 +08:00
    @eric_zyh 那不如直接用一个字段来代替ID,省去加密解密操作
    myrual
        27
    myrual  
       2011-12-06 22:00:55 +08:00
    @skywinger 目前pos机基于的是ISO8583 87 还是93版?
    另外包括银联做的手机支付走gprs的也是这个报文格式么?
    skywinger
        28
    skywinger  
       2011-12-07 09:10:21 +08:00
    对的,基本都是ISO8583报文格式。
    手机支付是基于8583基础上的XML报文。
    sharmy
        29
    sharmy  
       2011-12-22 12:43:28 +08:00
    定长就不好搞了吧,而且10位有点短
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1003 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:18 · PVG 04:18 · LAX 12:18 · JFK 15:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.