php文件加密怎么办,如何利用Mcrypt扩展库进行加密和解密?
以下为引用的内容:
Blowfish RC2 Safer-sk64 xtea
Cast-256 RC4 Safer-sk128
DES RC4-iv Serpent
Enigma Rijndael-128 Threeway
Gost Rijndael-192 TripleDES
LOKI97 Rijndael-256 Twofish
PanamaSaferplus Wake
如何安装Mcrypt?
在标准的PHP软件包中不包括Mcrypt,因此需要下载它,下载的地址为:ftp://argeas.cs-net.gr/pub/unix/mcrypt/ 。下载后,按照下面的方法进行编译,并把它扩充在PHP中:
下载Mcrypt软件包。
以下为引用的内容:
gunzipmcrypt-x.x.x.tar.gz
tar -xvfmcrypt-x.x.x.tar
./configure --disable-posix-threads
make
make install
cd to your PHP directory.
./configure -with-mcrypt=[dir] [--other-configuration-directives]
make
make install
根据你的要求和PHP安装时与服务器作适当的修改。
如何使用Mcrypt扩展库对数据进行加密?
首先,我们将介绍如何使用Mcrypt扩展库对数据进行加密,然后再介绍如何使用它进行解密。下面的代码对这一过程进行了演示,首先是对数据进行加密,然后在浏览器上显示加密后的数据,并将加密后的数据还原为原来的字符串,将它显示在浏览器上。
使用Mcrypt对数据进行加、解密
以下为引用的内容:
// Designate string to be encrypted
$string = "Applied Cryptography, by Bruce Schneier, is
a wonderful cryptography reference.";
// Encryption/decryption key
$key = "Four score and twenty years ago";
// Encryption Algorithm
$cipher_alg = MCRYPT_RIJNDAEL_128;
// Create the initialization vector for added security.
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,
MCRYPT_MODE_ECB), MCRYPT_RAND);
// Output original string
print "Original string: $string
";
// Encrypt $string
$encrypted_string = mcrypt_encrypt($cipher_alg, $key,
$string, MCRYPT_MODE_CBC, $iv);
// Convert to hexadecimal and output to browser
print "Encrypted string: ".bin2hex($encrypted_string)."
";
$decrypted_string = mcrypt_decrypt($cipher_alg, $key,
$encrypted_string, MCRYPT_MODE_CBC, $iv);
print "Decrypted string: $decrypted_string";
?>
执行上面的脚本将会产生下面的输出:
以下为引用的内容:
Original string: Applied Cryptography, by Bruce Schneier, is a wonderful cryptography reference.
Encrypted string: 02a7c58b1ebd22a9523468694b091e60411cc4dea8652bb8072 34fa06bbfb20e71ecf525f29df58e28f3d9bf541f7ebcecf62b c89fde4d8e7ba1e6cc9ea24850478c11742f5cfa1d23fe22fe8 bfbab5e
Decrypted string: Applied Cryptography, by Bruce Schneier, is a wonderful cryptography reference.
上面的代码中两个最典型的函数是mcrypt_encrypt()和 mcrypt_decrypt(),它们的用途是显而易见的。我们使用了"电报密码本"模式,Mcrypt提供了几种加密方式,由于每种加密方式都有可以影响密码安全的特定字符,因此对每种模式都需要了解。对那些没有接触过密码系统的读者来说,可能对mcrypt_create_iv()函数更有兴趣,我们会提到它创建的初始化向量(hence, iv),这一向量可以使每条信息彼此独立。 尽管不是所有的模式都需要这一初始化变量,但如果在要求的模式中没有提供这一变量,PHP就会给出警告信息。
我的php代码中登陆界面加一个验证码?
php登陆页面+验证码的实现,参考如下: 1、首先新建一个php站点; 3、新建login.php文件; 用户名文本框昵称为name; 密码文本框为psw; 验证码为yzm; 表单的提交方式为post,提交到check.php。
sha1加密处理中文时在js和php中不一样怎么办?
前端对中文进行encodeURI,这样中文就会变成字符,英文和数字,再对其进行sha1加密,就可以和php的一致了,之后在后端用urldecode还原为中文就行了。前端和后端的URL编码函数是不同的需要注意。
php语言网站如何加强安全性?
PHP是一种非常流行之网站脚本语言,但是它本身所固有之安全性是非常薄弱。本文讲述了PHP增强计划(Hardened-PHP project)和新之Suhosi计划,Suhosin提供了增强之PHP之安全配置。
PHP是带有争论地但又是最流行之一种网站脚本语言。它之所以流行,是因为它低廉之价格,然而,这低廉之价格导致用PHP写之网站应用程序越来越多 之同时也越来越多之展现出PHP本身在安全上之脆弱,这种安全特性显示出PHP是极不可靠,不过同时对这个脚本语言本身而言它又是非常灵活之,使用它就能 很容易之实现代码,不过这些代码都是臃肿之且不安全之,虽然是这样它还是一直都拥有很多之使用者。你可以根据实际情况来假设,一次又一次,各种应用软件都 体现了这种脆弱性:容易受到SQL注入、跨站脚本、任意执行指令等等之攻击。
因为象safe_mode和open_basedir这样内置之PHP安全措施将被忽略,PHP增强计划创建之PHP更具有安全性,同时也对PHP 进行校验检查。最初,这些是由增强之PHP补丁完成之,这些补丁需要修补并重新编译PHP自身。最近,PHP增强计划发布了一个名为Suhosin之新工 程。
Sohosin包括有两部分:第一部分是PHP之补丁,这个补丁强化了Zend引擎自身,以免可能产生缓冲溢出,也可以防止相关之弱点。第二部分是 Suhosin之扩展,这是一个PHP之独立使用模块。这两部分可以一起工作,或者是扩展部分单独工作。
开发人员不希望为了达到安全性而总去维护他们自己之PHP安装设置和他们当然更喜欢直接使用销售商提供之Linux分布系统上PHP,使用扩展模块 能提供更多PHP本身所不能具有之安全特点。
扩展模块很容易安装;它也能通过PECL安装,或者是下载后通过编译安装:
$ tar xvzf suhosin-0.9.17
$ cd suhosin-0.9.17
$ phpize
$ ./configure
$ make
$ sudo make install
为了使用suhosin,还需要增加/etc/php.ini,如下所示:
extension=suhosin.so
对于大部分人来说默认之配置选项已经足够了。为了加强设置,可以在/etc/php.ini中增加相应之值。网站中详细地介绍了有关之各种配置选 项,这些说明可以帮助你进行初始化配置。
使用Suhosin,你可以得到一些错误日志,你能把这些日志放到系统日志中,也可以同时写到其他任意之日志文件中去;它还可以为每一个虚拟主机创 建黑名单和白名单;可以过滤GET和POST请求、文件上载和cookie。你还能传送加密之会话和cookie,可以设置不能传送之存储上线等等。它不 像原始之PHP强化补丁,Suhosin是可以被像Zend Optimizer这样之第三方扩展软件所兼容之。
下面是我写的一个操作方法:
wget -c http://soft.vpser.net/web/suhosin/suhosin-patch-5.2.10-0.9.7.patch.gz
gzip -d ./suhosin-patch-5.2.10-0.9.7.patch.gz
cd php-5.2.10
patch -p 1 -i ../suhosin-patch-5.2.10-0.9.7.patch
编译的时候
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-discard-path --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --with-mime-magic --enable-suhosin
把suhosin编译进去就好了
就是自己写不出来?
这是初级程序员生态的普遍现象,看懂却不知道如何下手,这是一种程序员的自我感觉良好的通病,赶紧悬崖勒马,掌握以下三点让你的敲代码和打字般潇洒。
第一点好记性不如烂笔头
代码也是需要仔细阅读和“品尝”才能尝到程序设计的味道,在阅读代码的同时得学会“粘贴复制”式的笔记方式进行记录和收藏,比如你正在学习一篇关于Python字符串处理的文章,过流水账式阅读记住的知识文章的标题,内容就是记忆碎片的回忆,这样根本无法下手。对于干货类知识点文章是需要去沉淀和消化,笔记就是最好的学习方式,因为百度搜索的结果和自己笔记搜索结果的影响力并不在一个层次上,自己笔记本上的知识才就是你下手敲代码前的准备。
第二点模仿是最有效的代码学习方式
代码是知识类干货,掌握它不仅仅要记笔记,还得模仿里面的方式方法应用到实际中。举个列子
Python字符串的拼接方式的干货文章分享网上几百篇幅以上,
大概有下几种方式:
加号拼接逗号拼接直接拼接格式化拼接join拼接等等但是字符串拼接用在什么地方?这个就是需要我们在实际的开发任务中去实践,模仿着干货的语法去尝试,比如拼接字符的时候加号方便还是格式化拼接的方式简洁,只有去尝试写才会明白那一句话,实践是检验真理的唯一标准。
第三点举一反三学会创新。
编程是在源代码的基础上不断创新的一个过程,别人分享的干货知识是他人对于编程理解开发出来的的一种设计思路,不仅仅学会模仿他人,开发一套属于自己的编程设计模式才是创新的精髓所在。
就像乌鸦喝水故事的比喻道理,有人为了喝瓶子里面水往里面丢石头,最终喝到了水,而有人把瓶子砸烂同样也喝到了水,最后也有人使用吸管照样喝到了水。举一反三的道理同样在编程中同样有着很好的效果,在web开发中页面跳转的方式多种多样就是一个很好的列子,有人在后端带参直接实现页面跳转,有人使用ajax实现回调页面跳转,而有人把前后端分开,js全部实现了页面跳转和传参。
总结能看懂代码又能敲键盘如打字一般行云流水,你得明白把阅读后的记笔记的方式“占为己有”,模仿编程的设计思路,创造一套属于自己的设计模式的程序,如果你阅读代码后还不知道怎么下手,那么还是早早放弃编程吧,因为编程的日子不仅辛苦而更加乏味。