PHP mcrypt可逆密碼編譯演算法分析

來源:互聯網
上載者:User

資料加密在我們生活中的地位已經越來越重要了,尤其是考慮到在網路上發生的大量交易和傳輸的大量資料。對於不需要還原為未經處理資料的資訊我們可以使用MD5、sha1等無法復原密碼編譯演算法對資料進行加密處理,但對於交易資訊等需要還原為未經處理資料的重要訊息則必須使用可還原的密碼編譯演算法進行加密了。當然你可以自己寫一個可逆加密的演算法進行加密和解密計算。本文中我們介紹的是使用 mcrypt模組進行加密解密操作。
Mcrypt的優點不僅僅在於其提供的密碼編譯演算法較多,在windows下隨PHP包一起發布,還在於它可以對資料進行加/解密處理,此外,它還提供了包括DES演算法在內的35種處理資料用的函數。 複製代碼 代碼如下:/**
+-----------------------------------------------------
* Mcrypt 加密/解密
* @param String $date 要加密和解密的資料
* @param String $mode encode 預設為加密/decode 為解密
* @return String
* @author zxing@97md.net Mon Sep 14 22:59:28 CST 2009
+-----------------------------------------------------
* @example
*/
function ZxingCrypt($date,$mode = 'encode'){
$key = md5('zxing');//用MD5雜湊產生一個密鑰,注意加密和解密的密鑰必須統一
if ($mode == 'decode'){
$date = base64_decode($date);
}
if (function_exists('mcrypt_create_iv')){
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
}
if (isset($iv) && $mode == 'encode'){
$passcrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $date, MCRYPT_MODE_ECB, $iv);
}elseif (isset($iv) && $mode == 'decode'){
$passcrypt = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $date, MCRYPT_MODE_ECB, $iv);
}
if ($mode == 'encode'){
$passcrypt = base64_encode($passcrypt);
}
return $passcrypt;
}

別的網友的代碼 複製代碼 代碼如下:<?php
$td = mcrypt_module_open(MCRYPT_DES,'','ecb',''); //使用MCRYPT_DES演算法,ecb模式
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$ks = mcrypt_enc_get_key_size($td);
$key = "ery secret key";//密鑰
$key = substr(md5($key), 0, $ks);
mcrypt_generic_init($td, $key, $iv); //初始處理
//加密
$encrypted = mcrypt_generic($td, 'This is very important data');
//結束處理
mcrypt_generic_deinit($td);
//初始解密處理
mcrypt_generic_init($td, $key, $iv);
//解密
$decrypted = mdecrypt_generic($td, $encrypted);
//結束
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
//解密後,可能會有後續的\0,需去掉
echo trim($decrypted) . "\n";
?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.