PHP加密解密

PHP加密解密

计应134  凌豪

1.使用crypt()函数进行加密

crypt()函数可以完成单向加密功能,语法如下:

  string crypt(string str[, string salt]);

  其中,str参数是需要加密的字符串,salt参数为加密时使用的干扰串。如果省略掉第二个参数,则会随机生成一个干扰串。crypt()函数支持4种算法和长度,如表所示。

声明一个字符串变量$str,赋值为“This is test”,然后用crypt()函数进行加密并输出

DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>使用crypt()函数进行加密</title>
<style type="text/css">
<!--
body,td,th {
    font-size: 12px;
}
body {
    margin-left: 10px;
    margin-top: 10px;
    margin-right: 10px;
    margin-bottom: 10px;
}
-->
</style></head>
<body>
<?php
    $str ='This is test!';                    //声明字符串变量$str
    echo '加密前$str的值为:'.$str;
    $crypttostr = crypt($str);                        //对变量$str加密
    echo '<p>加密后$str的值为:'.$crypttostr;        //输出加密后的变量
?>
</body>
</html>

2.使用md5()函数进行加密

    md5()函数使用MD5算法。MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),它的作用是把不同长度的数据信息经过一系列的算法计算成一个128位的数值,就是把一个任意长度的字节串变换成一定长的大整数。注意这里是“字节串”而不是“字符串”,因为这种变换只与字节的值有关,与字符集或编码方式无关。md5()函数的格式如下:

  string md5 ( string str [, bool raw_output] );

  其中字符串str为要加密的明文,raw_output参数如果设为true,则函数返回一个二进制形式的密文,该参数默认为false。

  实现登录注册功能,并将用户密码通过MD5加密保存到数据库中其代码如下:

创建注册界面:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="css/style.css" rel="stylesheet" type="text/css">
<title>会员注册</title>
</head>
<body>
<div align="center">
  <script language="javascript">
function register(){
if(myform.name.value=="")
{alert("会员名称不能为空!!");myform.name.focus();return false;}
if(myform.pwd.value=="")
{alert("会员密码不能为空!!");myform.pwd.focus();return false;}
}
</script>
  <form name="myform" method="post" action="register_ok.php">
    <table width="778" height="314" border="0" cellpadding="0"
    cellspacing="0">
      <tr>
        <td valign="top" background="images/reg.gif"><table width="778" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td width="255" height="255">&nbsp;</td>
              <td width="66">&nbsp;</td>
              <td width="125">&nbsp;</td>
              <td width="332">&nbsp;</td>
            </tr>
            <tr>
              <td height="31">&nbsp;</td>
              <td align="center">注册名称:</td>
              <td><input name="name" type="text" id="name" size="16"></td>
              <td>&nbsp;</td>
            </tr>
            <tr>
              <td height="35">&nbsp;</td>
              <td align="center">注册密码:</td>
              <td><input name="pwd" type="password" id="pwd" size="16"></td>
              <td>&nbsp;</td>
            </tr>
            <tr>
              <td height="34">&nbsp;</td>
              <td>&nbsp;</td>
              <td align="right"><input name="imageField" type="image"
                    src="images/reg.jpg" width="87" height="24" border="0"
                    onClick="return register();">
                </a>&nbsp;</td>
              <td>&nbsp;</td>
            </tr>
            <tr>
              <td height="87">&nbsp;</td>
              <td>&nbsp;</td>
              <td>&nbsp;</td>
              <td>&nbsp;</td>
            </tr>
          </table></td>
      </tr>
    </table>
  </form>
</div>
</body>
</html>

创建register_ok.php

<?php
class chkinput {            //定义chkinput类
    var $name;                //定义成员变量
    var $pwd;                //定义成员变量
    function chkinput($x, $y) {        //定义成员方法
        $this->name = $x;        //为成员变量赋值
        $this->pwd = $y;        //为成员变量赋值
    }
    function checkinput() {            //定义方法,完成用户注册
        include "conn/conn.php";    //通过include调用数据库连接文件
        $info = mysql_query ( "insert into tb_user(user,password)value('" . $this->name . "','" . $this->pwd . "')" );
        if ($info == false) {        //根据添加操作的返回结果,给出提示信息
            echo "<script language='javascript'>alert('会员注册失败!');history.back();</script>";
            exit ();
        } else {
            $_SESSION [admin_name] = $this->name;        //注册成功后,将用户名赋给SESSION变量
            echo "<script language='javascript'>alert('恭喜您,注册成功!');window.location.href='index.php';</script>";
        }
    }
}
$obj = new chkinput ( trim ( $_POST [name] ), trim ( md5 ( $_POST [pwd] ) ) );        //实例化类
$obj->checkinput ();    //根据返回对象调用方法执行注册操作
?>

3.使用sha1()函数进行加密

  和MD5类似的还有SHA算法。SHA全称为Secure Hash Algorithm(安全哈希算法),PHP提供的sha1()函数使用的就是SHA算法,函数的语法如下:

  string sha1 ( string str [, bool raw_output] )

  函数返回一个40位的十六进制数,如果参数raw_output为true,则返回一个20位的二进制数。默认raw_output为false。

下面是分别对一个字符串进项MD5和SHA加密运算,代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>使用md5()和sha1()函数进行加密</title>
<style type="text/css">
<!--
body,td,th {
    font-size: 12px;
}
body {
    margin-left: 10px;
    margin-top: 10px;
    margin-right: 10px;
    margin-bottom: 10px;
}
-->
</style></head>
<body>
<div align="center">
<table border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td height="30" colspan="2" align="center" valign="middle" scope="col"><?php echo 'md5()和shal()函数的对比效果'; ?></td>
  </tr>
  <tr>
    <td width="200" height="30" align="right" valign="middle"><?php echo '使用md5()函数加密字符串PHPER:' ?></td>
    <td width="200" height="30" align="center" valign="middle"><?php echo md5('PHPER'); ?></td>
  </tr>
  <tr>
    <td width="200" height="30" align="right" valign="middle"><?php echo '使用shal()函数加密字符串PHPER:'; ?></td>
    <td width="200" height="30" align="center" valign="middle"><?php echo sha1('PHPER');  ?></td>
  </tr>
</table>
</div>
</body>
</html>

posted @ 2015-10-26 10:19  一个人一座城  阅读(5380)  评论(0编辑  收藏  举报