導航:首頁 > 編程語言 > php字元串hash

php字元串hash

發布時間:2023-05-13 03:06:54

php 登錄注冊用哈希加密怎麼做

//加密

$hash_password = hash_password($password, PASSWORD_DEFAULT);

//驗證

if (password_verify($password, $hash_password)) {

//密碼正確

} else {

//密碼錯誤

}

㈡ 求教PHP和java大神 base64_encode(hash_hmac('sha1',$public_key,$private_key,TRUE)); 轉 java

如果你的API服務安全認證協議中要求使用hmac_sha1方法對信息進行編碼,

而你的服務是由PHP實現的,客戶端是由JAVA實現的,那麼為了對簽名正確比對,就需要在兩者之間建立能匹配的編碼方式.
efine('ID','123456');
define('KEY','k123456');

$strToSign = "test_string";

$utf8Str = mb_convert_encoding($strToSign, "UTF-8");
$hmac_sha1_str = base64_encode(hash_hmac("sha1", $utf8Str, KEY));
$signature = urlencode($hmac_sha1_str);
print_r($signature);

JAVA側需要注意如下幾點:
1. hmac_sha1編碼結果需要轉換成hex格式

2. java中base64的實現和php不一致,其中java並不會在字元串末尾填補=號以把位元組數補充為8的整數
3. hmac_sha1並非sha1, hmac_sha1是需要共享密鑰的

參考實現如下:
[java] view plain
import java.io.UnsupportedEncodingException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.wicket.util.crypt.Base64UrlSafe;

public class test {
public static void main(String[] args) {
String key = "";
String toHash = "GET"+"\n"+"Thu, 09 Aug 2012 13:33:46 +0000"+"\n"+"/ApiChannel/Report.m";
//String toHashUtf8 = URLEncoder.encode(toHash, "UTF-8");
String res = hmac_sha1(toHash, key);
//System.out.print(res+"\n");

String signature;
try {
signature = new String(Base64UrlSafe.encodeBase64(res.getBytes()),"UTF-8");
signature = appendEqualSign(signature);
System.out.print(signature);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}

public static String hmac_sha1(String value, String key) {
try {
// Get an hmac_sha1 key from the raw key bytes
byte[] keyBytes = key.getBytes();
SecretKeySpec signingKey = new SecretKeySpec(keyBytes, "HmacSHA1");

// Get an hmac_sha1 Mac instance and initialize with the signing key
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);

// Compute the hmac on input data bytes
byte[] rawHmac = mac.doFinal(value.getBytes());

// Convert raw bytes to Hex
String hexBytes = byte2hex(rawHmac);
return hexBytes;
} catch (Exception e) {
throw new RuntimeException(e);
}
}

private static String byte2hex(final byte[] b){
String hs="";
String stmp="";
for (int n=0; n<b.length; n++){
stmp=(java.lang.Integer.toHexString(b[n] & 0xFF));
if (stmp.length()==1) hs=hs+"0"+stmp;
else hs=hs+stmp;
}
return hs;
}

private static String appendEqualSign(String s){
int len = s.length();
int appendNum = 8 - (int)(len/8);
for (int n=0; n<appendNum; n++){
s += "%3D";
}
return s;
}
}

參考:http://www.iteye.com/topic/1002652

㈢ php excel加密的實現方法有什麼

PHP中的加密方式有如下幾種
1. MD5加密

