驱动管家:安全、高效、精准的专业驱动下载站!

密码学的几个词汇 php中提供了哪些数据加密功能?

2018-02-07 13:27:46责编:llp   来源:驱动管家     人气:

综述:密码学是研究编制密码(我们简称为加密:encode)和破译密码(我们称之为解密:decode)的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称密码学。通常情况下,人们将可懂的文本称为明文;将明文变换成的不可懂的文本称为密文。把明文变换成密文的过程叫加密;其逆过程,即把密文变换成明文的过程叫解密。

密码学的几个词汇 php中提供了哪些数据加密功能

PHP中提供了哪些数据加密功能?

PHP提供了crypt()函数完成加密功能:

string crypt (string input_string [, string salt])

这一函数完成被称作单向加密的功能,也就是说,它可以加密一些明码,但不能够将密码转换为原来的明码。单向加密的口令一旦落入第三方人的手里,由于不能被还原为明文,因此也没有什么大用处。在验证用户输入的口令时,用户的输入采用的也是单向算法,如果输入与存储的经加密后的口令相匹配,则输入的口令一定是正确的。

这个函数的input_string参数是需要加密的字符串,第二个参数salt是一个位字串,它能够影响加密的暗码,进一步地排除被称作预计算攻击的可能性。缺省情况下,PHP使用一个2个字符的DES干扰串,如果你的系统使用的是MD5 ,它会使用一个12个字符的干扰串。我们可以通过执行下面的命令发现系统将要使用的干扰串的长度:

print "系统使用的干扰串的长度是:". CRYPT_SALT_LENGTH;

crypt()支持四种算法,下面是它支持的算法和相应的salt参数的长度:

[注:以下用表格]

算法 Salt长度

CRYPT_STD_DES 2-character (默认)

CRYPT_EXT_DES 9-character

CRYPT_MD5 12-character beginning with $1$

CRYPT_BLOWFISH 16-character beginning with $2$

怎样将PHP的数据加密功能应用于用户验证?

我们用crypt()实现用户身份验证。比如我们用一段PHP程序限制对一个目录的访问,只允许注册用户访问这一目录。我们把资料存储MySQL数据库的一个表(这个数据表名为members)中:

mysql>CREATE TABLE members (

->username CHAR(14) NOT NULL,

->password CHAR(32) NOT NULL,

->PRIMARY KEY(username)

->);

然后,我们可以输入用户的数据到该表中:

用户名 密码

Tom keloD1C377lKE

John ba1T7vnz9AWgk

Bill paLUvRWsRLZ4U

这些加密的口令对应的明码分别是Tom、John和Bill。我们将根据口令的前二个字母创建干扰串:

$enteredPassword.

$salt = substr($enteredPassword, 0, 2);

$userPswd = crypt($enteredPassword, $salt);

// $userPswd然后就和用户名一起存储在MySQL 中

crypt()和Apache的口令-应答验证系统的应用

<?php

$host = "localhost"; //主机

$username = "Tom"; //用户名

$passwd = "Hello world"; //密码

$db = "users"; //数据库名

// 设置是否通过验证标志,默认为否

$authorization = 0;

// 提示用户输入帐号和密码

if (isset($PHP_AUTH_USER) && isset($PHP_AUTH_PW)){

mysql_pconnect($host, $username, $passwd) or die("不能连接到MySQL服务器!");

mysql_select_db($db) or die("不能选择数据库!");

// 进行加密

$salt = substr($PHP_AUTH_PW, 0, 2);

$encrypted_pswd = crypt($PHP_AUTH_PW, $salt);

//SQL查询语句

$query = "SELECT username FROM members WHERE username = \'$PHP_AUTH_USER\' AND password = \'$encrypted_pswd\'";

// 执行查询

if (mysql_numrows(mysql_query($query)) == 1) {

$authorization = 1;

}

}

