当前位置: 首页 > 后端技术 > PHP

JavaDes加密php版

时间:2023-03-29 21:10:29 PHP

之前用des加密对接Java,在网上找了一个php版本,测试后没问题。key=$key;}functionencrypt($input){$size=mcrypt_get_block_size('des','ecb');$input=$this->pkcs5_pad($input,$size);$key=$this->key;$td=mcrypt_module_open('des','','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=$this->byteArr2HexStr($this->getBytes($data));返回$data;}functiondecrypt($encrypted){$encrypted=$this->array2str($this->hexStr2ByteArr($encrypted));$key=$this->key;$td=mcrypt_module_open('des','','ecb','');//使用MCRYPT_DES算法,cbc模式$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($decrypted);返回$y;}functionpkcs5_pad($text,$blocksize){$pad=$blocksize-(strlen($text)%$blocksize);返回$text.str_repeat(chr($pad),$pad);}functionpkcs5_unpad($text){$pad=ord($text{strlen($text)-1});如果($pad>strlen($text))返回false;如果(strspn($text,chr($pad),strlen($text)-$pad)!=$pad)返回false;returnsubstr($text,0,-1*$pad);}/***把string转换为ASCII码值数组,array2str是一个相互可逆的转换过程**@paramstring待转换字符串*@返回转换后的ASCII码值数组*/functiongetBytes($string){$bytes=array();对于($i=0;$i$value){$string.=chr($value);}return$string;}/***将数组转换为表示十六进制值的字符串,与hexStr2ByteArr(StringstrIn)是相互可逆的转换过程***@paramarray待转换的字节数组*@return转换后的字符串*/公共函数byteArr2HexStr($array){$iLen=count($array);$return_str='';对于($i=0;$i<$iLen;$i++){$intTmp=$array[$i];//将负值转换为正值while($intTmp<0){$intTmp=$intTmp+256;}$intTmp=dechex($intTmp);//小于0F的数字需要在前面加0if(hexdec($intTmp)<16){$intTmp='0'.$intTmp;}$return_str=$return_str。$intTmp;}return$return_str;}/***将表示十六进制值的字符串转换成数组,转换过程与byteArr2HexStr可逆**@param$string需要转换String*@return转换后的数组*/publicfunctionhexStr2ByteArr($字符串){$len=strlen($字符串);$返回=数组();对于($i=0;$i<$len;$i=$i+2){$return[]=hexdec(substr($string,$i,2));}返回$return;}}