direktori cari
Array Array Helper Benchmarking Benchmarking Class Caching Caching Driver Calendaring Calendaring Class CAPTCHA CAPTCHA Helper Config Config Class Cookie Cookie Helper Database Connecting to your Database Custom Function Calls Database Caching Class Database Configuration Database Forge Class Database Metadata Database Quick Start: Example Code Database Reference Database Utility Class DB Driver Reference Generating Query Results Queries Query Builder Class Query Helper Methods Transactions Date Date Helper Directory Directory Helper Download Download Helper Email Email Class Email Helper Encrypt Encrypt Class Encryption Encryption Library File File Helper File Uploading File Uploading Class Form Form Helper Form Validation Form Validation FTP FTP Class Functions compatibility_functions common_functions HTML HTML Helper HTML Table HTML Table Class Image Manipulation Image Manipulation Class Inflector Inflector Helper Input Input Class Javascript Javascript Class Language Language Class Language Helper Loader Loader Class Migrations Migrations Class Number Number Helper Output Output Class Pagination Pagination Class Path Path Helper Security Security Class Security Helper Session Session Library Shopping Cart Shopping Cart Class Smiley Smiley Helper String String Helper Template Parser Template Parser Class Text Text Helper Trackback Trackback Class Typography Typography Class Typography Helper Unit Testing Unit Testing Class URI URL User Agent XML XML-RPC and XML-RPC Server Zip Encoding Zip Encoding Class XML-RPC and XML-RPC Server Classes XML Helper User Agent Class URL Helper URI Class
watak

加密类提供双向数据加密。它使用加密类运行所需的Mcrypt PHP扩展进行加密。

重要

这个库已被DEPRECATED,只为保持向后兼容性。请使用新的加密库。

  • 使用加密库

    • 设置你的钥匙

    • 消息长度

    • 初始化类

  • 类参考

使用加密库

设置你的钥匙

密钥是一条信息,其控制的密码处理,并且允许将要被解码的加密字符串。实际上,您选择的密钥将提供解密使用该密钥加密的数据的唯一方法,因此您不仅必须仔细选择密钥,而且如果您打算将其用于持久性数据,则绝对不能更改密钥。

不用说,你应该小心地保护你的钥匙。如果有人能够访问您的密钥,数据将很容易解码。如果你的服务器不完全在你的控制之下,那么确保关键的安全是不可能的,所以你可能需要仔细思考,然后将它用于需要高度安全性的任何事情,比如存储信用卡号码。

为了最大限度地利用加密算法,您的密钥长度应为32个字符(256位)。关键字应该像随机字符串一样,可以用数字和大写和小写字母进行调整。你的钥匙应该不会是一个简单的文本字符串。为了加密安全,它需要尽可能随机。

您的密钥可以存储在application / config / config.php中,或者您可以设计自己的存储机制并在编码/解码时动态传递密钥。

要将你的密钥保存到你的application / config / config.php中,打开该文件并设置:

$config['encryption_key'] = "YOUR KEY";

消息长度

知道加密函数产生的编码信息将比原始信息长2.6倍左右,这一点很重要。例如,如果加密字符串“我的超级秘密数据”(长度为21个字符),则最终将得到一个大约55个字符的编码字符串(我们说“粗略”,因为编码的字符串长度以64为增量位集群,所以它不完全是线性的)。选择数据存储机制时请记住这些信息。例如,Cookie只能保存4K条信息。

初始化类

像CodeIgniter中的大多数其他类一样,Encrypt类在您的控制器中使用以下$this->load->library()方法进行初始化:

$this->load->library('encrypt');

加载后,加密库对象将可用:

$this->encrypt

类参考

class CI_Encryptencode($string[, $key = ''])

参数:

$ string(string) - 要加密$ key的数据(字符串) - 加密密钥

返回:

加密的字符串

返回类型:

  • $ stringstring) - 要加密的数据

  • $ key字符串) - 加密密钥

返回:加密的字符串
返回类型:字符串
执行数据加密并将其作为字符串返回。例:

$msg = 'My secret message';  $encrypted_string = $this->encrypt->encode($msg);

如果您不想在配置文件中使用该密钥,则可以选择通过第二个参数传递加密密钥:

