• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP中加密解密函数与DES加密解密实例_php技巧

php 搞代码 3年前 (2022-01-26) 56次浏览 已收录 0个评论

本文实例讲述了PHP中加密解密函数与DES加密解密的应用,分享给大家供大家参考。具体如下:

例子,php加密解密的例子

加密函数:

/*<br />*功能:对字符串进行加密处理<br />*参数一:需要加密的内容<br />*参数二:密钥<br />*/<br />function passport_encrypt($str,$key){ //加密函数<br /> srand((double)microtime() * 1000000);<br /> $encrypt_key=md5(rand(0, 32000));<br /> $ctr=0;<br /> $tmp='';<br /> for($i=0;$i<strlen($str);$i++){<br />  $ctr=$ctr==strlen($encrypt_key)?0:$ctr;<br />  $tmp.=$encrypt_key[$ctr].($str[$i] ^ $encrypt_key[$ctr++]);<br /> }<br /> return base64_encode(passport_key($tmp,$key));<br />}

解密代码如下:

/*<br />*功能:对字符串进行解密处理<br />*参数一:需要解密的密文<br />*参数二:密钥<br />*/<br />function passport_decrypt($str,$key){ //解密函数<br /> $str=passport_key(base64_decode($str),$key);<br /> $tmp='';<br /> for($i=0;$i<strlen($str);$i++){<br />  $md5=$str[$i];<br />  $tmp.=$str[++$i] ^ $md5;<br /> }<br /> return $tmp;<br />}

辅助函数:

/*<br />*辅助函数<br />*/<br />function passport_key($str,$encrypt_key){<br /> $encrypt_key=md5($encrypt_key);<br /> $ctr=0;<br /> $tmp='';<br /> for($i=0;$i<strlen($str);$i++){<br />  $ctr=$ctr==strlen($encrypt_key)?0:$ctr;<br />  $tmp.=$str[$i] ^ $encrypt_key[$ctr++];<br /> }<br /> return $tmp;<br />}

使用如下所示

$str='作者:www.gaodaima.com';<br />$key='123456';<br />$encrypt=passport_encrypt($str,$key);<br />$decrypt=passport_decrypt($encrypt,$key);<br />echo '原文:',$str."<br><hr>";<br />echo '密文:',$encrypt."<br><hr>";<br />echo '译文:',$decrypt."<br><hr>";

DES加密解密函数具体代码如下:

<?php<br />class DES<br />{<br /> var $key;<br /> var $iv; //偏移量<br /> <br /> function DES( $key, $iv=0 ) {<br /> //key长度8例如:1234abcd<br />  $this->key = $key;<br />  if( $iv == 0 ) {<br />   $this->iv = $key;<br />  } else {<br />   $this->iv = $iv; //mcrypt_create_iv ( mcrypt_get_block_size (MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM );<br />  }<br /> }<br /> <br /> function encrypt($str) {<br /> //加密,返回大写十六进制字符串<br />  $size = mcrypt_get_block_size ( MCRYPT_DES, MCRYPT_MODE_CBC );<br />  $str = $this->pkcs5Pad ( $str, $size );<br />  return strtoupper( bin2hex( mcrypt_cbc(MCRYPT_DES, $this->key, $str, MCRYPT_ENCRYPT, $this->iv ) ) );<br /> }<br /> <br /> function decrypt($str) {<br /> //解密<br />  $strBin = $this->hex2bin( strtolower( $str ) );<br />  $str = mcrypt_cbc( MCRYPT_DES, $this->key, $strBin, MCRYPT_DECRYPT, $this->iv );<br />  $str = $this->pkcs5Unpad( $str );<br />  return $str;<br /> }<br /> <br /> function hex2bin($hexData) {<br />  $binData = "";<br />  for($i = 0; $i < strlen ( $hexData ); $i += 2) {<br />   $binData .= chr ( hexdec ( substr ( $hexData, $i, 2 ) ) );<br />  }<br />  return $binData;<br /> }<br /> <br /> function pkcs5Pad($text, $blocksize) {<br />  $pad = $blocksize - (strlen ( $text ) % $blocksize);<br />  return $text . str_repeat ( chr ( $pad ), $pad );<br /> }<br /> <br /> function pkcs5Unpad($text) {<br />  $pad = ord ( $text {strlen ( $text ) - 1} );<br />  if ($pad > strlen ( $text ))<br />   return false;<br />  if (strspn ( $text, chr ( $pad ), strlen ( $text ) - $pad ) != $pad)<br />   return false;<br />  return substr ( $text, 0, - 1 * $pad );<br /> }<br />}<br />&#63<em style="color:transparent">本文来源[email protected]搞@^&代*@码)网9</em><strong>搞代gaodaima码</strong>;>

以下是测试结果:

$str = '12345678';<br />$key = '1234abcd';<br />$crypt = new DES($key);<br />$mstr = $crypt->encrypt($str);<br />$str = $crypt->decrypt($mstr);<br />echo  $str.'  '.$mstr;

例子2

代码如下:

/**<br />*加密需通过get方式在url中传递的参数<br />*/<br />function args_encode($data) {<br />if(is_array($data)) {<br />$string = http_build_query($data);<br />return base64_encode($string);<br />} else {<br />return false;<br />}<br />}</p><p>/**<br />*获取url中get方式传递的参数<br />*/<br />function getargs() {<br />$string = base64_decode($_GET['args']);<br />parse_str($string,$g);<br />return $g;<br />}

希望本文所述对大家的PHP程序设计有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP中加密解密函数与DES加密解密实例_php技巧

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址