當前位置:首頁 » 數據倉庫 » php資料庫加密解密
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

php資料庫加密解密

發布時間: 2022-05-14 03:02:17

Ⅰ PHP腳本中的鏈接資料庫的用戶名跟密碼怎麼加密

不需要加密,也無法加密。可以這么說,如果資料庫和程序是在同一伺服器,及資料庫的地址是localhost,那麼無需加密,因為加密了資料庫並不能自己解密,而且只要網站或者伺服器不被攻下,沒有加密的必要。
資料庫和php程序在不同的伺服器,就是說你在操作資料庫的時候需要遠程操作,這樣的話需要傳輸資料庫賬號密碼,可以在本地加密後傳輸,然後在資料庫伺服器進行解密後,用原始的賬號密碼去操作資料庫。
--------------------------------------------------------一般來說,如果你擔心伺服器被攻下,那麼你加密資料庫賬號密碼是多餘的,因為人家下載你的源碼一看就知道鳥。

Ⅱ 如何對PHP文件進行加密

Zend Guard是目前市面上最成熟的PHP源碼加密產品。
經過本人搜集資料,親身測試後,總結了如何利用Zend Guard對PHP文件進行加密,以及如何利用Zend Loader對加密後的PHP文件進行解密。

我使用的是Wampserver2.2,其中php的版本是5.3.10。(注意:這個裡面自帶的php版本屬於TS版本,即Thread safety線程安全)

Zend Guard的安裝及破解

點擊下載 Zend Guard5.5.0,下載完成後,請自行傻瓜式安裝。

破解需要注意以下幾點:
1、本KEY的有效時間為2010年7月10號,因此激活時,請將自己電腦的系統時間調整到這個時間之前,如:2009-01-01
2、本KEY激活的為試用版,加密過的文件只有14天有效時間,因此在加密文件時,請將自己電腦的系統時間向後調整幾年,如:2020-01-01
3、點擊下載授權文件 zend_guard授權文件.zip,解壓得到zend_guard.zl,即激活用的文件
4、打開Zend Guard 5.5.0,[Help] -> [Register] -> [Search for a license file on my disk],選擇zend_guard.zl授權文件激活即可
如果還有不明白的,咱倆可以一起在後盾人看看視頻研究研究嘛希望能幫到你

Ⅲ php 加密解密

如果這前後四位數 都是估計的四位,那麼就可以實現用一個方法
把這個字元串穿進去,
然後截取,前面的四位和後面的四位,
然後加密好了,再重新拼接好返回即可。

Ⅳ php md5加密可以破解嗎

雖然md5是不可逆的加密方式,但是網上還是可以解密的,在線解密md5運用的是一次md5加密方式去解析的,解析的方式也是運用強大的數據內容一
一去對比的,找到匹配的就可以了。在程序中你可以多次用md5加密和字元串截取,或者追加字元串,比如密碼,傳來的值用同樣的方式加密和資料庫保存的密碼做對比就可以了,這樣安全性會很高,再強大的md5資料庫內容也找不到你設置的密碼

Ⅳ php代碼怎麼加密最好,不能破解的那種