string md5 ( string $str [, bool $raw_output = false ] )
參數
str -- 原始字元串。
raw_output -- 如果可選的 raw_output 被設置為 TRUE,那麼 MD5 報文摘要將以16位元組長度的原始二進制格式返回。
這是一種不可逆加密,執行如下的代碼
$password = 『123456『;
echo md5($password);
得到結果是
2. Crype加密
string crypt ( string $str [, string $salt ] )
crypt() 返回一個基於標准 UNIX DES 演算法或系統上其他可用的替代演算法的散列字元串。
參數
str -- 待散列的字元串。
salt -- 可選的鹽值字元串。如果沒有提供,演算法行為將由不同的演算法實現決定,並可能導致不可預料的結束。
這是也一種不可逆加密,執行如下的代碼
代碼如下:
$password = 『123456『;
$salt = "test";// 只取前兩個
echo crypt($password, $salt);
得到的結果是teMGKvBPcptKo
使用自動鹽值的例子如下:
代碼如下:
$password = crypt(『mypassword『); // 自動生成鹽值
/* 你應當使用 crypt() 得到的完整結果作為鹽值進行密碼校驗,以此來避免使用不同散列演算法導致的問題。(如上所述,基於標准 DES 演算法的密碼散列使用 2 字元鹽值,但是基於 MD5 演算法的散列使用 12 個字元鹽值。)*/
if (crypt(『mypassword『, $password) == $password) {
echo "Password verified!";
}
執行結果是輸出 Password verified!
以不同散列類型使用 crypt()的例子如下:
代碼如下:
if (CRYPT_STD_DES == 1) {
echo 『Standard DES: 『 . crypt(『rasmuslerdorf『, 『rl『) . "\n";
}
if (CRYPT_EXT_DES == 1) {
echo 『Extended DES: 『 . crypt(『rasmuslerdorf『, 『_J9..rasm『) . "\n";
}
if (CRYPT_MD5 == 1) {
echo 『MD5: 『 . crypt(『rasmuslerdorf『, 『$1$rasmusle$『) . "\n";
}
if (CRYPT_BLOWFISH == 1) {
echo 『Blowfish: 『 . crypt(『rasmuslerdorf『, 『$2a$07$usesomesillystringforsalt$『) . "\n";
}
if (CRYPT_SHA256 == 1) {
echo 『SHA-256: 『 . crypt(『rasmuslerdorf『, 『$5$rounds=5000$usesomesillystringforsalt$『) . "\n";
}
if (CRYPT_SHA512 == 1) {
echo 『SHA-512: 『 . crypt(『rasmuslerdorf『, 『$6$rounds=5000$usesomesillystringforsalt$『) . "\n";
}
其結果如下
Standard DES: rl.3StKT.4T8M
Extended DES: _J9..rasmBYk8r9AiWNc
MD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0
Blowfish: $2a$07$./U9C8sBjqp8I90dH6hi
SHA-256: $5$rounds=5000$usesomesillystri$/Tp.6
SHA-512: $6$rounds=5000$usesomesillystri$.S5KPgErtP/EN5mcO.ChWQW21
在 crypt() 函數支持多重散列的系統上,下面的常量根據相應的類型是否可用被設置為 0 或 1:
CRYPT_STD_DES - 基於標准 DES 演算法的散列使用 "./0-9A-Za-z" 字元中的兩個字元作為鹽值。在鹽值中使用非法的字元將導致 crypt() 失敗。
CRYPT_EXT_DES - 擴展的基於 DES 演算法的散列。其鹽值為 9 個字元的字元串,由 1 個下劃線後面跟著 4 位元組循環次數和 4 位元組鹽值組成。它們被編碼成可列印字元,每個字元 6 位,有效位最少的優先。0 到 63 被編碼為 "./0-9A-Za-z"。在鹽值中使用非法的字元將導致 crypt() 失敗。
CRYPT_MD5 - MD5 散列使用一個以 $1$ 開始的 12 字元的字元串鹽值。
CRYPT_BLOWFISH - Blowfish 演算法使用如下鹽值:「$2a$」,一個兩位 cost 參數,「$」 以及 64 位由 「./0-9A-Za-z」 中的字元組合而成的字元串。在鹽值中使用此范圍之外的字元將導致 crypt() 返回一個空字元串。兩位 cost 參數是循環次數以 2 為底的對數,它的范圍是 04-31,超出這個范圍將導致 crypt() 失敗。
CRYPT_SHA256 - SHA-256 演算法使用一個以 $5$ 開頭的 16 字元字元串鹽值進行散列。如果鹽值字元串以 「rounds=$」 開頭,N 的數字值將被用來指定散列循環的執行次數,這點很像 Blowfish 演算法的 cost 參數。默認的循環次數是 5000,最小是 1000,最大是 999,999,999。超出這個范圍的 N 將會被轉換為最接近的值。
CRYPT_SHA512 - SHA-512 演算法使用一個以 $6$ 開頭的 16 字元字元串鹽值進行散列。如果鹽值字元串以 「rounds=$」 開頭,N 的數字值將被用來指定散列循環的執行次數,這點很像 Blowfish 演算法的 cost 參數。默認的循環次數是 5000,最小是 1000,最大是 999,999,999。超出這個范圍的 N 將會被轉換為最接近的值。
3. Sha1加密

