现在已知一解密函数(readkey)如下,求对应的加密函数
function authcode( $string, $operation = decode, $key = , $expiry = 0 ){ $ckey_length = 4; $key = md5( $key != ? $key : a2264dxlupvmlkqr ); $keya = md5( substr( $key, 0, 16 ) ); $keyb = md5( substr( $key, 16, 16 ) ); $keyc = $ckey_length ? $operation == decode ? substr( $string, 0, $ckey_length ) : substr( md5( microtime( ) ), 0 - $ckey_length ) : ; $cryptkey = $keya.md5( $keya.$keyc ); $key_length = strlen( $cryptkey ); $string = $operation == decode ? base64_decode( substr( $string, $ckey_length ) ) : sprintf( %010d, $expiry ? $expiry + time( ) : 0 ).substr( md5( $string.$keyb ), 0, 16 ).$string; $string_length = strlen( $string ); $result = ; $box = range( 0, 255 ); $rndkey = array( ); $i = 0; for ( ; $i <= 255; ++$i ) { $rndkey[$i] = ord( $cryptkey[$i % $key_length] ); } $j = $i = 0; for ( ; $i < 256; ++$i ) { $j = ( $j + $box[$i] + $rndkey[$i] ) % 256; $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp; } $a = $j = $i = 0; for ( ; $i < $string_length; ++$i ) { $a = ( $a + 1 ) % 256; $j = ( $j + $box[$a] ) % 256; $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp; $result .= chr( ord( $string[$i] ) ^ $box[( $box[$a] + $box[$j] ) % 256] ); } if ( $operation == decode ) { if ( ( substr( $result, 0, 10 ) == 0 || 0 < substr( $result, 0, 10 ) - time( ) ) && substr( $result, 10, 16 ) == substr( md5( substr( $result, 26 ).$keyb ), 0, 16 ) ) { return substr( $result, 26 ); } return ; } return $keyc.str_replace( =, , base64_encode( $result ) );}function readkey( $keys ){ $leskey = authcode( $keys, decode, a2264dxlupvmlkqr ); $leskey = base64_decode( $leskey ); $firststr = substr( $leskey, 0, 1 ); $leskey = substr( $leskey, 1 ); $leskey = strrev( substr( $leskey, 0, $firststr ) ).chr( ord( substr( $leskey, $firststr, 1 ) ) ^ $firststr ).strrev( substr( $leskey, $firststr + 1 ) ); $leskey = base64_decode( $leskey ); $leskey = json_decode( $leskey, true ); return $leskey;}
加密后的字串: 正确的在2楼
561eqdnvqsi/n6upgqb5xborsut9a26w6m415bruypp4ent5kb/bld5mi7jvvt2re35r1lhrdtc5mynutp7gpbqy0geublxrurul9abc1xtfd4zlvf3vom4hudeuxhakvivka2g1ywt2vxllnrnuq9axs65gxrd0g2ils693cfgawn4xl4qi313fvythwlk/eicg0hyrmxmr5p8fftaa+fw42c5c31g8ych96lnfbcrhsjuo7tqjuibsukqbh3bbxfnum1yb1rgi8myw23tlrtddbopinpcgm1usa2l+laxlhve8yqrlg5t8zvxxwvo1quv8zmpbry/xxru5+nn6avxskuwdyhvcp2jgj5s4yr0cwcyiug
回复讨论(解决方案) 但你的函数并不能还原你的加密串
但你的函数并不能还原你的加密串
不好意思。给错了,这段字符串
5463y5splqyvmtpqhkngtjldp0solvmhapvayaha3xflhpkhpvp059ow7wz9b+tgkcvoknm38p9tqj4oroqnn+xq5csi/5xb7t+x1t3w9ckkn+ocjnkqyi0yyyl4suakfwqajjebuicbw9jvrlidbi6awuu8pknyr4hsol3376wa24sjqpxgmvj0s76+76ejt5e3cel2pdklxdxofwz1nc5zqlw0a0xpvabsbqsgawxihfmoa9wkp8pzhz8cdofpzjha7goiccg6xwrg978jkq3umxt7z5ztyy9vgw4bhvqbqzp242idaafggt1gviu4rwarccardu+xlo74jhej2zscxhq/hvsqnqywsz8nwowrydzgjhlz5nexdsy7pxpicxr2q/e
我没权限改主题了。麻烦帮修改一下。
已自己搞定。。
楼主,能否分享一下对于移位的解密思路呢?