Ⅰ php 原來的數據沒用MD5加密現在我要更新數據然後使用MD5加密的代碼如何寫
1、先給你原來的數據表增加一個欄位,欄位名為md5,類型int,然後運行一個sql語句:
sql語句:update xxx set md5=0 將md5這個欄位值變成0,即表示該數據未MD5保存。
2、把這段代碼保存為rewrite.php並把資料庫名修改成你對應的資料庫,然後運行。最好先把你的資料庫導出到本地的資料庫,然後在本地親自測試以下這段代碼的效果,之後再進行替換。
<?php
/*讀取md5為0的前30條數據,由於考慮到PHP有個30秒超時的內置,所以一次更新30條,也可以大大降低對資料庫的負擔。*/
$sql=mysql_query("select id,password from XXX where md5=0 order by id desc limit 0,30");
$num=mysql_num_rows($sql);
if($num==0){
echo "所有MD5密碼替換完畢。"; //如果資料庫裡面所有md5=0的記錄都變成了md5=1,則為修改完畢。
exit();
}else{
while($row=mysql_fetch_array($sql)){
$md5_pwd=md5($row['password']); //獲取原密碼,進行MD5化。
$query=mysql_query("update XXX set md5=1,password='".$md5_pwd."' where id=".$row['id'].""); //將該條數據進行更改,把原密碼改成MD5加密後的,並把md5值變成1,表示已經該條數據已經MD5加密
unset($query);
}
mysql_free_result($sql);
unset($sql,$row);
echo "<meta http-equiv=\"refresh\" content=\"0;url=rewrite.php\">"; //該30條記錄轉化完畢,繼續跳到這個頁面執行,一直循環到替換結束。
exit();
}
mysql_close();
?>
Ⅱ 說能說清楚C#md5和php md5加密技術的區別,以實例說明
原理其實都是一樣的,你說的種子問題其實可以理解為加密鹽
同樣的值的MD5結果是一樣的,前提是編碼需要一致
默認的編碼是Unicode
對非英文字元 ,編碼不同MD5的結果也是不同的,
以下是對字元"夢世繁華"的md5值的比較,你可以看看
md5("夢世繁華")
UTF-8 32位GB2312 32位Unicode 32位
//=====================================================
md5 16
md5 16 utf-8
a2cccbcf9c0e3ca9
A2CCCBCF9C0E3CA9
md5 16 gb2312
2f82ed6fb6a9d0a8
2F82ED6FB6A9D0A8
md5 16 unicode
9821973ddd33dc81
9821973DDD33DC81
//=====================================================
md5 Hash Utf-8
e5-18-ec-8a-a2-cc-cb-cf-9c-0e-3c-a9-1d-e2-9b-5a
E5-18-EC-8A-A2-CC-CB-CF-9C-0E-3C-A9-1D-E2-9B-5A
md5 hash GB2312
5e-ba-da-d0-2f-82-ed-6f-b6-a9-d0-a8-59-9b-c7-3a
5E-BA-DA-D0-2F-82-ED-6F-B6-A9-D0-A8-59-9B-C7-3A
md5 hash UNICode
5f-df-ba-4d-98-21-97-3d-dd-33-dc-81-8b-e3-1c-2f
5F-DF-BA-4D-98-21-97-3D-DD-33-DC-81-8B-E3-1C-2F
//=====================================================
Sha1Hash Utf-8
a8-26-5f-e6-69-27-18-f4-3c-1b-16-30-10-9e-ee-3f-8d-df-3a-84
A8-26-5F-E6-69-27-18-F4-3C-1B-16-30-10-9E-EE-3F-8D-DF-3A-84
Sha1Hash GB2312
b4-eb-13-07-bc-7b-9b-d3-e4-8c-4a-82-6a-9b-7b-8b-1e-4a-dd-3b
B4-EB-13-07-BC-7B-9B-D3-E4-8C-4A-82-6A-9B-7B-8B-1E-4A-DD-3B
Sha1Hash UNICode
af-be-2d-d5-d2-7e-fa-55-ea-11-3d-ad-da-35-fc-a5-b9-c4-e9-88
AF-BE-2D-D5-D2-7E-FA-55-EA-11-3D-AD-DA-35-FC-A5-B9-C4-E9-88
Ⅲ php中關於md5函數參數的問題
string md5 ( string str [, bool raw_output])
Calculates the MD5 hash of str using the RSA Data Security, Inc. MD5 Message-Digest Algorithm, and returns that hash. The hash is a 32-character hexadecimal number. If the optional raw_output is set to TRUE, then the md5 digest is instead returned in raw binary format with a length of 16.
簡單翻譯一下:
用RSA Data Security, Inc. MD5 Message-Digest演算法計算一個字元串 str 的MD5哈希值並返回. 這個哈希值是一個32個字元的16進制數.
如果可選參數raw_output設置為 true ,則md5函數將改為返回一個未加工的,長度為16的二進制格式的摘要.
Ⅳ php MD5的定義用法
The md5() function calculates the MD5 hash of a string.
md5()函數的作用是:計算字元串的MD5 hash。
The md5() function uses the RSA Data Security, Inc. MD5 Message-Digest Algorithm.
md5()函數使用美國實驗室(以研究加密演算法而著名)數據安全加密。它採用MD5信息散列[Message-Digest]運演算法則
From RFC 1321 - The MD5 Message-Digest Algorithm: The MD5 message-digest algorithm takes as input a message of arbitrary length and proces as output a 128-bit fingerprint or message digest of the input. The MD5 algorithm is intended for digital signature applications, where a large file must be compressed in a secure manner before being encrypted with a private (secret) key under a public-key cryptosystem such as RSA.
RFC1321的解釋 - MD5信息散列[Message-Digest]運演算法則:「MD5信息散列運演算法則將任意長度的信息作為輸入值,並將其換算成一個128位長度的「指紋信息」或「信息散列」值來代表這個輸入值,並以換算後的值作為結果。MD5運演算法則主要是為「數字簽名程序」而設計的;在這個「數字簽名程序「中,較大的文件將在加密(這里的加密過程是通過在一個密碼系統下[如:RSA]的公開密匙下設置私要密匙而完成的)之前以一種安全的方式進行壓縮。」
This function returns the calculated MD5 hash on success, or FALSE on failure.
如果函數執行成功將計算MD5 hash,如果失敗返回false。
Ⅳ 如何使用PHP計算文件的MD5值
function getAllFileMd5($dir){
$hash = '';
$dir = new RecursiveDirectoryIterator($dir);
foreach(new RecursiveIteratorIterator($dir) as $file) {
$hash .= md5_file($file);
}
return md5($hash);
}
?>
Ⅵ 如何用php對文件進行MD5校驗 - PHP進階討論
恩,對以前的版本不支持md5_file. (PHP 4 >= 4.2.0, PHP 5)