string sha1 ( string $str [, bool $raw_output = false ] )
參數
str -- 輸入字元串。
raw_output -- 如果可選的 raw_output 參數被設置為 TRUE,那麼 sha1 摘要將以 20 字元長度的原始格式返回,否則返回值是一個 40 字元長度的十六進制數字。
這是也一種不可逆加密,執行如下代碼:
$password = 『123456『;
echo sha1($password);
得到的結果是
以上幾種雖然是不可逆加密,但是也可以根據查字典的方式去解密。如下的地址中就提供了可以將上面的加密結果解密出來的功能。
http://www.cmd5.com/
那大家是不是加了就算加了密,也沒用啊,其實不然,只要你的加密足夠復雜,被破解出的可能性就越小,比如用以上三種加密方式混合加密,之後我會推薦給大家一個php的加密庫。
4. URL加密
string urlencode ( string $str )
此函數便於將字元串編碼並將其用於 URL 的請求部分,同時它還便於將變數傳遞給下一頁。
返回字元串,此字元串中除了 -_. 之外的所有非字母數字字元都將被替換成百分號(%)後跟兩位十六進制數,空格則編碼為加號(+)。此編碼與 WWW 表單 POST 數據的編碼方式是一樣的,同時與 application/x-www-form-urlencoded 的媒體類型編碼方式一樣。由於歷史原因,此編碼在將空格編碼為加號(+)方面與 RFC1738 編碼不同。
string urldecode ( string $str )
解碼給出的已編碼字元串中的任何 %##。 加號(『+『)被解碼成一個空格字元。
這是一種可逆加密,urlencode方法用於加密,urldecode方法用於解密,執行如下代碼:
$url = 『http://www.xxx.com/CraryPrimitiveMan/『;
$encodeUrl = urlencode($url);
echo $encodeUrl . "\n";// 如果是在網頁上展示的,就將\n修改為

echo urldecode($encodeUrl);
得到的結果如下
http%3A%2F%2Fwww.xxx.com%2FCraryPrimitiveMan%2F
http://www.xxx.com/CraryPrimitiveMan/
基於RFC 3986的加密URL的方法如下:
代碼如下:
function myUrlEncode($string) {
$entities = array(『%21『, 『%2A『, 『%27『, 『%28『, 『%29『, 『%3B『, 『%3A『, 『%40『, 『%26『, 『%3D『, 『%2B『, 『%24『, 『%2C『, 『%2F『, 『%3F『, 『%25『, 『%23『, 『%5B『, 『%5D『);
$replacements = array(『!『, 『*『, "『", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]");
return str_replace($entities, $replacements, urlencode($string));
}
5. Base64信息編碼加密

string base64_encode ( string $data )
使用 base64 對 data 進行編碼。
設計此種編碼是為了使二進制數據可以通過非純 8-bit 的傳輸層傳輸,例如電子郵件的主體。
Base64-encoded 數據要比原始數據多佔用 33% 左右的空間。
string base64_decode ( string $data [, bool $strict = false ] )
對 base64 編碼的 data 進行解碼。
參數
data -- 編碼過的數據。
strict -- 如果輸入的數據超出了 base64 字母表,則返回 FALSE。
執行如下代碼:
代碼如下:
$name = 『CraryPrimitiveMan『;
$encodeName = base64_encode($name);
echo $encodeName . "\n";
echo base64_decode($encodeName);
其結果如下
代碼如下:
Q3JhcnlQcmltaXRpdmVNYW4=
CraryPrimitiveMan
推薦phpass

經 phpass 0.3 測試,在存入資料庫之前進行哈希保護用戶密碼的標准方式。 許多常用的哈希演算法如 md5,甚至是 sha1 對於密碼存儲都是不安全的, 因為駭客能夠使用那些演算法輕而易舉地破解密碼。
對密碼進行哈希最安全的方法是使用 bcrypt 演算法。開源的 phpass 庫以一個易於使用的類來提供該功能。
代碼如下:
<?php
// Include phpass 庫
require_once(『phpass-03/PasswordHash.php『)
// 初始化散列器為不可移植(這樣更安全)
$hasher = new PasswordHash(8, false);
// 計算密碼的哈希值。$hashedPassword 是一個長度為 60 個字元的字元串.
$hashedPassword = $hasher->HashPassword(『my super cool password『);
// 你現在可以安全地將 $hashedPassword 保存到資料庫中!
// 通過比較用戶輸入內容(產生的哈希值)和我們之前計算出的哈希值,來判斷用戶是否輸入了正確的密碼
$hasher->CheckPassword(『the wrong password『, $hashedPassword); // false
$hasher->CheckPassword(『my super cool password『, $hashedPassword); // true
?>

