不能,thinkphp只是一個php框架,php源碼的加密可以看看這個:Zend Guard
Ⅱ ThinkPHP Rsa加密類怎麼用
<?php
namespace libs;
class Rsa{
private static $PRIVATE_KEY;
private static $PUBLIC_KEY;
function __construct($pubKey = '', $privKey = '') {
self::$PUBLIC_KEY = $pubKey;
self::$PRIVATE_KEY = $privKey;
}
public static function urlsafeB64Decode($input)
{
$remainder = strlen($input) % 4;
if ($remainder) {
$padlen = 4 - $remainder;
$input .= str_repeat('=', $padlen);
}
return base64_decode(strtr($input, '-_', '+/'));
}
public static function urlsafeB64Encode($input)
{
return str_replace('=', '', strtr(base64_encode($input), '+/', '-_'));
}
private static function getPrivateKey(){
$privKey = self::$PRIVATE_KEY;
return openssl_pkey_get_private($privKey);
}
private static function getPublicKey(){
$pubKey = self::$PUBLIC_KEY;
return openssl_pkey_get_public($pubKey);
}
public static function privEncrypt($data)
{
if(!is_string($data)){
return null;
}
return openssl_private_encrypt($data,$encrypted,self::getPrivateKey())? self::urlsafeB64Encode($encrypted) : null;
}
public static function privDecrypt($encrypted)
{
if(!is_string($encrypted)){
return null;
}
return (openssl_private_decrypt(self::urlsafeB64Decode($encrypted), $decrypted, self::getPrivateKey()))? $decrypted : null;
}
public static function pubEncrypt($data)
{
if(!is_string($data)){
return null;
}
return openssl_public_encrypt($data,$encrypted,self::getPublicKey())? self::urlsafeB64Encode($encrypted) : null;
}
public static function pubDecrypt($encrypted)
{
if(!is_string($encrypted)){
return null;
}
return (openssl_public_decrypt(self::urlsafeB64Decode($encrypted), $decrypted, self::getPublicKey()))? $decrypted : null;
}
}
?>
Ⅲ thinkphp資料庫配置信息加密怎麼處理
今天有一個朋友問我thinkphp的這個問題,剛好網路搜索到你這個問題。已經解決。就幫你解答一下這個問題。
首先我嘗試在入口文件封裝一個加密函數,我用php des 加密,然後在配置文件config.php調用。然後在控制器裡面使用,列印配置文件:mp(C());//輸出所有的配置文件信息, 雖然能看到正確的數據用戶名和密碼,但是會報錯。失敗告終。
我說一下我的解決方法。很簡單。
1:把配置文件裡面的用戶名,密碼,資料庫名瞎寫一寫,別人看到你的代碼的配置文件看到的就是錯誤的資料庫名和密碼了。比如:
'DB_NAME' => 'SB', // 資料庫名
'DB_USER' => 'ni_da_ye', // 用戶名
'DB_PWD' => 'da_da_bi', // 密碼
在每個控制器文件裡面。加入一段代碼。
比如你的IndexController.class.php文件。加下面的代碼。
/* 初始化方法*/
public function __construct(){
parent::__construct();
C("DB_NAME",decrypt('712349721937491237'));//資料庫名,
C('DB_USER',decrypt('712349721937491237'));//用戶名
C('DB_PWD',decrypt('712349721937491237'));//密碼
}
看清楚了嗎?
decrypt()這個函數就是我封裝的一個加密函數,親自測試沒有錯誤。可能會犧牲一些性能。但是保證了用戶名,密碼,資料庫名沒有泄露。甚至你都可以把資料庫連接地址也加密一下。希望能幫到你。
PHP加密函數可以考慮用des,aes這些可逆加密。別用什麼md4,md5.
Ⅳ thinkphp這個邏輯是如何執行加密了 是先執行md5($data['password'],然後在執行$data['password']=md5(..)
如果提交的數據里,password不為空,
對password進行md5加密: md5($data['password']);
加密後的字元串再賦值給password。
Ⅳ thinkphp MD5加密問題
AUTH_CODE這個參數是自定義的,每個網站的參數都不一樣,有些網站為了安全,這個值還是隨機數,這樣的話,就打打加強了開源程序的安全性。encrypt這個函數在這里就是讀取配置文件中的隨機數和MD5加密之後的文件再做個二次加密,所以就很安全咯
是否可以解決您的問題?
Ⅵ thinkphp怎麼加密url參數
/**
*系統加密方法
*@paramstring$data要加密的字元串
*@paramstring$key加密鑰
*@paramint$expire過期時間單位秒
*returnstring
*@author麥當苗兒<[email protected]>
*/
functionthink_encrypt($data,$key='',$expire=0){
$key=md5(empty($key)?C('DATA_AUTH_KEY'):$key);
$data=base64_encode($data);
$x=0;
$len=strlen($data);
$l=strlen($key);
$char='';
for($i=0;$i<$len;$i++){
if($x==$l)$x=0;
$char.=substr($key,$x,1);
$x++;
}
$str=sprintf('%010d',$expire?$expire+time():0);
for($i=0;$i<$len;$i++){
$str.=chr(ord(substr($data,$i,1))+(ord(substr($char,$i,1)))%256);
}
returnstr_replace(array('+','/','='),array('-','_',''),base64_encode($str));
}
/**
*系統解方法
*@paramstring$data要解的字元串(必須是think_encrypt方法加密的字元串)
*@paramstring$key加密密鑰
*returnstring
*@author當苗兒<[email protected]>
*/
functionthink_decrypt($data,$key=''){
$key=md5(empty($key)?C('DATA_AUTH_KEY'):$key);
$data=str_replace(array('-','_'),array('+','/'),$data);
$mod4=strlen($data)%4;
if($mod4){
$data.=substr('====',$mod4);
}
$data=base64_decode($data);
$expire=substr($data,0,10);
$data=substr($data,10);
if($expire>0&&$expire<time()){
return'';
}
$x=0;
$len=strlen($data);
$l=strlen($key);
$char=$str='';
for($i=0;$i<$len;$i++){
if($x==$l)$x=0;
$char.=substr($key,$x,1);
$x++;
}
for($i=0;$i<$len;$i++){
if(ord(substr($data,$i,1))<ord(substr($char,$i,1))){
$str.=chr((ord(substr($data,$i,1))+256)-ord(substr($char,$i,1)));
}else{
$str.=chr(ord(substr($data,$i,1))-ord(substr($char,$i,1)));
}
}
returnbase64_decode($str);
}
Ⅶ 關於thinkphp的md5加密
對的,完全正確
Ⅷ thinkphp 怎麼生成秘鑰
使用PHP開發應用程序,尤其是網站程序,常常需要生成隨機密碼,如用戶注冊生成隨機密碼,用戶重置密碼也需要生成一個隨機的密碼。隨機密碼也就是一串固定長度的字元串,這里我收集整理了幾種生成隨機字元串的方法,以供大家參考。
方法一:
1、在 33 – 126 中生成一個隨機整數,如 35,
2、將 35 轉換成對應的ASCII碼字元,如 35 對應 #
3、重復以上 1、2 步驟 n 次,連接成 n 位的密碼
該演算法主要用到了兩個函數,mt_rand ( int $min , int $max )函數用於生成隨機整數,其中 $min – $max 為 ASCII 碼的范圍,這里取 33 -126 ,可以根據需要調整范圍,如ASCII碼表中 97 – 122 位對應 a – z 的英文字母,具體可參考 ASCII碼表; chr ( int $ascii )函數用於將對應整數 $ascii 轉換成對應的字元。
function create_password($pw_length = 8)
{
$randpwd = '';
for ($i = 0; $i < $pw_length; $i++)
{
$randpwd .= chr(mt_rand(33, 126));
}
return $randpwd;
}
// 調用該函數,傳遞長度參數$pw_length = 6
echo create_password(6);
復制代碼
方法二:
1、預置一個的字元串 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字元
2、在 $chars 字元串中隨機取一個字元
3、重復第二步 n 次,可得長度為 n 的密碼
function generate_password( $length = 8 ) {
// 密碼字元集,可任意添加你需要的字元
$chars = '!@#$%^&*()-_ []{}<>~`+=,.;:/?|';
$password = '';
for ( $i = 0; $i < $length; $i++ )
{
// 這里提供兩種字元獲取方式
// 第一種是使用 substr 截取$chars中的任意一位字元;
// 第二種是取字元數組 $chars 的任意元素
// $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
$password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
}
return $password;
}
復制代碼
方法三:
1、預置一個的字元數組 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字元
2、通過array_rand()從數組 $chars 中隨機選出 $length 個元素
3、根據已獲取的鍵名數組 $keys,從數組 $chars 取出字元拼接字元串。該方法的缺點是相同的字元不會重復取。
function make_password( $length = 8 )
{
// 密碼字元集,可任意添加你需要的字元
$chars = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i', 'j', 'k', 'l','m', 'n', 'o', 'p', 'q', 'r', 's',
't', 'u', 'v', 'w', 'x', 'y','z', 'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L','M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!',
'@','#', '$', '%', '^', '&', '*', '(', ')', '-', '_',
'[', ']', '{', '}', '<', '>', '~', '`', '+', '=', ',',
'.', ';', ':', '/', '?', '|');
// 在 $chars 中隨機取 $length 個數組元素鍵名
$keys = array_rand($chars, $length);
$password = '';
for($i = 0; $i < $length; $i++)
{
// 將 $length 個數組元素連接成字元串
$password .= $chars[$keys[$i]];
}
return $password;
}
復制代碼
方法四
1、time() 獲取當前的 Unix 時間戳
2、將第一步獲取的時間戳進行 md5() 加密
3、將第二步加密的結果,截取 n 位即得想要的密碼
function get_password( $length = 8 )
{
$str = substr(md5(time()), 0, 6);
return $str;
}
復制代碼
時間效率對比
我們使用以下PHP代碼,計算上面的 4 個隨機密碼生成函數生成 6 位密碼的運行時間,進而對他們的時間效率進行一個簡單的對比。
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
// 記錄開始時間
$time_start = getmicrotime();
// 這里放要執行的PHP代碼,如:
// echo create_password(6);
// 記錄結束時間
$time_end = getmicrotime();
$time = $time_end - $time_start;
// 輸出運行總時間
echo "執行時間 $time seconds";
Ⅸ thinkphp中如何對url地址進行加密
看你自己需要,是做成短鏈接還是單純的加密,有可逆和不可逆兩種。urlencode,urldecode參考下
Ⅹ thinkphp 密碼是怎麼加密的
md5 需要加密的時候只需要md5('需要加密的字元串')