PHP加密函数

一、使用crypt()函数加密

语法:string crypt(string str[, string salt]);

crypt()函数是单向加密的,密文不可还原成明文,而每次加密后的数据还不相同。用salt参数对明文加密,对输出的信息再次使用相同的salt参数进行加密,对比两次加密后的结果来判断。

crypt() 函数和salt参数的长度
算法salt长度
CRYPT_STD_DES2-character(默认)
CRYPT_EXT_DES9-character
CRYPT_MD512-character(以$1$开头)
CRYPT_BLOWFISH16-character(以$2$开头)

二、使用md5() 函数加密

MD5全称message-digest algorithm5(信息-摘要算法),它的作用是把不同长度的数据信息经过一系列的算法计算成一个128位数值,即把一个任意长度的字节串变换成一定长的大整数。

语法:string md5(string str[, bool raw_output);

参数:raw_output参数如果设为true,则函数返回一个二进制形式的密文,该参数默认为false。

三、使用sha1() 函数加密

语法:string sha1(string str[, bool raw_output])

和MD5类似,全称secure hash algorithm(安全哈希算法),函数返回一个40位的十六进制数,如果参数raw_output为true,则返回一个20位的二进制数,默认raw_output为false。

四、Mcrypt扩展库

1. Mcrypt库常量

Mcrypt库支持20多种加密算法和8中加密模式,分别通过mcrypt_list_algorithms()、mcrypt_list_modes()查看

这些算法和模式在实际应用中要用常量来表示,写的时候分别加上前缀MCRYPT_ 和MCRYPT_MODE_ 来表示。

2. mcrypt应用

header("content-type:text/html;charset=utf8");
$str = "床前明月光,疑是地上霜";
$key = "key:111";
$cipher = MCRYPT_DES;
$modes = MCRYPT_MODE_ECB;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher, $modes),MCRYPT_RAND);
echo "加密前:".$str;
echo "<br>";
$str_encrypt = mcrypt_encrypt($cipher, $key, $str,$modes,$iv);
echo "加密后:".$str_encrypt;
echo "<br>";
$str_decrypt = mcrypt_decrypt($cipher,$key,$str_encrypt, $modes, $iv);
echo "解密后:".$str_decrypt;
echo "<br>";
  • string mcrypt_create_iv(int size[, int source]),创建一个初始化向量。size指定iv的大小,source为iv的源。

参数:

MCRYPT_RAND:系统随机数

MCRYPT_DEV_RANDOM:读取目录/dev/random中的数据(UNIX系统)

MCRYPT_DEV_URANDOM:读取目录/dev/urandom中的数据(UNIX系统)

  • int mcrypt_get_iv_size(string cipher, string mode),该函数返回初始化向量(iv)的大小。
  • string mcrypt_encrypt(string cipher, string key, string data, string mode[, string iv]),该函数对数据进行加密。
  • string mcrypt_decrypt(string cipher, string key, string data, string mode[, string iv]),该函数的参数几乎和mcrypt_encrypt()函数参数一样,唯一不同的data,这里的data是需要解密的数据。

五、Mhash扩展库

1. Mhash库常量

Mhash库支持MD5,SHA、CRC32等多种散列算法,可以使用mhash_count()和mhash_get_hash_name()函数输出支持的算法名称。需要使用常量需要在算法名称前面加上MHASH_前缀。

2. Mhash应用

int mhash_get_block_size(int hash),用来获取参数hash的区块大小。

string mhash(int hash, string data[, string key]),函数返回一个哈希值。

string mhash_keygen_s2k(int hash, string password, string salt, int bytes), 根据参数password和salt返回一个单位为字节的key值。salt为一个固定8字节的值,如果用户给出的数值小于8字节,将用0补齐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值