在使用PHP開發Web應用的中,很多的應用都會要求用戶注冊,而注冊的時候就需要我們對用戶的信息進行處理了,最常見的莫過於就是郵箱和密碼了,本文意在討論對密碼的處理:也就是對密碼的加密處理。
MD5
相信很多PHP開發者在最先接觸PHP的時候,處理密碼的首選加密函數可能就是MD5了,我當時就是這樣的:
$password = md5($_POST["password"]);
上面這段代碼是不是很熟悉?然而MD5的加密方式目前在PHP的江湖中貌似不太受歡迎了,因為它的加密演算法實在是顯得有點簡單了,而且很多破解密碼的站點都存放了很多經過MD5加密的密碼字元串,所以這里我是非常不提倡還在單單使用MD5來加密用戶的密碼的。
SHA256 和 SHA512
其實跟前面的MD5同期的還有一個SHA1加密方式的,不過也是演算法比較簡單,所以這里就一筆帶過吧。而這里即將要說到的SHA256 和 SHA512都是來自於SHA2家族的加密函數,看名字可能你就猜的出來了,這兩個加密方式分別生成256和512比特長度的hash字串。
他們的使用方法如下:
<?php
$password = hash("sha256", $password);
PHP內置了hash()函數,你只需要將加密方式傳給hash()函數就好了。你可以直接指明sha256, sha512, md5, sha1等加密方式。
鹽值
在加密的過程,我們還有一個非常常見的小夥伴:鹽值。對,我們在加密的時候其實會給加密的字元串添加一個額外的字元串,以達到提高一定安全的目的:
<?php
function generateHashWithSalt($password) {$intermediateSalt = md5(uniqid(rand(), true));$salt = substr($intermediateSalt, 0, 6);
return hash("sha256", $password . $salt);}
Bcrypt
如果讓我來建議一種加密方式的話,Bcrypt可能是我給你推薦的最低要求了,因為我會強烈推薦你後面會說到的Hashing API,不過Bcrypt也不失為一種比較不錯的加密方式了。
<?php
function generateHash($password) {
if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {$salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22);return crypt($password, $salt);
}
}
Bcrypt 其實就是Blowfish和crypt()函數的結合,我們這里通過CRYPT_BLOWFISH判斷Blowfish是否可用,然後像上面一樣生成一個鹽值,不過這里需要注意的是,crypt()的鹽值必須以$2a$或者$2y$開頭,詳細資料可以參考下面的鏈接:
http://www.php.net/security/crypt_blowfish.php更多資料可以看這里:
http://php.net/manual/en/function.crypt.phpPassword Hashing API
這里才是我們的重頭戲,Password Hashing API是PHP 5.5之後才有的新特性,它主要是提供下面幾個函數供我們使用:
password_hash() – 對密碼加密.
password_verify() – 驗證已經加密的密碼,檢驗其hash字串是否一致.
password_needs_rehash() – 給密碼重新加密.
password_get_info() – 返回加密演算法的名稱和一些相關信息.
雖然說crypt()函數在使用上已足夠,但是password_hash()不僅可以使我們的代碼更加簡短,而且還在安全方面給了我們更好的保障,所以,現在PHP的官方都是推薦這種方式來加密用戶的密碼,很多流行的框架比如Laravel就是用的這種加密方式。
<?php
$hash = password_hash($passwod, PASSWORD_DEFAULT);對,就是這么簡單,一行代碼,All done。
PASSWORD_DEFAULT目前使用的就是Bcrypt,所以在上面我會說推薦這個,不過因為Password Hashing API做得更好了,我必須鄭重地想你推薦Password Hashing API。這里需要注意的是,如果你代碼使用的都是PASSWORD_DEFAULT加密方式,那麼在資料庫的表中,password欄位就得設置超過60個字元長度,你也可以使用PASSWORD_BCRYPT,這個時候,加密後字串總是60個字元長度。
這里使用password_hash()你完全可以不提供鹽值(salt)和 消耗值 (cost),你可以將後者理解為一種性能的消耗值,cost越大,加密演算法越復雜,消耗的內存也就越大。當然,如果你需要指定對應的鹽值和消耗值,你可以這樣寫:
<?php
$options = [
'salt' => custom_function_for_salt(), //write your own code to generate a suitable salt'cost' => 12 // the default cost is 10
];
$hash = password_hash($password, PASSWORD_DEFAULT, $options);密碼加密過後,我們需要對密碼進行驗證,以此來判斷用戶輸入的密碼是否正確:
<?php
if (password_verify($password, $hash)) {
// Pass
}
else {
// Invalid
}
很簡單的吧,直接使用password_verify就可以對我們之前加密過的字元串(存在資料庫中)進行驗證了。
然而,如果有時候我們需要更改我們的加密方式,如某一天我們突然想更換一下鹽值或者提高一下消耗值,我們這時候就要使用到password_needs_rehash()函數了:
<?php
if (password_needs_rehash($hash, PASSWORD_DEFAULT, ['cost' => 12])) {// cost change to 12
$hash = password_hash($password, PASSWORD_DEFAULT, ['cost' => 12]);// don't forget to store the new hash!
}
只有這樣,PHP的Password Hashing API才會知道我們重現更換了加密方式,這樣的主要目的就是為了後面的密碼驗證。
簡單地說一下password_get_info(),這個函數一般可以看到下面三個信息:
algo – 演算法實例
algoName – 演算法名字
options – 加密時候的可選參數
所以,現在就開始用PHP 5.5吧,別再糾結低版本了。
Happy Hacking

Ⅵ php 有哪些可解密的加密演算法

沒有,php的加密都是不可逆的

Ⅶ 各位用php將密碼存入資料庫,都用什麼方法進行加密的

php將密碼存入資料庫,可以分內常見的4種方式:
1、直接md5加密存到到資料庫
2、md5兩次存到資料庫
3、對需要加密的字元串和一個常量 進行混淆加密
4、生成一個隨機的變數存到資料庫中,然後對需要加密的字元串和這個隨機變數加密

<?php$str="admin"; //需要加密的字元串$str2="php"; //增加一個常量混淆 $pass1=md5($str);$pass2=md5(md5($str));$pass3=md5($str.$str2);echo $pass1."<br>".$pass2."<br>".$pass3;?>
輸出:

第四種

$str="admin"; //需要加密的字元串$encrypt=$row['encrypt']; // 生成的 隨機加密字元串 存到資料庫中$pass4=md5($str.$encrypt);//

Ⅷ 我從網上下來的php源碼,所有的php文件都被加密了,怎麼批量破解

目前php加密的方法主要有Zend加密,這個解密的話很簡單,網上很多教程。基本都是一鍵解密。因為zend本身就提供解密。
還有一個是ioncube加密,這個解密也不是很難,教程很多。基本也可以一鍵解密。
還有比較多的是,程序員自己對源碼進行加密,這個比較蛋疼,解密的話只能靠自己的經驗,沒有統一的解密方法。

