首页 > 开发 > PHP > 正文

PHP扩展mcrypt实现的AES加密功能示例

2024-05-04 22:41:18
字体:
来源:转载
供稿:网友

本文实例讲述了PHP扩展mcrypt实现的AES加密功能。分享给大家供大家参考,具体如下:

AES(Advanced Encryption Standard,高级加密标准)是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。Rijndael是在AES中使用的基本密码算法。

对于此算法网上流传有很多php代码实现的版本,其实php的扩展mcrypt完全支持此加密算法,不必要自己去写代码实现。先不说自己写费时费力(当然你若是想研究此加密算法,那另说),使用php代码实现的算法效率也不会太高。

mcrypt扩展在php中默认是没有的,需要自己安装配置,其方法可以在网上搜索,这里不在详述。你可以使用以下代码检查你的php环境是否支持mcrypt

$cipher_list = mcrypt_list_algorithms();//mcrypt支持的加密算法列表$mode_list = mcrypt_list_modes(); //mcrypt支持的加密模式列表echo '<xmp>';print_r($cipher_list);print_r($mode_list);

若你的环境支持mcrypt,输出结果应该如下:

Array
(
    [0] => cast-128
    [1] => gost
    [2] => rijndael-128
    [3] => twofish
    [4] => arcfour
    [5] => cast-256
    [6] => loki97
    [7] => rijndael-192
    [8] => saferplus
    [9] => wake
    [10] => blowfish-compat
    [11] => des
    [12] => rijndael-256
    [13] => serpent
    [14] => xtea
    [15] => blowfish
    [16] => enigma
    [17] => rc2
    [18] => tripledes
)
Array
(
    [0] => cbc
    [1] => cfb
    [2] => ctr
    [3] => ecb
    [4] => ncfb
    [5] => nofb
    [6] => ofb
    [7] => stream
)

例如本机采用wampserver环境,直接开启了mcrypt扩展:

其中rijndael-128,rijndael-192,rijndael-256就是AES加密,3种分别是使用不同的数据块和密钥长度进行加密。

以下是使用扩展mcrypt实现AES加密的简单示例

/** * 利用mcrypt做AES加密解密 * @author ts24<tsxw24@gmail.com> */abstract class AES{ /** * 算法,另外还有192和256两种长度 */ const CIPHER = MCRYPT_RIJNDAEL_128; /** * 模式 */ const MODE = MCRYPT_MODE_ECB; /** * 加密 * @param string $key 密钥 * @param string $str 需加密的字符串 * @return type */ static public function encode( $key, $str ){ $iv = mcrypt_create_iv(mcrypt_get_iv_size(self::CIPHER,self::MODE),MCRYPT_RAND); return mcrypt_encrypt(self::CIPHER, $key, $str, self::MODE, $iv); } /** * 解密 * @param type $key * @param type $str * @return type */ static public function decode( $key, $str ){ $iv = mcrypt_create_iv(mcrypt_get_iv_size(self::CIPHER,self::MODE),MCRYPT_RAND); return mcrypt_decrypt(self::CIPHER, $key, $str, self::MODE, $iv); }}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表