當前位置:首頁 » 編程語言 » php字元加密解密

php字元加密解密

發布時間: 2023-04-27 18:56:44

1. 請教php源碼加密及解密問題

用dw編輯器自帶的加密工具,或者自己寫js加密解密腳本

2. 分享一個php加密方法,這個方法還比較實用

我們在開發過程中,有的時候GET傳值,字元串太長,我們可以用這個方法,在傳值之前先調用函數lock_url(加密字元串),加密以後在傳遞,GET接受以後用函數unlock_url(待解密字元串)進行解密。

如果大家有更好更簡單的方法,發評論區我們一起討論學習!

function lock_url($txt)

{

$key = ']!L]<_w{O}zEIs!.f(T[|ZGQaxS":?#`v%EburotLZi"KdKs@QivlJ[PjWw`.wcT' //key

$chars = "-=+";

$nh = rand(0,64);

$ch = $chars[$nh];

$mdKey = md5($key.$ch);

$mdKey = substr($mdKey,$nh%8, $nh%8+7);

$txt = base64_encode($txt);

$tmp = ''

$i=0;$j=0;$k = 0;

for ($i=0; $i<strlen($txt); p="" {

$k = $k == strlen($mdKey) ? 0 : $k;

$j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64;

$tmp .= $chars[$j];

}

return urlencode($ch.$tmp);

}

//解密函數

function unlock_url($txt)

{

$key = ']!L]<_w{O}zEIs!.f(T[|ZGQaxS":?#`v%EburotLZi"KdKs@QivlJ[PjWw`.wcT'//key

$txt = urldecode($txt);

$chars = "-=+";

$ch = $txt[0];

$nh = strpos($chars,$ch);

$mdKey = md5($key.$ch);

$mdKey = substr($mdKey,$nh%8, $nh%8+7);

$txt = substr($txt,1);

$tmp = ''

$i=0;$j=0; $k = 0;

for ($i=0; $i<strlen($txt); p="" {

$k = $k == strlen($mdKey) ? 0 : $k;

$j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]);

while ($j<0) $j+=64;

$tmp .= $chars[$j];

}

return base64_decode($tmp);

}

3. 在php5中md5在加密字元串後如何解密

MD5加密是不能逆運算的,現在的破解大都是窮盡法,就是有一個龐大的MD5碼對照表放在那裡,然後一個一個去對照著查。

4. php 加密解密

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

5. PHP文件如何解密

所謂的PHP文件加密,一般有兩種方式,一是ZEND編譯,二是BASE64等編碼,理論上都不是加密,下面分別說說如何還原。

對於ZEND編譯過的代碼,用記事本打開是完全是亂碼,除了前面的很小的頭部,後面不是可見ASCII字元,有點像打開一個EXE文件的效果,是無法閱讀的。這類處理的文件一般認為是無法還原的,網上有DEZEND工具,你可以下載來試試看,能還原早期ZEND版本編譯後的代碼。

對於使用BASE64等編碼後的PHP文件,可以用記事本打開查看,所有字元都是可見ASCII字元,一般使用兩種方法加大閱讀難度:一是使用$ll111、$ooo000這樣的變數,字母L的小寫與1混在一起、字母O的小寫與數字0混在一起,不容易分辨變數名稱。二是使用BASE64編碼對原始代碼進行轉換,最後使用eval進行處理。往往兩種方式結合在一起。

第二種方式處理後的代碼是很容易還原的,方法就是把eval換為exit,在CLI(命令提示符)下執行就會顯示出eval那個語句對應的等效代碼,替換原始語句即可。有時候還原一次後還是eval語句,那需要按照同樣的方法反復處理。

6. 其他語言如何解密PHP多字元串的異或加密

利用「^」異或運算對字元串進行加密

思路:1.先創建字元串輸入的Scanner;

2.通過char[] array = password.toCharArray();// 獲取字元數組;

3.遍歷字元數組,按目前理解要用到遍歷:數組所有元素進行訪問,比如你要輸出數組里所有的信息時,就要用到

4.進行異或運算

按位做「異或」運算是:位值相同得1,不同得0

例如:

< 加密過程:>

原解釋的二進制為 1 1 0 0 ----原文

設定的key的二進制為 0 1 1 0 ----密匙

兩者做「異或」結果為 0 1 0 1 ----密文

< 解密過程:>

0 1 0 1----密文

0 1 1 0----密匙

兩者「異或」就得到了原文 1 1 0 0 ----原文

詳細代碼:

package com.lixiyu;

import java.util.Scanner;

public class Example {

public static void main(String[] args){

Scanner sca=new Scanner(System.in);

System.out.println("請輸入一個英文字元串或解密字元串");

String line=sca.nextLine();//獲取用戶輸入信息

char[] array=line.toCharArray();//獲取字元數組

for (int i=0;i<array.length;i++){//歷遍字元數組

array[i]=(char) (array[i]^20000);//對數組每個元素進行異或運算

}

System.out.println("加密解密結果如下:");

System.out.println(new String(array));//輸出密鑰

}

}

異或運算:

1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0

字元'A' 的ASCII編碼為65 : 00000000 01000001

取整數7 : 00000000 00000000 00000000 00000111

XOR運算後 : 00000000 00000000 00000000 01000110

簡單加密演算法代碼如下 :