你要先知道用的是那種加密,如果是Zend或者ioncube解密都很簡單,網上很多教程。

Ⅸ php代碼加密後,伺服器是如何解析的,怎樣解

看是怎麼加密的了,MD5是解不了的說能解的都是自己做的資料庫匹配。

下面這個是常用的加密解密方法

<?php
/**
*字元串加密、解密函數
*
*@paramstring$txt字元串
*@paramstring$operationENCODE為加密,DECODE為解密,可選參數,默認為ENCODE,
*@paramstring$key密鑰:數字、字母、下劃線
*@paramstring$expiry過期時間
*@returnstring
*/
functionsys_auth($string,$operation='ENCODE',$key='',$expiry=0){
$ckey_length=4;
$key=md5($key!=''?$key:C('COOKIE_AUTH_KEY'));
$keya=md5(substr($key,0,16));
$keyb=md5(substr($key,16,16));
$keyc=$ckey_length?($operation=='DECODE'?substr($string,0,$ckey_length):substr(md5(microtime()),-$ckey_length)):'';

$cryptkey=$keya.md5($keya.$keyc);
$key_length=strlen($cryptkey);

$string=$operation=='DECODE'?base64_decode(strtr(substr($string,$ckey_length),'-_','+/')):sprintf('%010d',$expiry?$expiry+time():0).substr(md5($string.$keyb),0,16).$string;
$string_length=strlen($string);

$result='';
$box=range(0,255);

$rndkey=array();
for($i=0;$i<=255;$i++){
$rndkey[$i]=ord($cryptkey[$i%$key_length]);
}

for($j=$i=0;$i<256;$i++){
$j=($j+$box[$i]+$rndkey[$i])%256;
$tmp=$box[$i];
$box[$i]=$box[$j];
$box[$j]=$tmp;
}

for($a=$j=$i=0;$i<$string_length;$i++){
$a=($a+1)%256;
$j=($j+$box[$a])%256;
$tmp=$box[$a];
$box[$a]=$box[$j];
$box[$j]=$tmp;
$result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));
}

if($operation=='DECODE'){
if((substr($result,0,10)==0||substr($result,0,10)-time()>0)&&substr($result,10,16)==substr(md5(substr($result,26).$keyb),0,16)){
returnsubstr($result,26);
}else{
return'';
}
}else{
return$keyc.rtrim(strtr(base64_encode($result),'+/','-_'),'=');
}
}
?>

Ⅹ php加密解密問題,一道10000+公司的phper,大公司的php面試題。

<?php
/**
*加密解密類
*該演算法僅支持加密數字。比較適用於資料庫中id欄位的加密解密,以及根據數字顯示url的加密。
*@author深秋的竹子
*@versionalpha
*@加密原則標記長度+補位+數字替換
*@加密步驟:
*將a-z,A-Z,0-962個字元打亂,取前M(數字最大的位數)位作為標記長度字元串,取第M+1到第M+10位為數字替換字元串,剩餘的為補位字元串
*1.計算數字長度n,取亂碼的第n位作為標記長度。
*2.計算補位的長度,加密串的長度N-1-n為補位的長度。根據指定的演算法得到補位字元串。
*3.根據數字替換字元串替換數字,得到數字加密字元串。
*標記長度字元+補位字元串+數字加密字元串=加密串
*Usage:
*$obj=newXDeode(9);
*$e_txt=$obj->encode(123);
*echo$e_txt.'<br/>';
*echo$key->decode($e_txt);
*/
classXDeode{
private$strbase="";
private$key,$length,$codelen,$codenums,$codeext;
function__construct($length=9,$key=2543.5415412812){
$this->key=$key;
$this->length=$length;
$this->codelen=substr($this->strbase,0,$this->length);
$this->codenums=substr($this->strbase,$this->length,10);
$this->codeext=substr($this->strbase,$this->length+10);
}

functionencode($nums){
$rtn="";
$numslen=strlen($nums);
//密文第一位標記數字的長度
$begin=substr($this->codelen,$numslen-1,1);
//密文的擴展位
$extlen=$this->length-$numslen-1;
$temp=str_replace('.','',$nums/$this->key);
$temp=substr($temp,-$extlen);
$arrextTemp=str_split($this->codeext);
$arrext=str_split($temp);
foreach($arrextas$v){
$rtn.=$arrextTemp[$v];
}
$arrnumsTemp=str_split($this->codenums);
$arrnums=str_split($nums);
foreach($arrnumsas$v){
$rtn.=$arrnumsTemp[$v];
}
return$begin.$rtn;
}

functiondecode($code){
$begin=substr($code,0,1);
$rtn='';
$len=strpos($this->codelen,$begin);
if($len!==false){
$len++;
$arrnums=str_split(substr($code,-$len));
foreach($arrnumsas$v){
$rtn.=strpos($this->codenums,$v);
}
}

return$rtn;
}
}

一個PHP針對數字的加密解密類

你可以參照這個來寫