2.PHP加密扩展库Mcrypt的算法和加密模式
Mcrypt库支持20多种加密算法和8种加密模式,具体可以通过函数mcrypt_list_algorithms()和mcrypt_list_modes()来显示,结果如下:
Mcrypt支持的算法有:cast-128 gost rijndael-128 twofish arcfour cast-256 loki97 rijndael-192 saferplus wake blowfish-compat des rijndael-256 serpent xtea blowfish enigma rc2 tripledes
Mcrypt支持的加密模式有:cbc cfb ctr ecb ncfb nofb ofb stream
这些算法和模式在应用中要以常量来表示,写的时候加上前缀MCRYPT_和MCRYPT_MODE_来表示,如下面Mcrypt应用的例子:
DES算法表示为MCRYPT_DES;
ECB模式表示为MCRYPT_MODE_ECB;
3.PHP加密扩展库Mcrypt应用
先看一个例子,了解Mcrypt的工作流程,再来看看部分流程使用的函数:
运行结果:
原文:我是李云
加密后的内容是:ʟ?Z懔e e��?
解密后的内容:我是李云
//手册里的写法:
//指定初始化向量iv的大小:
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
//创建初始化向量:
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
//加密密码:
$key = "123qwe.019860905061x";
//原始内容(未加密):
$text = "My name is Adam Li!";
echo $text. "<br>\n";
//加密后的内容:
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
echo $crypttext. "\n<br>";
//解密已经加密的内容:
$str_decrypt = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
echo $str_decrypt;
注:加密和解密函数中的参数cipher、key和mode必须一一对应,否则数据不能被还原。关于MCRYPT_RAND参见笔记Linux中的随机数文件 /dev/random /dev/urandom。
当20个并发请求的时候, 服务器的中断数不够, 产生不了足够的随机数给mcrypt, 继而导致PHP进程等待, 从而表现出, 响应时间变长
解决的办法就是, 改用/dev/urandom, /dev/urandom也是一个产生随机数的设备, 但是它不依赖于系统中断。
$ rngd -r /dev/urandom -o /dev/random -t 1
用urandom的结果填充entropy池子,这样既保证了entropy池的数量,也保证了随机性
然而, 为什么PHP使用/dev/random作为默认, 这是因为理论上来说, /dev/urandom在一定的情况下, 可能会被可预测(参看: /dev/random), 所以一般上认为, /dev/urandom不如/dev/random安全。
http://my.oschina.net/yoyoko/blog/186800
http://blog.csdn.net/ohmygirl/article/details/40385083 /dev/random和/dev/urandom的一点备忘
http://www.laruence.com/2012/09/24/2810.html
相关推荐
在PHP的标准安装过程中并没有默认安装Mcrypt扩展库,但可以通过添加相应的dll文件和修改PHP配置文件来启用Mcrypt库。Mcrypt库支持超过20种加密算法和8种加密模式。 Mcrypt库支持的加密算法包括但不限于CAST-128、...
本文将深入讲解如何使用PHP的`mcrypt_decrypt`函数和JavaScript的CryptoJS库实现AES(Advanced Encryption Standard)CFB(Cipher Feedback)模式的加密解密,以确保数据在客户端与服务器间的安全交互。 AES是一种...
下面我们将深入探讨`goto`在PHP中的使用、加密解密的概念以及如何结合`goto`实现相关功能。 1. `goto` 语句: PHP中的`goto`语句始于PHP 5.3版本,其语法结构为 `goto label;`。`label`是程序员定义的一个标识符,...
下面我们将深入探讨这个主题,了解加密、解密以及反编译的相关知识点。 1. **加密**:加密是一种信息安全技术,通过特定的算法将明文(可读数据)转换为密文(不可读数据),以防止非授权用户获取敏感信息。在PHP中...
本文将深入探讨如何使用`mcrypt_encrypt`和`mcrypt_decrypt`函数来实现字符串的加密和解密,确保数据的安全性。 `mcrypt_encrypt`和`mcrypt_decrypt`是PHP中用于加密和解密数据的内置函数。它们基于Mcrypt库,该库...
在PHP编程语言中,加密和解密是网络安全...理解加密解密的基础知识,以及如何在PHP中安全地实现这一过程,是确保应用程序安全的关键。通过自定义类,我们可以根据具体需求定制加密策略,同时保持代码的简洁性和易用性。
它以其简单、快速和高效而著名,适用于多种环境,包括...分析和理解这些代码,可以帮助深入学习RC4算法以及如何在不同编程语言间实现兼容的加密解密流程。如果你需要进一步的指导或代码解析,请提供该文本文件的内容。
PHP作为一种流行的服务器端脚本语言,其提供的mcrypt扩展是进行数据加密与解密的重要工具。本文将详细介绍PHP基于mcrypt扩展的加密解密实现方法,并通过实例分析mcrypt的原理与具体实现。 首先,mcrypt是PHP的一个...
《PHP Mcrypt扩展详解及其应用》 PHP Mcrypt是一个强大的加密库,它是PHP的一个扩展,提供了多种加密算法和模式,可以用于数据的安全存储和传输。本文将深入探讨PHP Mcrypt的功能、安装方法以及如何在实际项目中...
综上所述,“风吟PHP 字符串加密/解密.rar”中的代码可能涉及了PHP的加密技术,包括但不限于对称加密算法如AES,可能的密钥管理策略,以及可能结合的非对称加密和哈希函数,所有这些都是为了保障数据的安全存储和...
- 解密则是加密的逆过程,通过密钥将密文还原为原始的明文。 2. **PHP中的加密库** PHP提供了一些内置的加密库,如MCrypt和OpenSSL。不过,由于MCrypt已在PHP 7.2中被弃用,所以我们现在主要关注使用OpenSSL库...
本篇文章将深入探讨PHP中的加密和解密方法,以及如何利用它们来保护用户版权。 一、基础加密算法 1. **MD5**:Message-Digest Algorithm 5,是一种广泛使用的哈希函数,产生一个128位(16字节)的散列值。虽然不...
为了确保加密过程是可逆的,即加密后的数据可以准确无误地恢复为原始数据,可以利用PHP中的`Mcrypt`扩展库实现这一目标。 #### Mcrypt扩展库介绍 `Mcrypt`是一个功能强大的加密算法库,支持22种不同的加密算法,...
在实际项目中,我们需要根据需求选择合适的加密策略,并确保在`PHP`和`JavaScript`之间正确同步加密和解密的过程。同时,要注意保持代码的可维护性和遵循最佳实践,如避免硬编码密钥,定期更新加密算法以抵御新的...
- **解密**:先通过`base64_decode`函数将加密后的文本转换回二进制格式,再使用`mcrypt_decrypt`函数进行解密。 - **去除填充**:使用`rtrim`函数移除PKCS7填充添加的字符,还原原始数据。 #### 总结 通过上述...
这里我们将讨论一些常见的加密库和函数,以及如何在实际项目中创建自定义加密解密类。 1. **基础加密函数**: - **md5()**:提供128位散列值,但不适用于加密,只适合做数据校验。 - **sha1()**:与md5类似,提供...
1. 加密与解密:Mcrypt提供了加密和解密功能,可以对数据进行安全保护,防止数据泄露。 2. 支持多种加密算法:包括AES、DES、3DES、Blowfish等,每种算法都有其特定的安全性和速度优势。 3. 工作模式选择:Mcrypt...
在PHP中,我们可以使用`mcrypt`扩展或内置的`openssl`扩展来实现DES加密解密。`mcrypt`现在已经被废弃,所以我们推荐使用`openssl`。下面是一个PHP的DES加密解密示例: ```php <?php $key = '12345678'; // 8个字符...