㈣ PHP mysql 實現hash分區的問題

當分片索引不是純整型的字元串時,只接受整型的內置 hash 演算法是無法使用的。為此,stringhash 按照用戶定義的起點和終點去截取分片索引欄位中的部分字元,根據當中每個字元的二進制 unicode 值換算出一個長整型數值,然後就直接調用內置 hash 演算法求解分片路由:先求模得到邏輯分片號,再根據邏輯分片號直接映射到物理分片。

㈤ 深入PHP中的HashTable結構詳解

深入PHP中的HashTable結構詳解

深入PHP中的HashTable結構詳解

對php內核有一定了解的人應該都知道php的精髓就是HashTable,HashTable在php的實現中無處不在。包括php的數組、什麼全局變數、局部變數的作用域等等,php的hashtable拆開來說就是四部分:

hash函數:用的是time33的散列函數,將一個字元串的key轉換成一個數字

一個C數組:用來儲存桶(buckets)的

兩個雙向的鏈表:第一個雙向鏈表是數組的每個元素(桶bucket)是一個雙向鏈表,這樣做是為了解決hash沖突;第二個雙向鏈表是數組將每一個桶(bucket)連接起來,這里要連接的也就是第一個雙向鏈表的鏈表頭,這樣做是為了遍歷整個hash表用的,鳥哥有篇blog是講php的foreach的,這里這樣設計就是給foreach用的==>《深入理解PHP之數組(遍歷順序)》