if (! $authorization){

header(\'WWW-Authenticate: Basic realm="用户验证"\');

header(\'HTTP/1.0 401 Unauthorized\');

print "无法通过验证";

exit;

}else {

print "已经加密";

}

?>

在缺省状态下使用的 crypt()并不是最安全的,所以如果需要较高的安全性能,就需要其他更好的算法,比如md5(),这一函数使用MD5散列算法。

如何通过MD5方式进行加密?

PHP中通过MD5方式加密的函数有md5(),它的一个作用是混编。

一个混编函数可以将一个可变长度的信息变换为具有固定长度被混编过的输出,也被称作"信息文摘",这是十分有用的,因为 一个固定长度的字符串可以用来检查文件的完整性和验证数字签名与用户身份。PHP内置的md5()混编函数将把一个可变长度的信息转换为128位(32个字符)的信息文摘。混编的一个有趣的特点是:不能通过分析混编后的信息得到原来的明码,因为混编后的结果 与原来的明码内容没有依赖关系。即便只改变一个字符串中的一个字符,也将使得MD5混编算法计算出二个截然不同的结果。我们首先来看下表的内容及其相应的结果:

使用md5()混编字符串

<php

$input = "Hello,PHP world!";

$output = md5($input);

print "输出: $output ";

?>

结果:

输出: 7996b5e0804042fd531907a4900f190e

注意,结果的长度为32个字符。我们把$input的值稍微改变一下:

使用md5()对一个稍微变化的字符串进行混编

<?php

$input = "Hello,PHP World!";

$output = md5($input);

print "输出: $output ";

?>

结果:

hash2: f0456d48ed06a5c35b1e42561fa7a016

可以发现,尽管二个结果的长度都是32个字符,但明文中一点微小的变化使得结果发生了很大的变化,我们可以利用这个特点来检查数据中微小变化。

  • 网马是什么?怎么保护网马的代码?

    网马是什么?怎么保护网马的代码?

    网页木马实际上是一个HTML网页,它利用IE浏览器的漏洞,让IE在后台自动下载黑客放置在网络上的木马并运行(安装)这个木马。网马就是在网页中植入木马,你打开网页就运行了木马程序,使你在不知不觉中中毒。网马

    详情2018-01-16 12:21:40责编:llp   来源:驱动管家     
  • 嗅探器是什么?嗅探时挂机怎么办?

    嗅探器是什么?嗅探时挂机怎么办?

    嗅探器可以窃听网络上流经的数据包。用集线器hub组建的网络是基于共享的原理的,局域网内所有的计算机都接收相同的数据包,而网卡构造了硬件的“过滤器“过识别MAC地址过滤掉和自己无关的信息,嗅探程序只需关闭

    详情2018-01-22 12:08:33责编:llp   来源:驱动管家     
  • u盘写保护怎么设置?通过注册表设置u盘写保护

    u盘写保护怎么设置?通过注册表设置u盘写保护

    有时候处于保护电脑文件安全的需要,我们需要设置U盘写保护,只让通过U盘复制文件到电脑,而禁止复制电脑文件到U盘,这种情况下通过U盘写保护就是一项比较简单的方法。如何设置U盘写保护、开启U盘写保护呢?通过

    详情2018-01-29 11:00:37责编:llp   来源:驱动管家     
  • pcanywhere教程 怎么得到pcanywhere的密码文件?

    pcanywhere教程 怎么得到pcanywhere的密码文件?

    由于NT的机器一般使用PCAnyWhere进行远程管理,Win2K的机器一般使用了终端进行远程管理,因此如果能够得到PCAnyWhere远程连接的帐号和密码,那么就能远程连接到主机。 问题的关键就是要得到PCAnyWhere的密码文件(*

    详情2018-01-29 14:09:08责编:llp   来源:驱动管家     
  • 什么是粘滞键漏洞?怎么利用粘滞键漏洞破解vista密码?

    什么是粘滞键漏洞?怎么利用粘滞键漏洞破解vista密码?

    安装XP Vista双系统的用户越来越多,不过总有些马大哈们会忘记Vista账户密码。由于Vista采用比XP更为严格的登录认证,如果遗忘登录密码,我们是很难进入系统的。不过,微软在登录界面有一个粘滞键漏洞,可以用它

    详情2018-02-03 20:38:57责编:llp   来源:驱动管家     
  • 短信验证码真的安全吗?短信验证码诈骗威胁着我们

    短信验证码真的安全吗?短信验证码诈骗威胁着我们

    现在想换个手机越来越麻烦,很多APP要重新下,手机里保存的宝贝也要转移,有时候这些事情甚至让我放弃了换个更好的手机的想发,更不用说换手机号了。各种网站、邮箱、账号的绑定要重新解绑,各种银行要跑去柜台重

    详情2018-01-18 11:25:43责编:llp   来源:驱动管家     
  • 电子邮件怎么加密?电子邮件有哪些加密方法?

    电子邮件怎么加密?电子邮件有哪些加密方法?

    针对电子邮件的犯罪案件越来越多,用户在享受电子邮件快捷便利的服务同时还要承受邮件泄密带来的后果,有些邮件泄密后果并不严重、有些却是灾难性的。为了提高邮件信息的安全性,目前有效的方法是进行邮件加密,

    详情2018-01-08 16:02:57责编:llp   来源:驱动管家     
  • 网络信息安全 各种系统常见的安全问题

    网络信息安全 各种系统常见的安全问题

    随着计算机的普及和网络技术的迅速发展,人们也越来越依赖于计算机和网络。因此,网络安全应该也必须引起注意。网络安全是一门涉及计算机、网络、通讯、密码、信息安全、应用数学、数论、信息论等多种学科的综合

    详情2018-01-15 14:43:51责编:llp   来源:驱动管家     
  • 电脑系统非法入侵的防范措施是什么?这七步设置可以防范非法入侵

    电脑系统非法入侵的防范措施是什么?这七步设置可以防范非法入侵

    本文通过七步设置介绍了针对Windows 2000和Windows XP操作系统如何防范非法用户入侵的“七招”。第一招:屏幕保护在Windows中启用了屏幕保护之后,只要我们离开计算机(或者不操作计算机)的时间达到预设的时间,

    详情2018-01-24 20:07:28责编:llp   来源:驱动管家     
  • dsa是什么?dsa算法应用哪些参数?

    dsa是什么?dsa算法应用哪些参数?

    DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却作不到

    详情2018-01-17 17:08:02责编:llp   来源:驱动管家