php加密碼
前台加密
後台接收到後
在和鹽值拼接
在加密
存入資料庫
我用md5舉例
前台:md5(pwd);
//前台找一個js加密擴展就行
後台:
$salt
=
mt_rand(100000,999999);
//隨機鹽值
$pwd
=
md5($_GET('pwd').$salt);
//這樣雙重加密後入庫了
登錄驗證時
前台也記得加密哦
⑵ thinkphp 後台登陸密碼加密傳入密鑰
後台登陸密碼加密讓敏驗證設置:
相關函數核攜:
控制器方坦氏枝法:
⑶ PHP輸入密碼才能訪問這個頁面的代碼
給任意php頁面增加一個密碼保護,需要輸入正確密碼才能訪問。
代碼如下:
<?php
$adminkey = "123";/*設置密碼*/
session_start();
if(@$_POST['password'] == $adminkey){
$_SESSION['login'] = md5($adminkey);
}
if($_SERVER['QUERY_STRING'] == "logout"){
$_SESSION['login'] = "";
header("location: " . $_SERVER['PHP_SELF']);
exit();
}
$html_login = <<<EOF
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
div{text-align:center; margin:0 auto;}
#loginform{width:230px;height:100px;background-color:#ffffff;box-shadow: 2px 2px 10px 1px #403f3f;}
</style>
</head>
<body>
<div id="loginform">
<div style="text-align:center; margin:260px auto 0px;">
<form action="" method="post">密碼<input type="password" name="password" style="width:120px; margin-top: 35px;">
<input type="submit" value="登錄" style="margin-left: 5px;">
</form>
</div>
</div>
</body>
</html>
EOF;
if(@$_SESSION['login'] != md5($adminkey)){
exit($html_login);
}
?> 這里加上要顯示的內容文字或者代碼。
(3)php加密碼擴展閱讀:
PHP雙引號和單引號的區別
1、雙引號解釋變數,單引號不解釋變數
2、雙引號里插入單引號,其中單引號里如果有變數的話,變數解釋
3、雙引號的變數睜槐名後面必須要有一個非數字、字母、下劃線的特殊字元,或者用講變數括起來,否則會將變數名後面的部分當做一個整體,引起語法錯誤
4、雙引號解釋轉義字元,單引號不解釋轉義字元,但是解釋'和
5、能使單引號字元盡量使用單引號,單引滲純號的效率比雙引號要高(因為雙引號要先遍歷一遍,判斷裡面有沒有變數,然後再進行操作,而單引號悉喊友則不需要判斷)
⑷ PHP常用加密解密方法
作者/上善若水
1.md5(string $str,bool $flag = false);
$flag = false 默認返回32位的16進至數據散列值
$flag = true 返回原始流數據
2.sha1($string,$flag = false)
$flag = false 默認返回40位的16進至數據散列值
true 返回原始流數據
3.hash(string $algo,srting $str,bool $flag);
$algo : 演算法名稱,可通過hash_algos()函數獲取所有hash加密的演算法
如:md5,sha1等,採用md5,sha1加密所得結果和1,2兩種方式結 果相同。
$flag = false 默認返回16進至的數據散列值,具體長度根據演算法不同
而不同。
true 返回原始流數據。
4.crypt(string $str,$string $salt);
函數返回使用 DES、Blowfish 或 MD5 演算法加密的字元串。
具體演算法依賴於PHP檢查之後支持的演算法和$salt的格式和長度,當 然具體結果也和操作系統有關。比較結果採用 hash_equals($crypted,crypt($input,$salt));//且salt值相同
Password_verify($str,$crypted);
5.password_hash ( string $str, integer $algo [, array $options ] )
函數返回哈希加密後的密碼字元串, password_hash() 是crypt()的 一個簡單封裝
$algo : 演算法 PASSWORD_DEFAULT ,PASSWORD_BCRYPT
$options = [
「cost」=>10,//指明演算法遞歸的層數,
「salt」=>「xxadasdsad」//加密鹽值,即將被遺 棄,採用系統自動隨機生成安全性更高
];
使用的演算法、cost 和鹽值作為哈希的一部分返回
Password_verify($str,$hashed);
6.base64_encode(string $str)
設計此種編碼是為了使二進制數據可以通過非純 8-bit 的傳輸層 傳輸,例如電子郵件的主體。base64_decode(string $encoded)
可以進行解碼;
7.mcrypt_encrypt ( string $cipher , string $key , string $data ,
string $mode [, string $iv ] )
mcrypt_decrypt ( string $cipher , string $key , string $crypted ,
string $mode [, string $iv ] )
$ciper:加密演算法,mcrypt_list_algorithms()可以獲取該函數所有支持的演算法
如MCRYPT_DES(「des」),MCRYPT_RIJNDAEL_128(「rijndael-128」);
$mode : 加密模式 ,mcrypt_list_modes()獲取所有支持的加密模式,ecb,cbc
$key: 加密的秘鑰,mcrypt_get_key_size ( string $cipher , string $mode )
獲取指定的演算法和模式所需的密鑰長度。$key要滿足這個長度,如果長 度無效會報出警告。
$iv : 加密的初始向量,可通過mcrypt_create_iv ( int $size [, int $source = MCRYPT_DEV_URANDOM ] ),
Iv的參數size:
通過mcrypt_get_iv_size ( string $cipher , string $mode )獲取
Iv 的參數source:
初始向量數據來源。可選值有: MCRYPT_RAND (系統隨機數生成 器), MCRYPT_DEV_RANDOM (從 /dev/random 文件讀取數據) 和 MCRYPT_DEV_URANDOM (從 /dev/urandom 文件讀取數據)。 在 Windows 平台,PHP 5.3.0 之前的版本中,僅支持 MCRYPT_RAND。
請注意,在 PHP 5.6.0 之前的版本中, 此參數的默認值 為 MCRYPT_DEV_RANDOM。
Note: 需要注意的是,如果沒有更多可用的用來產生隨機數據的信息, 那麼 MCRYPT_DEV_RANDOM 可能進入阻塞狀態。
$data : 要加密的字元串數據
⑸ PHP如何對用戶密碼進行加密
PHP如何對用戶密碼進行加密
第一種方法:可以使用如下方法對用戶密碼進行加密:Mysql>SET 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擴展的加密
此類加密的代表有 威盾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');
}
當然,你可以把這個校驗字元串放在別的位置來提高破解的難度。有了這個,別人想破解你的程序可就得多費一點功夫了。。。
既然知道了原理,那解密自然也就非常簡單了,總體來說就三步:
把eval替換為輸出,比如echo 根據編碼規則把字元串還原 如果文件未解密完全,從第一步開始繼續
當然,實際上的解密過程並沒有這么簡單,比如說如果加密的時候使用了gzcompress,那得到的數據將會包含一些二進制數據,而採用一般的文本編輯器打開時這些數據都會顯示為亂碼,並且在保存時丟失部分數據。解決方法很簡單也很麻煩,那就是使用二進制(16進制)方式打開、修改和保存。
⑺ 如何對PHP文件進行加密
對PHP文件進行加密,通常使用 Zend Guard,這是目前市面上應用比較多的PHP源碼加密產品。
加密流程大概如下:
1、打開Zend Guard 5.5.0,[File]->[New]->[Zend Guard Project],新建項目。
2、點擊 Next ,下一步。彈出如下對話框,選擇要進行加密的源文件或文件夾。
3、接下來是選擇PHP的版本[與你web伺服器上PHP的版本相對照],這里很重要,版本不對會出錯,[Finish]完成項目的創建。
4、在Zend Guard左側的Guard Explorer中,可以看到你新建的項目了,滑鼠選中項目名稱後,右鍵單擊[Encode Project],完成。
⑻ 怎樣給HTML/PHP網頁增加密碼驗證
很簡單 密碼為123456 你可以在login.php裡面改
index.html 將以下代碼放入 <body></body>裡面就可以
<form method="post" action="login.php">
密碼: <input type="password" name="password"/><br>
<input type="submit" name="submit" value="登陸">
</form>
login.php 完整的login.php內容
<?php
$password = isset($_POST['password']) ? $_POST['password'] : '';
if($password == '123456'){
echo "<script>alert('登陸成功。');location.href='in.html';</script>";
//不需要提示 則把 alert('登陸成功。'); 刪除掉
}else{
echo "<script>alert('密碼錯誤 登陸失敗。。');location.href='error.html';</script>";
//不需要提示 則去掉 同上
}
?>
OK 了 簡單吧。
⑼ php下載了MySQL資料庫後怎麼設置賬號和密碼啊
php修改mysql資料庫中的用戶名和密碼方法如下:
方法一
1、使用phpmyadmin,這是最簡單的了,修改mysql庫的user表,
2、不過別忘了使用PASSWORD函數。
方法二
1、使用mysqladmin,這是前面聲明的一個特例。
2、mysqladmin -u root -p password mypasswd ,輸入這個命令後,需要輸入root的原密碼,然後root的密碼將改為mypasswd。
3、把命令里的root改為你的用戶名,你就可以改你自己的密碼了。
4、當然如果你的mysqladmin連接不上mysql server,或者你沒有辦法執行mysqladmin, 那麼這種方法就是無效的。 而且mysqladmin無法把密碼清空。
5、下面的方法都在mysql提示符下使用,且必須有mysql的root許可權:
方法三
1、mysql> INSERT INTO mysql.user (Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES
2、確切地說這是在增加一個用戶,用戶名為jeffrey,密碼為biscuit。
3、在《mysql中文參考手冊》里有這個例子,所以我也就寫出來了。
4、注意要使用PASSWORD函數,然後還要使用FLUSH PRIVILEGES。
方法四
和方法三一樣,只是使用了REPLACE語句
mysql> REPLACE INTO mysql.user (Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES
方法五
1、使用SET PASSWORD語句,
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');
2、也必須使用PASSWORD()函數,
3、但是不需要使用FLUSH PRIVILEGES。
方法六
1、使用GRANT ... IDENTIFIED BY語句
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';
2、這里PASSWORD()函數是不必要的,也不需要使用FLUSH PRIVILEGES。
注意: PASSWORD() [不是]以在Unix口令加密的同樣方法施行口令加密。