加密.docx

上传人:b****6 文档编号:15330393 上传时间:2023-07-03 格式:DOCX 页数:36 大小:47.84KB
下载 相关 举报
加密.docx_第1页
第1页 / 共36页
加密.docx_第2页
第2页 / 共36页
加密.docx_第3页
第3页 / 共36页
加密.docx_第4页
第4页 / 共36页
加密.docx_第5页
第5页 / 共36页
加密.docx_第6页
第6页 / 共36页
加密.docx_第7页
第7页 / 共36页
加密.docx_第8页
第8页 / 共36页
加密.docx_第9页
第9页 / 共36页
加密.docx_第10页
第10页 / 共36页
加密.docx_第11页
第11页 / 共36页
加密.docx_第12页
第12页 / 共36页
加密.docx_第13页
第13页 / 共36页
加密.docx_第14页
第14页 / 共36页
加密.docx_第15页
第15页 / 共36页
加密.docx_第16页
第16页 / 共36页
加密.docx_第17页
第17页 / 共36页
加密.docx_第18页
第18页 / 共36页
加密.docx_第19页
第19页 / 共36页
加密.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

加密.docx

《加密.docx》由会员分享,可在线阅读,更多相关《加密.docx(36页珍藏版)》请在冰点文库上搜索。

加密.docx

加密

金典网络技术开发有限公司

PHP简单应用

mySql安全应用

罗旭东

2012/12/27

学习在生活中进行,生活在工作里体味,知识存在于脑中,思想……

加密:

functionmyencode($mystr)

{

$mystr=base64_encode($mystr);

for($i=1;$i<=strlen($mystr);$i++)

{

$tmpstr.=chr(ord(substr($mystr,$i-1,1))-$tmpi+17);

}

returnurlencode(base64_encode($tmpstr));

}

解密:

functionmydecode($mystr)

{

$mystr=urldecode($mystr);

$mystr=base64_decode($mystr);

for($i=1;$i<=strlen($mystr);$i++)

{

$tmpstr.=chr(ord(substr($mystr,$i-1,1))+$tmpi-17);

}

returnbase64_decode($tmpstr);

}

//其中"17"这个数字可以改,要改两个函数都要改的:

//垃圾程序,高手见笑了.望不吝赐教.

MySQL数据库加密与解密

作者:

CIO时代网出处:

IT专家网2012-03-0709:

56

数据加密、解密在安全领域非常重要。

对程序员而言,在数据库中以密文方式存储用户密码对入侵者剽窃用户隐私意义重大。

有多种前端加密算法可用于数据加密、解密,下面我向您推荐一种简单的数据库级别的数据加密、解密解决方案。

以MYSQL数据库为例,它内建了相应的加密函数(AES_ENCRYPT())和解密函数(AES_DECRYPT())。

在表中插入加密数据

INSERTINTOuserdata(username,pasword,encryptedpassword)VALUES('smith','htims',AES_ENCRYPT('htims','key'))

上面的插入语句有三个字段,“用户名”、“密码”和“加密的密码”。

AES_ENCRYPT()函数需要一个“key”来协助加密,同样,解密也需要它(请牢记!

)。

下面是表中的数据截图:

从表中查询加密数据

SELECTusername,pasword,AES_DECRYPT(encryptedpassword,'key')FROMuserdata

上面的查询语句使用了AES_DECRYPT()函数。

下面是运行结果:

在上面的截图中,我们可以看到“pasword”和“decryptedpassword”字段的值是相同的,也就是说,你解密了用户密码。

mysql数据加密aes_encrypt()和aes_decrypt()

2009-07-2615:

51

数据库安全性.首先创建一个用户表users包含id,user_name两列

然后创建一个aes_salt表,里面的只有一列

aes_salt表的作用是存放加密参数.也可以把加密参数存放在php常量里面.然后给aes_salt表里面添加一个数据.

这里我添加了一个数据是'names',可以随意添加.这里的names相当一个钥匙,如果忘记钥匙的名字,那么就无法解开加密的数据.

下面用了一个mysql函数,aes_encrypt('a','b')a的位置是要加密的数字或字符串的位置,b的位置是钥匙的位置

aes_decrypt('a','b')是解密函数,用法和加密函数一样

由于密钥来自于数据库,所以给mysql声明一个变量,并把aes_salt里面的值赋给变量

赋值方法是@salt:

=saltfromaes_salt;

然后再users表中插入数据,并用aes_encrypt函数加密.user_name的值是'JAY'.

当查找users表中的值的时候可以用解密函数来取得,如果密钥的值不对则不能查看加密的值.

加密函数可以直接写成aes_encrypt('JAY','XXXX');但是密钥放在数据库里面更加安全.

如果mysql版本低于4.0.2,可以用encode()和decode()函数代替,语法是完全一样的