$ msg ='我的秘密消息'; $ key ='super-secret-key'; $ encrypted_string = $ this-> encrypt-> encode($ msg,$ key);

decode($string[, $key = ''])

参数:

$ string(string) - 解密$ key的字符串(string) - 加密密钥

返回:

纯文本字符串

返回类型:

  • $ stringstring) - 要解密的字符串

  • $ key字符串) - 加密密钥

返回:纯文本字符串
返回类型:字符串
解密一个编码的字符串。例:

$encrypted_string = 'APANtByIGI1BpVXZTJgcsAG8GZl8pdwwa84';  $plaintext_string = $this->encrypt->decode($encrypted_string);

如果您不想在配置文件中使用该密钥,则可以选择通过第二个参数传递加密密钥:

$ msg ='我的秘密消息'; $ key ='super-secret-key'; $ encrypted_string = $ this-> encrypt-> decode($ msg,$ key);

set_cipher($cipher)

参数:

$ cipher(int) - 有效的PHP MCrypt密码常量

返回:

CI_Encrypt实例(方法链接)

返回类型:

CI_Encrypt

  • $ cipherint) - 有效的PHP MCrypt密码常量

Returns:  CI\_Encrypt instance (method chaining)
Return type:  CI\_Encrypt
Permits you to set an Mcrypt cipher. By default it uses `MCRYPT_RIJNDAEL_256`. Example:

$this->encrypt->set_cipher(MCRYPT_BLOWFISH);

请访问php.net获取可用密码列表。

如果您想手动测试您的服务器是否支持MCrypt,则可以使用:

echo extension_loaded('mcrypt')?'是':'不';

set_mode($mode)

参数:

$ mode(int) - 有效的PHP MCrypt模式常量

返回:

CI_Encrypt实例(方法链接)

返回类型:

CI_Encrypt

  • $ modeint) - 有效的PHP MCrypt模式常量

Returns:  CI\_Encrypt instance (method chaining)
Return type:  CI\_Encrypt
允许你设置Mcrypt模式。默认情况下,它使用** MCRYPT \ _MODE \ _CBC **。例:

$this->encrypt->set_mode(MCRYPT_MODE_CFB);

请访问php.net获取可用模式列表。

encode_from_legacy($string[, $legacy_mode = MCRYPT_MODE_ECB[, $key = '']])

参数:

$ string(string) - 用于加密$ legacy_mode(int)的字符串 - 有效的PHP MCrypt密码常量$ key(字符串) - 加密密钥

返回:

新加密的字符串

返回类型:

  • $ stringstring) - 要加密的字符串

  • $ legacy_modeint) - 有效的PHP MCrypt密码常量

  • $ key字符串) - 加密密钥

返回:新加密的字符串
返回类型:字符串
使您能够重新编码最初使用CodeIgniter 1.x加密的数据,以便与CodeIgniter 2.x中的加密库兼容。如果您已永久存储加密的数据(如文件或数据库)并位于支持Mcrypt的服务器上,则只需要使用此方法。“轻”使用加密,如加密的会话数据或暂时加密的flashdata不需要您的干预。但是,现有的加密会话将被破坏,因为在2.x之前加密的数据将不会被解码。

重要

为什么只有一种方法对数据进行重新编码,而不是维护编码和解码的传统方法?为了提高性能和安全性,Encrypt库中的算法在CodeIgniter 2.x中得到了改进,我们不希望继续使用旧方法。如果您愿意,您当然可以扩展加密库,并将新方法替换为旧的方法,并保持与CodeIgniter 1.x加密数据的无缝兼容性,但这是决定开发人员应谨慎谨慎地做出的决定。

$ new_data = $ this-> encrypt-> encode_from_legacy($ old_encrypted_string);

参数默认描述** $ orig \ _data ** n / a来自CodeIgniter 1.x的加密库的原始加密数据** $ legacy \ _mode ** MCRYPT \ _MODE \ _ECB用于生成原始加密数据的Mcrypt模式。CodeIgniter 1.x的默认值是MCRYPT \ _MODE \ _ECB,并且假定情况是这样,除非被这个参数覆盖。** $密钥**不适用加密密钥。如上所述,它通常在配置文件中指定。
Artikel sebelumnya: Artikel seterusnya: