PHP AES加密解密算法
<?php //--------第一种AES-CBC加密方案-------- //仅为理解之用 $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); #128位 = 16字节 iv必须16字节 $key128 = '1234567890123456'; $iv = '1234567890123456'; $cleartext = 'hello'; #待加密的字符串 if (mcrypt_generic_init($cipher, $key128, $iv) != -1) { // PHP pads with NULL bytes if $cleartext is not a multiple of the block size.. //如果$cleartext不是128位也就是16字节的倍数,补充NULL字符满足这个条件,返回的结果的长度一样 $cipherText = mcrypt_generic($cipher,$cleartext ); mcrypt_generic_deinit($cipher); // Display the result in hex. //很明显,结果也是16字节的倍数.1个字节用两位16进制表示,所以下面输出的是32的倍数位16进制的字符串 echo '第一种AES加密方案:<br>'; printf("128-bit encrypted result:\n%s\n\n",bin2hex($cipherText)); echo '<br>';echo '<br>'; } //--------第一种AES加密方案-------- ?>转载来源:http://www.chilkatsoft.com/p/php_aes.asp http://www.cnblogs.com/adylee/archive/2007/09/14/893438.html 转载来源:http://blog.csdn.net/shushengsky/archive/2009/12/13/4961861.aspx
<?php //--------第二种AES-ECB加密方案--------
//加密
echo '第二种AES加密方案:<br>';
$key = '1234567890123456';
$content = 'hello';
$padkey = pad2Length($key,16);
$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
$iv_size = mcrypt_enc_get_iv_size($cipher);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); #IV自动生成?
echo '自动生成iv的长度:'.strlen($iv).'位:'.bin2hex($iv).'<br>';
if (mcrypt_generic_init($cipher, pad2Length($key,16), $iv) != -1)
{
// PHP pads with NULL bytes if $content is not a multiple of the block size..
$cipherText = mcrypt_generic($cipher,pad2Length($content,16) );
mcrypt_generic_deinit($cipher);
mcrypt_module_close($cipher);
// Display the result in hex.
printf("128-bit encrypted result:\n%s\n\n",bin2hex($cipherText));
print("<br>");
}
//解密
$mw = bin2hex($cipherText);
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
if (mcrypt_generic_init($td, $padkey, $iv) != -1)
{
$p_t = mdecrypt_generic($td, hexToStr($mw));
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$p_t = trimEnd($p_t);
echo '解密:';
print($p_t);
print("<br>");
print(bin2hex($p_t));
echo '<br><br>';
}
//将$text补足$padlen倍数的长度
function pad2Length($text, $padlen){
$len = strlen($text)%$padlen;
$res = $text;
$span = $padlen-$len;
for($i=0; $i
<pre lang="php">
<?php //--------第三种AES-ECB加密方案--------
echo '第三种AES加密方案:<br>';
$key = '1234567890123456';
$key = pad2Length($key,16);
$iv = 'asdff';
$content = 'hello';
$content = pad2Length($content,16);
$AESed = bin2hex( mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$key,$content,MCRYPT_MODE_ECB,$iv) ); #加密
echo "128-bit encrypted result:".$AESed.'<br>';
$jiemi = mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$key,hexToStr($AESed),MCRYPT_MODE_ECB,$iv); #解密
echo '解密:';
echo trimEnd($jiemi);
//--------第三种AES加密方案--------
?>
#KEY长度无限制,IV长度必须是block_size的倍数
#如果是MCRYPT_MODE_ECB加密,结果与KEY有关,与IV无关
#如果是MCRYPT_MODE_CBC加密,结果与KEY有关,与IV有关
//--------第四种AES加密/解密方案 CBC模式,128-bit--------
/* * 实现AES加密 * $str : 要加密的字符串 * $keys : 加密密钥 * $iv : 加密向量 * $cipher_alg : 加密方式 */ function ecryptdString($str,$keys="6461772803150152",$iv="8105547186756005",$cipher_alg=MCRYPT_RIJNDAEL_128){ $encrypted_string= bin2hex(mcrypt_encrypt($cipher_alg,$keys, $str, MCRYPT_MODE_CBC,$iv)); return$encrypted_string; } /* * 实现AES解密 * $str : 要解密的字符串 * $keys : 加密密钥 * $iv : 加密向量 * $cipher_alg : 加密方式 */ functiondecryptStrin($str,$keys="6461772803150152",$iv="8105547186756005",$cipher_alg=MCRYPT_RIJNDAEL_128){ $decrypted_string= mcrypt_decrypt($cipher_alg,$keys, pack("H*",$str),MCRYPT_MODE_CBC,$iv); return$decrypted_string; }

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

Fibers在PHP8.1中引入,提升了並發處理能力。 1)Fibers是一種輕量級的並發模型,類似於協程。 2)它們允許開發者手動控制任務的執行流,適合處理I/O密集型任務。 3)使用Fibers可以編寫更高效、響應性更強的代碼。

PHP社區提供了豐富的資源和支持,幫助開發者成長。 1)資源包括官方文檔、教程、博客和開源項目如Laravel和Symfony。 2)支持可以通過StackOverflow、Reddit和Slack頻道獲得。 3)開發動態可以通過關注RFC了解。 4)融入社區可以通過積極參與、貢獻代碼和學習分享來實現。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

WebStorm Mac版
好用的JavaScript開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器