public class Test {
public static final int KEY = 7;
public static void main(String[] args) {
String str = "Hello World!";
StringBuffer str2 = new StringBuffer(); //存儲加密後的字元串
StringBuffer str3 = new StringBuffer(); //存儲解密後的字元串
//加密過程
for(int i=0;i<str.length();i++)
{
char c = (char)(str.charAt(i) ^ KEY);
str2.append(c);
}
//解密過程
for(int i=0;i<str2.length();i++)
{
char c = (char)(str2.charAt(i) ^ KEY);
str3.append(c);
}
System.out.println("原始 的字元串為:" + str);
System.out.println("加密後 的字元串為:" + str2);
System.out.println("解密後 的字元串為:" + str3);
}
}

輸出:

原始 的字元串為:Hello World!

加密後 的字元串為:Obkkh'Phukc&

解密後 的字元串為:Hello World!

7. php SHA256WithRSA簽名驗簽&加密解密

使用:

$pri_key ="";

$pub_key = "";

$char = '方方塊兒';//要加密的字元

$sign = $this->RsaEncrypt($char,$pri_key);//加密結果

$result = $this->RsaDecrypt($sign,$pub_key);//對加密結果進行解密

加密:

public function RsaEncrypt($str,$pri_key){

        $pi_key =openssl_pkey_get_private($pri_key);

        if(!$pi_key)return false;//秘鑰不可用

       openssl_private_encrypt($str,$encrypted,$pi_key);

       $encrypted =base64_encode($encrypted);

       return $encrypted;

}

解密:
public function RsaDecrypt($str,$pub_key){

        $pu_key =openssl_pkey_get_public($pub_key);

        if(!$pu_key)return false;//秘鑰不可用

        openssl_public_decrypt(base64_decode($str),$decrypted,$pu_key);

        return $decrypted;

}

註:開啟PHP的php_openssl擴展

8. PHP解密Unicode及Escape加密字元串

在json中不支持中文,用它傳送中文數據就會出現數據丟失或者亂碼,必須在傳送前對要發送的字元串進行編碼,由於傳送過去需要用js進行數據解析,考慮
到js中有unescape函數,故若在php中有個escape函數,對數據進行編碼,在客戶端用unescape進行
解碼,這樣就會方便很多。
本文給大家分享一個PHP解密Unicode及Escape加密字元串函數
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
?php
function
uni_decode($s)
{
preg_match_all('/#([0-9]{2,5});/',
$s,
$html_uni);
preg_match_all('/[%]u([0-9a-f]{4})/ie',
$s,
$js_uni);
$source
=
array_merge($html_uni[0],
$js_uni[0]);
$js
=
array();
for($i=0;$icount($js_uni[1]);$i++)
{
$js[]
=
hexdec($js_uni[1][$i]);
}
$utf8
=
array_merge($html_uni[1],
$js);
$code
=
$s;
for($j=0;$jcount($utf8);$j++)
{
$code
=
str_replace($source[$j],
unicode2utf8($utf8[$j]),
$code);
}
return
$code;//$s;//preg_replace('/u([0-9a-f]{4})/ie',
chr(hexdec('1')),
$s);
}
function
unicode2utf8($c)
{
$str=;
if
($c
0x80)
{
$str.=chr($c);
}
else
if
($c
0x800)
{
$str.=chr(0xc0
|
$c6);
$str.=chr(0x80
|
$c
0x3f);
}
else
if
($c
0x10000)
{
$str.=chr(0xe0
|
$c12);
$str.=chr(0x80
|
$c6
0x3f);
$str.=chr(0x80
|
$c
0x3f);
}
else
if
($c
0x200000)
{
$str.=chr(0xf0
|
$c18);
$str.=chr(0x80
|
$c12
0x3f);
$str.=chr(0x80
|
$c6
0x3f);
$str.=chr(0x80
|
$c
0x3f);
}
return
$str;
}
$str='%u5927%u5BB6%u597D%uFF0C我是孤魂!br
/';
echo
uni_decode($str);
//
大家好,我是孤魂!這是測試文本!
在網上搜索一把,很多用php實現的escape函數,大同小異
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function
phpescape($str){
preg_match_all(/[x80-xff].|[x01-x7f]+/,$str,$newstr);
$ar
=
$newstr[0];
foreach($ar
as
$k=$v){
if(ord($ar[$k])=127){
$tmpString=bin2hex(iconv(GBK,ucs-2,$v));
if
(!eregi(WIN,PHP_OS)){
$tmpString
=
substr($tmpString,2,2).substr($tmpString,0,2);
}
$reString.=%u.$tmpString;
}
else
{
$reString.=
rawurlencode($v);
}
}
return
$reString;
}
以上所述就是本文的全部內容了,希望大家能夠喜歡。

9. 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 : 要加密的字元串數據

10. php源代碼被加密了,請問如何解密

php源碼被使用zend加密,現階段還沒用解密方法。但是好像現在有這樣的一個studio,他們成功地完成了zend和eac的decode
不過是收費的

熱點內容
萬科海上傳奇二期 發布:2024-11-01 14:22:52 瀏覽:59
u盤文件夾是空的 發布:2024-11-01 14:19:57 瀏覽:402
python包含字元串 發布:2024-11-01 14:19:17 瀏覽:479
c語言的精華 發布:2024-11-01 14:19:02 瀏覽:588
steam截圖文件夾 發布:2024-11-01 14:18:59 瀏覽:613
ipad怎麼往安卓傳照片 發布:2024-11-01 14:18:19 瀏覽:508
我的電腦沒有文件夾選項 發布:2024-11-01 14:13:55 瀏覽:546
vb創建資料庫表 發布:2024-11-01 14:11:55 瀏覽:872
sql聯合表 發布:2024-11-01 14:03:25 瀏覽:962
linux編程gcc 發布:2024-11-01 14:02:41 瀏覽:705