base64的自定义映射表

时间:2011-07-07 19:05:32

标签: php base64

我需要使用base 64来加密一些数据。 但是虽然每个人都可以对它进行解码,但对它进行编码是否有意义?

所以我需要使用自定义maping表来编码 insted of“ABCD ...... 789 + /”

我在php.net上找到了一个函数 - http://www.php.net/manual/en/function.base64-encode.php#78765

它可以做我需要的 但我不知道如何解码加密数据。

1 个答案:

答案 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 );