我需要使用base 64来加密一些数据。 但是虽然每个人都可以对它进行解码,但对它进行编码是否有意义?
所以我需要使用自定义maping表来编码 insted of“ABCD ...... 789 + /”
我在php.net上找到了一个函数 - http://www.php.net/manual/en/function.base64-encode.php#78765
它可以做我需要的 但我不知道如何解码加密数据。
答案 0 :(得分:2)
base64加密确实不是为了安全。您想要使用mcrypt或类似内容。 base64专门用于以安全的方式传输数据,并且可以被多个感兴趣的各方理解。
但是,这就是你要如何撤消海报的方法:
如果你看看他的评论,他会改变's'和9(实际上,他的阵列有两个'S',但我认为第二个是错字)。所以这应该有效:
// there is a more efficient way of doing this, but this was easy to demonstrate.
// you'll need to use temp stand-ins
$res = str_replace( array( 9, 's' ), array( '{', '}' ), $input );
$res = str_replace( array( '{', '}' ), array( 's', 9 ), $res );
$base64_raw = '';
for( $i = 0; $i < strlen( $res ); $i++ )
{
$tmp = $res[ $i ];
// if it is upper case, then append the lower-case version.
if( $tmp == strtoupper( $tmp ) ) $base64_raw .= strtolower( $tmp );
// else append the upper-case version.
else $base64_raw .= strtoupper( $tmp );
}
echo base64_decode( $base64_raw );