<?php

//测试一个需要加密的字符串
$str='aabbcc';
$str=encrypt($str);
echo $str;
echo '<br />'.decrypt($str);

//加密函数
$key='aaa';
function encrypt($encrypt)
{
global $key;
$iv=mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES,MCRYPT_MODE_ECB),MCRYPT_RAND);
$passcrypt=mcrypt_encrypt(MCRYPT_DES,$key,$str,MCRYPT_MODE_ECB,$iv);
//base64编码
$encode=base64_encode($passcrypt);
return $encode;
}

//解密函数
function decrypt($decrypt)
{
global $key;
$decode=base64_decode($str);
$iv=mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES,MCRYPT_MODE_ECB),MCRYPT_RAND);
$decrypted=mcrypt_decrypt(MCRYPT_DES,$key,$decode,MCRYPT_MODE_ECB,$iv);
return $decrypted;
}

?>我测试下来显示:
4pdo8QRq7qkp8XGtLjw2ZB6TQ3VnSW4oeRMMpSAT4ZM=
aabbcc��������������������������
为什么多了这么多?
开发环境用的是zend studio utf8 编码
网页头部也加了<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

解决方案 »

  1.   

    <?php //测试一个需要加密的字符串 
    $str='aabbcc'; 
    $str=encrypt($str); 
    echo $str; 
    echo ' <br />'.decrypt($str); //加密函数 
    $key='aaa'; 
    function encrypt($encrypt) 

    global $key; 
    $iv=mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES,MCRYPT_MODE_ECB),MCRYPT_RAND); 
    $passcrypt=mcrypt_encrypt(MCRYPT_DES,$key,$encrypt,MCRYPT_MODE_ECB,$iv); 
    //base64编码 
    $encode=base64_encode($passcrypt); 
    return $encode; 
    } //解密函数 
    function decrypt($decrypt) 

    global $key; 
    $decode=base64_decode($decrypt); 
    $iv=mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES,MCRYPT_MODE_ECB),MCRYPT_RAND); 
    $decrypted=mcrypt_decrypt(MCRYPT_DES,$key,$decode,MCRYPT_MODE_ECB,$iv); 
    return $decrypted; 
    } ?>