php

$con=mysql_connect("localhost","peter","abc123");

if(!

$con)

{

die('Couldnotconnect:

'.mysql_error());

}

//Createdatabase

if(mysql_query("CREATEDATABASEmy_db",$con))

{

echo"Databasecreated";

}

else

{

echo"Errorcreatingdatabase:

".mysql_error();

}

//Createtableinmy_dbdatabase

mysql_select_db("my_db",$con);

$sql="CREATETABLEPersons

FirstNamevarchar(15),

LastNamevarchar(15),

Ageint

)";

mysql_query($sql,$con);

mysql_close($con);

?

>

$sql="CREATETABLEPersons

personIDintNOTNULLAUTO_INCREMENT,

PRIMARYKEY(personID),

FirstNamevarchar(15),

LastNamevarchar(15),

Ageint

)";

mysql_query($sql,$con);

php

$con=mysql_connect("localhost","peter","abc123");

if(!

$con)

{

die('Couldnotconnect:

'.mysql_error());

}

mysql_select_db("my_db",$con);

mysql_query("INSERTINTOPersons(FirstName,LastName,Age)

VALUES('Peter','Griffin','35')");

mysql_query("INSERTINTOPersons(FirstName,LastName,Age)

VALUES('Glenn','Quagmire','33')");

mysql_close($con);

?

>

把来自表单的数据插入数据库

Firstname:

Lastname:

Age:

下面是"insert.php"页面的代码:

php

$con=mysql_connect("localhost","peter","abc123");

if(!

$con)

{

die('Couldnotconnect:

'.mysql_error());

}

mysql_select_db("my_db",$con);

$sql="INSERTINTOPersons(FirstName,LastName,Age)

VALUES

('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

if(!

mysql_query($sql,$con))

{

die('Error:

'.mysql_error());

}

echo"1recordadded";

mysql_close($con)

?

>

从数据库表中选取数据

php

$con=mysql_connect("localhost","peter","abc123");

if(!

$con)

{

die('Couldnotconnect:

'.mysql_error());

}

mysql_select_db("my_db",$con);

$result=mysql_query("SELECT*FROMPersons");

while($row=mysql_fetch_array($result))

{

echo$row['FirstName']."".$row['LastName'];

echo"
";

}

mysql_close($con);

?

>

在HTML表格中显示结果

php

$con=mysql_connect("localhost","peter","abc123");

if(!

$con)

{

die('Couldnotconnect:

'.mysql_error());

}

mysql_select_db("my_db",$con);

$result=mysql_query("SELECT*FROMPersons");

echo"

Firstname

Lastname

";

while($row=mysql_fetch_array($result))

{

echo"";

echo"".$row['FirstName']."";

echo"".$row['LastName']."";

echo"";

}

echo"";

mysql_close($con);

?

>

更新数据库中的数据

php

$con=mysql_connect("localhost","peter","abc123");

if(!

$con)

{

die('Couldnotconnect:

'.mysql_error());

}

mysql_select_db("my_db",$con);

mysql_query("UPDATEPersonsSETAge='36'

WHEREFirstName='Peter'ANDLastName='Griffin'");

mysql_close($con);

?

>

删除数据库中的数据

php

$con=mysql_connect("localhost","peter","abc123");

if(!

$con)

{

die('Couldnotconnect:

'.mysql_error());

}

mysql_select_db("my_db",$con);

mysql_query("DELETEFROMPersonsWHERELastName='Griffin'");

mysql_close($con);

?

>

创建ODBC连接

$conn=odbc_connect('northwind','','');

$sql="SELECT*FROMcustomers";

$rs=odbc_exec($conn,$sql);

ODBC实例

php

$conn=odbc_connect('northwind','','');

if(!

$conn)

{exit("ConnectionFailed:

".$conn);}

$sql="SELECT*FROMcustomers";

$rs=odbc_exec($conn,$sql);

if(!

$rs)

{exit("ErrorinSQL");}

echo"

";

echo"

";

echo"

";

while(odbc_fetch_row($rs))

{

$compname=odbc_result($rs,"CompanyName");

$conname=odbc_result($rs,"ContactName");

echo"

";

echo"

";

}

odbc_close($conn);

echo"

CompanynameContactname
$compname$conname
";

?

>

初始化XML解析器

php

//InitializetheXMLparser

$parser=xml_parser_create();

//Functiontouseatthestartofanelement

functionstart($parser,$element_name,$element_attrs)

{

switch($element_name)

{

case"NOTE":

echo"--Note--
";

break;

case"TO":

echo"To:

";

break;

case"FROM":

echo"From:

";

break;

case"HEADING":

echo"Heading:

";

break;

case"BODY":

echo"Message:

";

}

}

//Functiontouseattheendofanelement

functionstop($parser,$element_name)

{

echo"
";

}

//Functiontousewhenfindingcharacterdata

functionchar($parser,$data)

{

echo$data;

}

//Specifyelementhandler

xml_set_element_handler($parser,"start","stop");

//Specifydatahandler

xml_set_character_data_handler($parser,"char");

//OpenXMLfile

$fp=fopen("test.xml","r");

//Readdata

while($data=fread($fp,4096))

{

xml_parse($parser,$data,feof($fp))or

die(sprintf("XMLError:

%satline%d",

xml_error_string(xml_get_error_code($parser)),

xml_get_current_line_number($parser)));

}

//FreetheXMLparser

xml_parser_free($parser);

?

>

加载和输出XML

note.xml

xmlversion="1.0"encoding="ISO-8859-1"?

>

George

John

Reminder

Don'tforgetthemeeting!

php文件

php

$xmlDoc=newDOMDocument();

$xmlDoc->load("note.xml");

print$xmlDoc->saveXML();

?

>

/*------以下是PHP函数部分-----------*/

PHPDate()函数

php

echodate("Y/m/d");

echo"
";

echodate("Y.m.d");

echo"
";

echodate("Y-m-d");

?

>

获得某天时间戳:

php

$tomorrow=mktime(0,0,0,date("m"),date("d")+1,date("Y"));

echo"明天是".date("Y/m/d",$tomorrow);

?

>

fopen()函数

php

$file=fopen("welcome.txt","r");

?

>

模式

描述

r

只读。

在文件的开头开始。

r+

读/写。

在文件的开头开始。

w

只写。

打开并清空文件的内容;如果文件不存在,则创建新文件。

w+

读/写。

打开并清空文件的内容;如果文件不存在,则创建新文件。

a

追加。

打开并向文件文件的末端进行写操作,如果文件不存在,则创建新文件。

a+

读/追加。

通过向文件末端写内容,来保持文件内容。

x

只写。

创建新文件。

如果文件已存在,则返回FALSE。

x+

读/写。

创建新文件。

如果文件已存在,则返回FALSE和一个错误。

注释:

如果fopen()无法打开指定文件,则返回0(false)。

fclose()

php

$file=fopen("test.txt","r");

//somecodetobeexecuted

fclose($file);

?

>

feof()函数检测是否已达到文件的末端(EOF)

if(feof($file))echo"Endoffile";

fgets()函数用于从文件中逐行读取文件

php

$file=fopen("welcome.txt","r")orexit("Unabletoopenfile!

");

//Outputalineofthefileuntiltheendisreached

while(!

feof($file))

{

echofgets($file)."
";

}

fclose($file);

?

>

fgetc()函数用于从文件逐字符地读取文件

php

$file=fopen("welcome.txt","r")orexit("Unabletoopenfile!

");

while(!

feof($file))

{

echofgetc($file);

}

fclose($file);

?

>

创建一个文件上传表单

enctype="multipart/form-data">

Filename:


upload_file.php

php

if($_FILES["file"]["error"]>0)

{

echo"Error:

".$_FILES["file"]["error"]."
";

}

else

{

echo"Upload:

".$_FILES["file"]["name"]."
";

echo"Type:

".$_FILES["file"]["type"]."
";

echo"Size:

".($_FILES["file"]["size"]/1024)."Kb
";

echo"Storedin:

".$_FILES["file"]["tmp_name"];

}

?

>

通过使用PHP的全局数组$_FILES,你可以从客户计算机向远程服务器上传文件。

第一个参数是表单的inputname,第二个下标可以是"name","type","size","tmp_name"或"error"。

就像这样:

$_FILES["file"]["name"]-被上传文件的名称

$_FILES["file"]["type"]-被上传文件的类型

$_FILES["file"]["size"]-被上传文件的大小,以字节计

$_FILES["file"]["tmp_name"]-存储在服务器的文件的临时副本的名称

$_FILES["file"]["error"]-由文件上传导致的错误代码

这是一种非常简单文件上传方式。

基于安全方面的考虑,您应当增加有关什么用户有权上传文件的限制。

上传限制

php

if((($_FILES["file"]["type"]=="image/gif")

||($_FILES["file"]["type"]=="image/jpeg")

||($_FILES["file"]["type"]=="image/pjpeg"))

&&($_FILES["file"]["size"]<20000))

{

if($_FILES["file"]["error"]>0)

{

echo"Error:

".$_FILES["file"]["error"]."
";

}

else

{

echo"Upload:

".$_FILES["file"]["name"]."
";

echo"Type:

".$_FILES["file"]["type"]."
";

echo"Size:

".($_FILES["file"]["size"]/1024)."Kb
";

echo"Storedin:

".$_FILES["file"]["tmp_name"];

}

}

else

{

echo"Invalidfile";

}

?

>

保存被上传的文件

php

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2