我這里不再說hashtable的struct和bucket的`struct了,因為下面的推薦鏈接幾乎都講了,我不覺得我能描述和說的比他們好,每個人的水平不一樣,我就以我現在的技術水平來描述,所以我就只把我整理的一些東西記錄一下

下面是php中hash實現的兩個文件:zend_hash.c zend_hash.h。這兩個文件裡面實現了一堆的api,也引申出了一堆的api,下面是實現出來的api的原型

復制代碼 代碼如下:

ZEND_API ulong zend_hash_func(const char *arKey, uint nKeyLength)

ZEND_API ulong zend_get_hash_value(const char *arKey, uint nKeyLength)

ZEND_API int _zend_hash_init(HashTable *ht, uint nSize, hash_func_t pHashFunction, dtor_func_t pDestructor, zend_bool persistent ZEND_FILE_LINE_DC)

ZEND_API void zend_hash_set_apply_protection(HashTable *ht, zend_bool bApplyProtection)

ZEND_API int _zend_hash_add_or_update(HashTable *ht, const char *arKey, uint nKeyLength, void *pData, uint nDataSize, void **pDest, int flag ZEND_FILE_LINE_DC)

ZEND_API int _zend_hash_quick_add_or_update(HashTable *ht, const char *arKey, uint nKeyLength, ulong h, void *pData, uint nDataSize, void **pDest, int flag ZEND_FILE_LINE_DC)

ZEND_API int _zend_hash_index_update_or_next_(HashTable *ht, ulong h, void *pData, uint nDataSize, void **pDest, int flag ZEND_FILE_LINE_DC)

ZEND_API int zend_hash_rehash(HashTable *ht)

static int zend_hash_do_resize(HashTable *ht)

ZEND_API int zend_hash_del_key_or_index(HashTable *ht, const char *arKey, uint nKeyLength, ulong h, int flag)

ZEND_API void zend_hash_destroy(HashTable *ht)

ZEND_API void zend_hash_clean(HashTable *ht)

static Bucket *zend_hash_apply_r(HashTable *ht, Bucket *p)

ZEND_API void zend_hash_graceful_destroy(HashTable *ht)

ZEND_API void zend_hash_graceful_reverse_destroy(HashTable *ht)

ZEND_API void zend_hash_apply(HashTable *ht, apply_func_t apply_func TSRMLS_DC)

ZEND_API void zend_hash_apply_with_argument(HashTable *ht, apply_func_arg_t apply_func, void *argument TSRMLS_DC)

ZEND_API void zend_hash_apply_with_arguments(HashTable *ht TSRMLS_DC, apply_func_args_t apply_func, int num_args, …)

ZEND_API void zend_hash_reverse_apply(HashTable *ht, apply_func_t apply_func TSRMLS_DC)

ZEND_API void zend_hash_(HashTable *target, HashTable *source, _ctor_func_t pCopyConstructor, void *tmp, uint size)

ZEND_API void _zend_hash_merge(HashTable *target, HashTable *source, _ctor_func_t pCopyConstructor, void *tmp, uint size, int overwrite ZEND_FILE_LINE_DC)

static zend_bool zend_hash_replace_checker_wrapper(HashTable *target, void *source_data, Bucket *p, void *pParam, merge_checker_func_t merge_checker_func)

ZEND_API void zend_hash_merge_ex(HashTable *target, HashTable *source, _ctor_func_t pCopyConstructor, uint size, merge_checker_func_t pMergeSource, void *pParam)

ZEND_API int zend_hash_find(const HashTable *ht, const char *arKey, uint nKeyLength, void **pData)

ZEND_API int zend_hash_quick_find(const HashTable *ht, const char *arKey, uint nKeyLength, ulong h, void **pData)

ZEND_API int zend_hash_exists(const HashTable *ht, const char *arKey, uint nKeyLength)

ZEND_API int zend_hash_quick_exists(const HashTable *ht, const char *arKey, uint nKeyLength, ulong h)

ZEND_API int zend_hash_index_find(const HashTable *ht, ulong h, void **pData)

ZEND_API int zend_hash_index_exists(const HashTable *ht, ulong h)

ZEND_API int zend_hash_num_elements(const HashTable *ht)

ZEND_API int zend_hash_get_pointer(const HashTable *ht, HashPointer *ptr)

ZEND_API int zend_hash_set_pointer(HashTable *ht, const HashPointer *ptr)

ZEND_API void zend_hash_internal_pointer_reset_ex(HashTable *ht, HashPosition *pos)

ZEND_API void zend_hash_internal_pointer_end_ex(HashTable *ht, HashPosition *pos)

ZEND_API int zend_hash_move_forward_ex(HashTable *ht, HashPosition *pos)

ZEND_API int zend_hash_move_backwards_ex(HashTable *ht, HashPosition *pos)

ZEND_API int zend_hash_get_current_key_ex(const HashTable *ht, char **str_index, uint *str_length, ulong *num_index, zend_bool plicate, HashPosition *pos)

ZEND_API int zend_hash_get_current_key_type_ex(HashTable *ht, HashPosition *pos)

ZEND_API int zend_hash_get_current_data_ex(HashTable *ht, void **pData, HashPosition *pos)

ZEND_API int zend_hash_update_current_key_ex(HashTable *ht, int key_type, const char *str_index, uint str_length, ulong num_index, int mode, HashPosition *pos)

ZEND_API int zend_hash_sort(HashTable *ht, sort_func_t sort_func, compare_func_t compar, int renumber TSRMLS_DC)

ZEND_API int zend_hash_compare(HashTable *ht1, HashTable *ht2, compare_func_t compar, zend_bool ordered TSRMLS_DC)

ZEND_API int zend_hash_minmax(const HashTable *ht, compare_func_t compar, int flag, void **pData TSRMLS_DC)

ZEND_API ulong zend_hash_next_free_element(const HashTable *ht)

void zend_hash_display_pListTail(const HashTable *ht)

void zend_hash_display(const HashTable *ht)

;

㈥ php hash_hmac跟java算出來的結果不一樣

問題解決代碼如下:
public String md5(String txt) {
try{
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(txt.getBytes("GBK")); //問題主要出在這里,Java的字元串是unicode編碼,不受源碼文件的編碼影響;而PHP的編碼是和源碼文件的編碼一致,受源碼編碼影響。
StringBuffer buf=new StringBuffer();
for(byte b:md.digest()){
buf.append(String.format("%02x", b&0xff));
}
return buf.toString();
}catch( Exception e ){
e.printStackTrace();
return null;
}
}

㈦ PHP 函數hash_hmac()怎麼用

hash_hmac — 使用 HMAC 方法生成帶有密鑰的哈希值

stringhash_hmac(string$algo,string$data,string$key[,bool$raw_output=false])

參數:

algo:要使用的哈希演算法名稱,例如:"md5","sha256","haval160,4" 等。

data:要進行哈希運算的消息。

key:使用 HMAC 生成信息摘要時所使用的密鑰。

raw_output:設置為 TRUE 輸出原始二進制數據, 設置為 FALSE 輸出小寫 16 進制字元串。

返回值:

如果 raw_output 設置為 TRUE, 則返回原始二進制數據表示的信息摘要,否則返回 16 進制小寫字元串格式表示的信息摘要。

如果 algo 參數指定的不是受支持的演算法,返回 FALSE。

㈧ 關於PHP5與PHP7的若干問題

一、
1、在Zend引擎和擴展中,經常要創建一個PHP的變數,底層就是一個zval指針。之前的版本都是通過MAKE_STD_ZVAL動態的從堆上分配一個zval內存。而PHP7可以直接使用棧內存。PHP代碼中創建的變數也進行了優化,PHP7直接在棧內存上預分配zval。這樣節約了大量內存分配和內存管理的操作。
2、zend_string存儲hash值,array查詢不再需要重復計算hash
3、PHP5的hashtable每個元素都是一個
Bucket
*,而PHP7直接存Bucket,減少了內存申請次數,提升了Cache命中率和內存訪問速度。
4、PHP的C擴展函數與PHP中的變數進行參數輸入時,要使用zend_parse_parameters()函數,這個函數根據一個字元串參數找到對應PHP的zval指針,然後進行賦值。
這個函數實際上有一定的性能消耗。PHP7直接使用宏替換了zend_parse_parameters函數,C擴展中不再需要使用zend_parse_parameters進行逐個參數的查找,宏展開後自動會實現參數賦值。僅此一項就提升了5%的性能。
5、很多PHP程序中會大量使用call_user_function,
is_int/string/array,
strlen
,
defined
函數。PHP5
都是以擴展函數的方式提供,PHP7中這4類函數改成ZendVM的OPCODE指令,執行更快。
除了上面5個主要優化點之外,PHP7還有其他更多的細節性能優化。如基礎類型int、float、bool等改為直接進行值拷貝,排序演算法改進,PCRE
with
JIT,execute_data和opline使用全局寄存器等等。PHP7對性能的優化會繼續進行下去。
二、有一群人,
創建了一個PHP6的項目,
主要的目的是為PHP引擎增加Unicode支持.
當時開發者們同時維護5和6的開發,
慢慢的大家發現新功能都等著提交給6,
而6因為開發速度慢,
導致很多新特性沒法提交,
狀態很不理想.
再後來6就沒人開發了
三、不太了解、我只用git下的php7主幹代碼

㈨ PHP如何計算圖片哈希值

把圖形文件(其實任何文件都這樣)讀入,然後將文件內容字元串做哈希就行了。和md5('abc')沒區別,自己看一下手冊怎麼將文件內容讀入變數就好了。

㈩ 用java,怎麼把php數組轉換成HashMap或者集合

public class Test
{
public static void main(String[] args)
{
List<HashMap<String, Object>> list = new ArrayList<HashMap<String,Object>>();
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("url", "abc");
map.put("alt","123");
list.add(map);

HashMap<String, Object> map1 = new HashMap<String, Object>();
map1.put("url", "bcd");
map1.put("alt", "234");
list.add(map1);

HashMap<String, Object> map2 = new HashMap<String, Object>();
map2.put("url", "cde");
map2.put("alt", "345");
list.add(map2);
for(HashMap<String, Object> lists : list)
{
System.out.println(lists);
}
}
}
結果:
{alt=123, url=abc}
{alt=234, url=bcd}
{alt=345, url=cde}

閱讀全文

與php字元串hash相關的資料

熱點內容
鴻蒙加密等級 瀏覽:802
cocos2dluapdf 瀏覽:491
假的加密鎖靠譜嗎 瀏覽:176
經營聖手伺服器怎麼調 瀏覽:749
arduino手機編程 瀏覽:481
西醫pdf下載 瀏覽:29
後浪電影學院pdf 瀏覽:813
程序員怎麼做到不被人嫉妒 瀏覽:669
cmd新建文件夾md命令 瀏覽:570
php數組中的數值排序 瀏覽:832
安卓手機怎麼避免小孩內購 瀏覽:171
聯想伺服器出現黃色嘆號怎麼辦 瀏覽:991
約翰編譯器製作教程 瀏覽:130
大地pdf 瀏覽:109
pdfplus 瀏覽:577
匯編O命令 瀏覽:970
plt轉pdf 瀏覽:366
魔獸60宏命令大全 瀏覽:480
php志願者網站源碼 瀏覽:875
貿易pdf 瀏覽:498