加密算法,涉及到字符串和二进制的转换,请教
算法是这样的:
salt是当前10位时间戳。比如0911112934(月天时分秒)
密文密码=(md5密码 + salt后3位) ^ salt后2位
其中,md5密码是将明文密码md5以后固定不变的串。比如明文密码:123456,经过MD5加密后变成的一个32位的16进制字符串。
salt后3位就是934,后2位就是34.
现在的问题是怎么去计算上述的密文密码:
^ 这个运算符应该左右两边都是二进制整型才能运算吧。这样我就需要把(md5密码+salt后3位)转换成2进制整型。请问该怎么转换呢?我查了一些方法,都不行。是用java语法写哈
------解决方案--------------------其实你把那个MD5码用四个字节分开就行了。因为你加salt后三位的话,如果有四个字节的进位就往前进,依次运算+,当运算^的时候,这个肯定不会有进位,所以把上面得到的结果从新以四个字节分开,然后除了最后一个四字节,其他的都^0(其实这个还是原来的值),把最后四个字节^你的那个salt的int就行了。
------解决方案--------------------表达式:密文密码=(md5密码 + salt后3位) ^ salt后2位
其中,“md5密码”应该是32位的十六进制数,但不知道表达式中,这个 md5密码 是字符串形式的表示,
还是数字形式的表示 ?
salt后3位也一样,是数字形式的表示,还是字符串形式的表示?
因为,“+”号的意义不太明确,如果左右两个操作数都是数字,那么,应该是加法运算;
如果两个操作数有一个是字符串的话,应该是字符串的连接运算。
至于,“^”符号,应该是幂运算的运算符,那么左右两个操作数应该都是数字才对。
如果,括号里面的表达式,是字符串,还要涉及怎样将字符串转换成数字的问题。
楼主不妨先确认一下我上面的两个问题。这样就好解决问题了。
------解决方案--------------------------解决方案--------------------------解决方案--------------------