1.3DES简介3DES(TripleDES)是DES向AES过渡的加密算法(1999年,NIST指定3-DES作为过渡加密标准),加密算法,其具体实现如下:令Ek()和Dk()表示DES算法的加解密过程,K表示DES算法使用的密钥,M表示明文,C表示密文,所以:3DES的加密过程为:C=Ek3(Dk2(Ek1(M)))3DES解密过程为:M=Dk1(EK2(Dk3(C)))常见的“对称密钥”加密算法主要有DES、3DES(TripleDES)、AES、RC2、RC4、RC5和Blowfish等.这里就不讲每个算法的实现了。有兴趣的可以自行查找。2.加解密类Crypt3DesclassCrypt3Des{public$key="";函数__construct($key){$this->key=$key;}/***数据加密*@paramstring$input*@returnvoid*/functionencrypt($input){$size=mcrypt_get_block_size(MCRYPT_3DES,'ecb');$input=$this->pkcs5_pad($input,$size);//$key=str_pad($this->key,24,'0');$key=$this->key;$td=mcrypt_module_open(MCRYPT_3DES,'','ecb','');$iv=@mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);@mcrypt_generic_init($td,$key,$iv);$data=mcrypt_generic($td,$input);mcrypt_generic_deinit($td);mcrypt_module_close($td);$data=base64_encode($data);返回$数据;}/***数据解密*@paramstring$encrypted*@returnvoid*/functiondecrypt($encrypted){//$encrypted=base64_decode($encrypted);//$key=str_pad($this->key,24,'0');$key=$this->key;$td=mcrypt_module_open(MCRYPT_3DES,'','ecb','');$iv=@mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);$ks=mcrypt_enc_get_key_size($td);@mcrypt_generic_init($td,$key,$iv);$decrypted=mdecrypt_generic($td,$encrypted);mcrypt_generic_deinit($td);mcrypt_module_close($td);$y=$this->pkcs5_unpad($解密);//返回$解密;返回$y;}/***加密数据填充*@paramstring$text*@paramint$blocksize*@returnvoid*/functionpkcs5_pad($text,$blocksize){$pad=$blocksize-(strlen($text)%$块大小);返回$text。str_repeat(chr($pad),$pad);}/***解密数据获取*@paramstring$text*@returnvoid*/functionpkcs5_unpad($text){$pad=ord($text{strlen($text)-1});如果($pad>strlen($text)){返回假;}if(strspn($text,chr($pad),strlen($text)-$pad)!=$pad){returnfalse;}returnsubstr($text,0,-1*$pad);}}3。数据加密、解密需要“Crypt3Des.php”;$key='1oneSign!@#^*';//加密密钥,这个看自己情况//实例化加密类$rep=newCrypt3Des($key);$input="ILoveMe";$encrypt_card=$rep->encrypt($input);echo'
';回声“原文:”。$输入。"
";echo"加密:"。$加密卡。"
";echo"解密:".$rep->decrypt($encrypt_card)。"
";友情提示:推荐别人写的加密类:php_mcrypt(该类只适用于7.1以下的php版本)参考PHP使用3DES算法对字符串进行加解密,php中使用对称加密DES3,开发银行卡绑定,实名认证...
