Login
网站首页 > 文章中心 > 其它

aes加密解密如何用php实现

作者:小编 更新时间:2023-08-01 12:33:38 浏览量:407人看过

如何用php做AES加密解密,编码是UTF-8,跪谢求代码

class CryptAES

aes加密解密如何用php实现-图1

{

protected $mode = MCRYPT_MODE_ECB;

protected $pad_method = NULL;

protected $secret_key = '';

protected $iv = '';

public function set_cipher($cipher)

$this-cipher = $cipher;

}

public function set_mode($mode)

$this-mode = $mode;

public function set_iv($iv)

$this-iv = $iv;

public function set_key($key)

$this-secret_key = $key;

protected function pad_or_unpad($str, $ext)

if ( is_null($this-pad_method) )

return $str;

else

$func_name = __CLASS__ . '::' . $this-pad_method . '_' . $ext . 'pad';

if ( is_callable($func_name) )

$size = mcrypt_get_block_size($this-cipher, $this-mode);

return call_user_func($func_name, $str, $size);

protected function pad($str)

return $this-pad_or_unpad($str, '');

protected function unpad($str)

return $this-pad_or_unpad($str, 'un');

public function encrypt($str)

$str = $this-pad($str);

$td = mcrypt_module_open($this-cipher, '', $this-mode, '');

if ( empty($this-iv) )

$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

$iv = $this-iv;

mcrypt_generic_init($td, $this-secret_key, $iv);

$cyper_text = mcrypt_generic($td, $str);

mcrypt_generic_deinit($td);

mcrypt_module_close($td);

return $rt;

public function decrypt($str){

$rt = $decrypted_text;

return $this-unpad($rt);

$bindata = '';

$length = strlen($hexdata);

return $bindata;

$pad = $blocksize - (@strlen($text) % $blocksize);

return $text . str_repeat(chr($pad), $pad);

$pad = ord($text{strlen($text) - 1});

if ($pad strlen($text)) return false;

if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false;

return substr($text, 0, -1 * $pad);

$plainText = 'this is a string will be AES_Encrypt';

$aes = new CryptAES();

$aes-set_key($keyStr);

$encText = $aes-encrypt($plainText);

$decString = $aes-decrypt($encText);

echo $encText,"n",$decString;*/

PHP如何实现AES加解密

AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范.它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法.本文展示了AES的概貌并解析了它使用的算法.包括一个完整的C#实现和加密.NET数据的举例.在读完本文后你将能用AES加密、测试 基于AES的软件并能在你的系统中使用AES加密.

PHP 加密:AES & RSA

最近两年一直从事与金融相关项目的开发与维护.但是,关于 PHP 加密解密的最佳实践,网上没有人给出一个完美的总结.恰逢最近看了<<图解密码技术>>一书,对 PHP 加解密有了更深刻的认识.

为了避免各位看枯燥的文字理论,开篇我就把总结给出:

第一段:对称加密

对称加密的特点是加解密速度快,加密后的密文强度目前还没有硬解的可能性.但是,在未来随着计算机性能的提升有可能会出现被破解的可能性.

对称加密的缺点也很明显.对称加密的加密过程与解密过程使用的是同一把密钥.一旦泄漏密钥,加密就失去了任何意义.

根据<<图解密码技术>>一书的推荐,对称加密目前推荐使用 AES.在 PHP 当中要实现 AES 加解密,是使用 openssl 扩展来实现.所以,请确保你的 PHP 已经开启了 openssl 扩展.

可以通过如下方式检测:

或者如下方式检测:

AES 的加密模式属于分组密码模式.所谓分组密码,是加密时把明文按照固定的长度分组,然后再进行加密.当然,细节之处很很多不同.AES 分组模式有多种:ECB、CBC、CFB、OFB、CTR 五种分组模式.目前优先推荐使用 CBC 模式.

如果使用 CBC 模式,那么在加密的时候,就需要一个前置的加密向量 IV.当初博主在使用 AES 来加密的时候,就很奇怪一个对称加密为何要这个向量.因为,在博主寒冰的潜意识里,对称加密只需要一个密钥就 Ok 了.没想到 AES 加密还有多种模式,而这个 CBC 模式恰恰就需要一个这样的向量值.关于这个向量大家可以在网上查阅相关的资料.这个东西非常重要,也非常好理解.

关于 PHP AES 加解密会用到的相关方法:

第二段:非对称加密

非对称加密是指公钥加密私钥解密,私钥加密公钥解密的算法.非对称加密的算法有很多.<<图解密码技术>>一书推荐使用 RSA 算法.它使用起来也非常简单.

要使用 RSA 算法.首先,我们必须生成一对公钥私钥.其实生成公钥私钥很简单.

在 Linux 系统,直接使用如下命令生成:

此命令会生 ~/.ssh/ 目录下生成两个文件:

id_rsa 是私钥, is_rsa.pub 是公钥.

关于 PHP RSA 加解密会用到的相关方法:

以上就是土嘎嘎小编为大家整理的aes加密解密如何用php实现相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章