请问这两个php自定义函数是干什么的?
第一个functionapi_encrypt($data,$security_key,$cipher=MCRYPT_3DES){$td=mcrypt_module_ope...
第一个
function api_encrypt($data, $security_key, $cipher = MCRYPT_3DES) {
$td = mcrypt_module_open ( $cipher, '', MCRYPT_MODE_ECB, '' ); //MCRYPT_TRIPLEDES,MCRYPT_3DES
if (IS_WINDOWS_OS) {//检查系统是否为windows
$iv = mcrypt_create_iv ( mcrypt_enc_get_iv_size ( $td ), MCRYPT_RAND );//函数用来建立向量初始化 (Initialization vector, IV) 的值。参数 size 为指定的向量初始化治募长度。参数 source 为随机资料的来源,来源可以是 MCRYPT_RAND (系统产生的随机值)、MCRYPT_DEV_RANDOM (UNIX 系统中 /dev/random 的资料)、MCRYPT_DEV_URANDOM (UNIX 系统中 /dev/urandom 的资料),若使用 MCRYPT_RAND 当做随机源,记得先使用 srand() 产生乱数种子。
} else {
$iv = mcrypt_create_iv ( mcrypt_enc_get_iv_size ( $td ), MCRYPT_DEV_RANDOM );
}
$key = substr ( $security_key, 0, mcrypt_enc_get_key_size ( $td ) );
mcrypt_generic_init ( $td, $key, $iv );
$ret = base64_encode ( mcrypt_generic ( $td, $data ) );
mcrypt_generic_deinit ( $td );
mcrypt_module_close ( $td );
return trim ( $ret );
}
第二个
function api_decrypt($value, $security_key, $cipher = MCRYPT_3DES) {
$td = mcrypt_module_open ( $cipher, '', MCRYPT_MODE_ECB, '' ); //'tripledes',MCRYPT_3DES
if (IS_WINDOWS_OS) {//检查系统是否为windows
$iv = mcrypt_create_iv ( mcrypt_enc_get_iv_size ( $td ), MCRYPT_RAND );
} else {
$iv = mcrypt_create_iv ( mcrypt_enc_get_iv_size ( $td ), MCRYPT_DEV_RANDOM );
}
$key = substr ( $security_key, 0, mcrypt_enc_get_key_size ( $td ) );
mcrypt_generic_init ( $td, $key, $iv );
$ret = trim ( mdecrypt_generic ( $td, base64_decode ( $value ) ) );
mcrypt_generic_deinit ( $td );
mcrypt_module_close ( $td );
return trim ( $ret );
} 展开
function api_encrypt($data, $security_key, $cipher = MCRYPT_3DES) {
$td = mcrypt_module_open ( $cipher, '', MCRYPT_MODE_ECB, '' ); //MCRYPT_TRIPLEDES,MCRYPT_3DES
if (IS_WINDOWS_OS) {//检查系统是否为windows
$iv = mcrypt_create_iv ( mcrypt_enc_get_iv_size ( $td ), MCRYPT_RAND );//函数用来建立向量初始化 (Initialization vector, IV) 的值。参数 size 为指定的向量初始化治募长度。参数 source 为随机资料的来源,来源可以是 MCRYPT_RAND (系统产生的随机值)、MCRYPT_DEV_RANDOM (UNIX 系统中 /dev/random 的资料)、MCRYPT_DEV_URANDOM (UNIX 系统中 /dev/urandom 的资料),若使用 MCRYPT_RAND 当做随机源,记得先使用 srand() 产生乱数种子。
} else {
$iv = mcrypt_create_iv ( mcrypt_enc_get_iv_size ( $td ), MCRYPT_DEV_RANDOM );
}
$key = substr ( $security_key, 0, mcrypt_enc_get_key_size ( $td ) );
mcrypt_generic_init ( $td, $key, $iv );
$ret = base64_encode ( mcrypt_generic ( $td, $data ) );
mcrypt_generic_deinit ( $td );
mcrypt_module_close ( $td );
return trim ( $ret );
}
第二个
function api_decrypt($value, $security_key, $cipher = MCRYPT_3DES) {
$td = mcrypt_module_open ( $cipher, '', MCRYPT_MODE_ECB, '' ); //'tripledes',MCRYPT_3DES
if (IS_WINDOWS_OS) {//检查系统是否为windows
$iv = mcrypt_create_iv ( mcrypt_enc_get_iv_size ( $td ), MCRYPT_RAND );
} else {
$iv = mcrypt_create_iv ( mcrypt_enc_get_iv_size ( $td ), MCRYPT_DEV_RANDOM );
}
$key = substr ( $security_key, 0, mcrypt_enc_get_key_size ( $td ) );
mcrypt_generic_init ( $td, $key, $iv );
$ret = trim ( mdecrypt_generic ( $td, base64_decode ( $value ) ) );
mcrypt_generic_deinit ( $td );
mcrypt_module_close ( $td );
return trim ( $ret );
} 展开
2个回答
展开全部
加密和解密的函数
追问
mcrypt_module_open
和
mcrypt_create_iv
是干什么用的
追答
resource mcrypt_module_open ( string $algorithm , string $algorithm_directory , string $mode , string $mode_directory )
参数$algorithm:要使用的算法,可以通过函数mcrypt_list_algorithms()来查看所有支持的算法名称
参数$ mode:要使用哪种模式,同样,可以内置函数mcrypt_list_algorithms()来查看所有支持的模式
string mcrypt_create_iv ( int $size [, int $source = MCRYPT_DEV_RANDOM ] )
该函数会创建一个初始化向量(IV)
参数:
$source可以使MCRYPT_RAND,MCRYPT_DEV_RANDOM,
MCRYPT_DEV_URANDOM
注意:PHP5.3.0以上的版本,只支持MCRYPT_RAND
返回值:
成功,则返回一个字符串型的初始向量,失败,则返回False
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询