
正文
php连接数据库怎么加密 php连接数据库怎么加密的
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
php源码怎么加密
一、无需任何PHP扩展的加密
此类加密的代表有 威盾PHP加密专家、PHP在线加密平台、PHP神盾 等。
此类加密都是以eval函数为核心,辅以各式各样的字符串混淆和各种小技巧,来达到加密目的(更准确的说,应该算是混淆)。下面以一个简单的hello world为例来说明此类加密的大体过程。
?php
echo "hello world";
首先 ,我们把这段代码变为通过eval执行的
?php
eval('echo "hello world";');
然后 ,我们再进行一些转换,比如说base64编码
?php
eval(base64_decode('ZWNobyAiaGVsbG8gd29ybGQiOw=='));
就这样子,我们的第一个加密过的php代码新鲜出炉了。。。
上面这个例子非常非常简单,基本上任何有一点php语言基础甚至别的语言基础的人都能轻松的看懂并解密。因此,我们需要一些方法让这个加密至少看上去不是那么简单。
二、同时采用多种编码函数
除了刚才提到的base64,php还有许多内置的编码函数,例如urlencode、gzcompress等。把这些函数混合使用可以提高解密的复杂度(不是难度),此外还可以使用strtr来制定自己的编码规则。 使用变量来代替函数名 使用特定字符来命名变量
这儿所说的特定字符是一些极其相似的字符,如I和1,0和O。试想一下满屏都是O和0组成的变量,并且每一个的名字长度都在10个字符以上。。。 判断文件自身是否被修改
这个功能看似容易,对文件做一下摘要再进行下对比即可知道是否被修改了,但是如何才能在文件内把摘要嵌入进去呢?我没有找到完美的方案,但一个变通的方案还是很容易的。。。
?php
$code = substr(file_get_contents(__FILE__), 0, -32);
$hash = substr(file_get_contents(__FILE__), -32);
if (md5($code) !== $hash) {
exit('file edited');
}
ACBC41F727E00F85BEB3440D751BB4E3
当然,你可以把这个校验字符串放在别的位置来提高破解的难度。有了这个,别人想破解你的程序可就得多费一点功夫了。。。
既然知道了原理,那解密自然也就非常简单了,总体来说就三步:
把eval替换为输出,比如echo 根据编码规则把字符串还原 如果文件未解密完全,从第一步开始继续
当然,实际上的解密过程并没有这么简单,比如说如果加密的时候使用了gzcompress,那得到的数据将会包含一些二进制数据,而采用一般的文本编辑器打开时这些数据都会显示为乱码,并且在保存时丢失部分数据。解决方法很简单也很麻烦,那就是使用二进制(16进制)方式打开、修改和保存。
相关问答
Q1: 用php将密码存入数据库,用什么方法进行加密?
题主你可以使用 md5 或者 sha1 进行初步处理php连接数据库怎么加密,但为了更加安全,请你同时加上两个 salt,一个静态 salt,一个动态的 salt。以 md5 为例php连接数据库怎么加密:\x0d\x0a假设通过 POST 传来的密码为 $_POST['password'],在存入 DB 前先进行如下的操作php连接数据库怎么加密:\x0d\x0a$password = hash('md5', $_POST['password'].$staticSalt.$dynamicSalt);\x0d\x0a\x0d\x0a为了保证动态 salt 的唯一性,可以这样操作:\x0d\x0a$dynamicSalt = hash('md5', microtime());\x0d\x0a\x0d\x0a对于动态的 salt 可以与生成的密码一起保存在 DB 中,而静态 salt 则可以直接放在类文件中(例如定义为一个静态属性即可)。\x0d\x0a首先谢谢题主采纳了我的答案,但是我之前的回答并不是最佳答案,之所以有此加密的想法源于自己所读的源码可能比较老,所以并没使用上较新版本的加密方法,例如 bcrypt等。\x0d\x0a此外,第二点,感谢评论中几位前辈的提点,已经明白设置静态 salt 的意义并不大,生成一个较长的动态 salt 已然可以解决问题。\x0d\x0a\x0d\x0aLZ应该采用加盐HASH。\x0d\x0a如何“腌制”密码呢php连接数据库怎么加密?\x0d\x0a=_,=\x0d\x0a正确的格式应该是,用户password+动态的salt\x0d\x0a动态的salt不能像2L所说的,使用microtime,因为时间在某些情况下不够随机,而且是可能被猜解的。\x0d\x0a这里推荐一个我用的加盐HASH\x0d\x0a$salt=base64_encode(mcrypt_create_iv(32,MCRYPT_DEV_RANDOM));\x0d\x0a$password=sha1($register_password.$salt);\x0d\x0a\x0d\x0a解释:\x0d\x0a首先使用mcrypt,产生电脑随机生成的,专门用户加密的随机数函数。\x0d\x0a第二步,把得到的随机数通过base64加密,使其变长并且不利于猜解。\x0d\x0a第三步,把得出的盐拼接到密码的后面,再对其使用sha1进行哈希\x0d\x0a再把password存入到用户的数据库。\x0d\x0aPS:为何不用静态的salt?没有必要,使用一个动态随机足够长的盐足矣。\x0d\x0a为何不用MD5?因为长度不够。\x0d\x0a为何没有使用多次HASH?因为这样反而容易发生碰撞。\x0d\x0aHASH好之后怎么使用“腌制”好的密码?\x0d\x0a用户注册-提交密码-产生salt-腌制好的密码存入数据库-salt存入数据库。\x0d\x0a用户登录-提交密码-调用salt接到提交密码的后面-进行HASH-调用之前注册腌制好的密码-对比HASH值是否和这个密码相同
Q2: PHP脚本中的链接数据库的用户名跟密码怎么加密?
不需要加密,也无法加密。可以这么说,如果数据库和程序是在同一服务器,及数据库的地址是localhost,那么无需加密,因为加密了数据库并不能自己解密,而且只要网站或者服务器不被攻下,没有加密的必要。
数据库和php程序在不同的服务器,就是说你在操作数据库的时候需要远程操作,这样的话需要传输数据库账号密码,可以在本地加密后传输,然后在数据库服务器进行解密后,用原始的账号密码去操作数据库。
--------------------------------------------------------一般来说,如果你担心服务器被攻下,那么你加密数据库账号密码是多余的,因为人家下载你的源码一看就知道鸟。
Q3: PHP如何对用户密码进行加密
PHP如何对用户密码进行加密
第一种方法:可以使用如下方法对用户密码进行加密:MySqlSET user@”localhost” PASSWORD=PASSWORD(”Password”);
第二种方法:可以使用MYSQL的 PASSWORD函数进行用户密码的加密。例如:Insert into user(password, ……..) values (PASSWORD(”$password”,………));
可以在一个PHP文件里面include另外一个PHP文件两次吗
是的,可以在一个PHP文件里面include另外一个PHP文件两次,被include的那个php文件也会执行两次,所以如果在这个文件里面定义的有一个class, 就会报出the class already defined的错误。
mysql的最长数据库名,表名,字段名可以是多长
数据库名字最长为64
数据表名字最长为64
字段名字最长为64
mysql_pconnect()和mysql_connect()有什么区别
两者的区别主要有两个:
1. 在进行数据库连接时,函数会先找同一个host, 用户和密码的persistent(持续的)的'链接,如果能找到,则使用这个链接而不返回一个新的链接。
2. mysql_pconnect()创建的数据库连接在脚本执行完毕后仍然保留,可以被后来的代码继续使用,mysql_close()函数也不会关闭mysql_pconnect()创建的链接。
;
关于php连接数据库怎么加密和php连接数据库怎么加密的的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







