国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

directory search
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
characters

重要

不要將這個(gè)或任何其他加密庫(kù)用于用戶密碼存儲(chǔ)!密碼必須進(jìn)行散列處理,您應(yīng)該通過(guò)PHP自己的密碼散列擴(kuò)展來(lái)實(shí)現(xiàn)。

加密庫(kù)提供雙向數(shù)據(jù)加密。為了以密碼安全的方式這樣做,它使用了PHP擴(kuò)展,但不幸的是,這些擴(kuò)展在所有系統(tǒng)上都不可用。您必須滿足以下某個(gè)依賴項(xiàng)才能使用此庫(kù):

  • OpenSSL的

  • MCrypt(和MCRYPT_DEV_URANDOM可用性)

如果上述依賴關(guān)系都不符合,我們根本無(wú)法為您提供足夠好的實(shí)現(xiàn)來(lái)滿足正確加密所需的高標(biāo)準(zhǔn)。

  • 使用加密庫(kù)

    • 便攜式密碼

    • 驅(qū)動(dòng)程序特定的密碼

    • 加密模式

    • 初始化類

    • 默認(rèn)行為

    • 設(shè)置您的encryption_key

    • 支持的加密密碼和模式

- [Message Length](about:blank#message-length)- [Configuring the library](about:blank#configuring-the-library)-  [Encrypting and decrypting data](about:blank#encrypting-and-decrypting-data)    - [How it works](about:blank#how-it-works)    - [Using custom parameters](about:blank#using-custom-parameters)    - [Supported HMAC authentication algorithms](about:blank#supported-hmac-authentication-algorithms)
  • 類參考

使用加密庫(kù)

初始化類

像CodeIgniter中的大多數(shù)其他類一樣,Encryption庫(kù)在您的控制器中使用以下$this->load->library()方法進(jìn)行初始化:

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

加載后,加密庫(kù)對(duì)象將可用:

$this->encryption

默認(rèn)行為

默認(rèn)情況下,加密庫(kù)將使用CBC模式下的AES-128密碼,使用您配置的encryption_key和SHA512 HMAC驗(yàn)證。

注意

選擇AES-128是因?yàn)樗蛔C明是強(qiáng)大的,并且因?yàn)樗诓煌募用苘浖途幊陶Z(yǔ)言的API中具有廣泛的可用性。

但是,encryption_key沒(méi)有按原樣使用。

如果您對(duì)密碼學(xué)有所了解,則應(yīng)該已經(jīng)知道HMAC也需要一個(gè)密鑰,并且使用相同的密鑰進(jìn)行加密和身份驗(yàn)證是一種不好的做法。

因此,從已經(jīng)配置的encryption_key派生出兩個(gè)單獨(dú)的密鑰:一個(gè)用于加密,一個(gè)用于驗(yàn)證。這是通過(guò)稱為基于HMAC的密鑰導(dǎo)出函數(shù)(HKDF)的技術(shù)完成的。

設(shè)置您的encryption_key

加密密鑰是一條信息,其控制密碼處理并且允許以加密的純文本字符串,事后-解密。這是整個(gè)過(guò)程中的秘密“成分”,它使您成為唯一能夠解密您決定隱藏在公眾眼中的數(shù)據(jù)的人。在使用一個(gè)密鑰加密數(shù)據(jù)后,同一個(gè)密鑰提供唯一的解密方法,所以不僅必須仔細(xì)選擇一個(gè)密鑰,而且不能丟失數(shù)據(jù),否則您將無(wú)法訪問(wèn)數(shù)據(jù)。

必須指出的是,以確保最大的安全性,比如關(guān)鍵應(yīng)該不僅是越強(qiáng)越好,而且還經(jīng)常變化。然而,這樣的行為很難實(shí)現(xiàn)或者不可能實(shí)現(xiàn),這就是為什么CodeIgniter允許您配置每次使用(幾乎)使用的單個(gè)密鑰的能力。

不用說(shuō),你應(yīng)該小心地保護(hù)你的鑰匙。如果有人能夠訪問(wèn)您的密鑰,數(shù)據(jù)將很容易解密。如果你的服務(wù)器不完全在你的控制之下,那么確保關(guān)鍵的安全是不可能的,所以你可能需要仔細(xì)思考,然后將它用于需要高度安全性的任何事情,比如存儲(chǔ)信用卡號(hào)碼。

您的加密密鑰必須與正在使用的加密算法一致。對(duì)于AES-128,這是128位或16字節(jié)(charcters)長(zhǎng)。您會(huì)在下面找到一張表格,顯示不同密碼支持的密鑰長(zhǎng)度。

密鑰應(yīng)盡可能隨機(jī),并且不能是常規(guī)文本字符串,也不能是哈希函數(shù)的輸出等。為了創(chuàng)建適當(dāng)?shù)拿荑€,您必須使用加密庫(kù)的create_key()方法

// $key will be assigned a 16-byte (128-bit) random key$key = $this->encryption->create_key(16);

密鑰可以存儲(chǔ)在application / config / config.php中,也可以設(shè)計(jì)自己的存儲(chǔ)機(jī)制并在加密/解密時(shí)動(dòng)態(tài)傳遞密鑰。

要將你的密鑰保存到你的application / config / config.php中,打開(kāi)該文件并設(shè)置:

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

你會(huì)注意到create_key()方法輸出二進(jìn)制數(shù)據(jù),這是很難對(duì)付(即復(fù)制粘貼可能會(huì)損壞),所以您可以使用bin2hex()hex2bin()或Base64編碼以更友好的方式的關(guān)鍵工作。例如:

// Get a hex-encoded representation of the key:$key = bin2hex($this->encryption->create_key(16));// Put the same value in your config with hex2bin(),// so that it is still passed as binary to the library:$config['encryption_key'] = hex2bin(<your hex-encoded key>);

支持的加密密碼和模式

注意

術(shù)語(yǔ)'密碼'和'加密算法'是可以互換的。

便攜式密碼

由于MCrypt和OpenSSL(在本文檔中也稱為驅(qū)動(dòng)程序)各自支持不同的加密算法集,并且通常以不同的方式實(shí)現(xiàn)它們,因此我們的加密庫(kù)旨在以便攜式方式使用它們,換句話說(shuō) - 它使您可以使用它們可以互換,至少對(duì)于兩個(gè)司機(jī)都支持的密碼。

它也以一種旨在與其他編程語(yǔ)言和庫(kù)中的標(biāo)準(zhǔn)實(shí)現(xiàn)相匹配的方式實(shí)現(xiàn)。

以下是所謂的“便攜式”密碼列表,其中“CodeIgniter名稱”是您必須傳遞給加密庫(kù)以使用該密碼的字符串值:

密碼名稱

CodeIgniter名稱

密鑰長(zhǎng)度(比特/字節(jié))

支持的模式

AES-128 / Rijndael-128

AES-128

128 / 16

CBC,CTR,CFB,CFB8,OFB,ECB

AES-192

AES-192

192 / 24

CBC,CTR,CFB,CFB8,OFB,ECB

AES-256

AES-256

256 / 32

CBC,CTR,CFB,CFB8,OFB,ECB

DES

des

56 / 7

CBC,CFB,CFB8,OFB,ECB

TripleDes的

TripleDes的

56 / 7, 112 / 14, 168 / 21

CBC,CFB,CFB8,OFB

Blowfish

blowfish

128-448 / 16-56

CBC,CFB,OFB,ECB

CAST5 / CAST-128

CAST5

88-128 / 11-16

CBC,CFB,OFB,ECB

RC4 / ARCFour

RC4

40-2048 / 5-256

重要

由于MCrypt的工作原理,如果您未能提供適當(dāng)長(zhǎng)度的密鑰,最終可能會(huì)使用與配置的算法不同的算法,因此請(qǐng)小心!

注意

如果從上表不清楚,Blowfish,CAST5和RC4支持可變長(zhǎng)度密鑰。也就是說(shuō),所示范圍內(nèi)的任何數(shù)字都是有效的,盡管只是以8位增量發(fā)生。

注意

盡管CAST5支持的密鑰長(zhǎng)度低于128位(16字節(jié)),但實(shí)際上它們只會(huì)被填充到最大長(zhǎng)度,正如RFC 2144中所規(guī)定的那樣。

注意

Blowfish支持小至32位(4字節(jié))的密鑰長(zhǎng)度,但我們的測(cè)試表明,只有128位(16字節(jié))或更高的長(zhǎng)度才能被MCrypt和OpenSSL正確支持。無(wú)論如何,使用這種低長(zhǎng)度的密鑰也是不好的做法。

驅(qū)動(dòng)程序特定的密碼

如上所述,MCrypt和OpenSSL支持不同的加密密碼組。出于可移植性的原因,并且由于我們沒(méi)有正確測(cè)試它們,我們不建議您使用特定于驅(qū)動(dòng)程序的驅(qū)動(dòng)程序,但不管如何,這里列出了大多數(shù)驅(qū)動(dòng)程序:

Cipher 名稱

Driver

關(guān)鍵字長(zhǎng)度(bits / bytes)

支持的模型

AES-128

OpenSSL

128 / 16

CBC, CTR, CFB, CFB8, OFB, ECB, XTS

AES-192

OpenSSL

192 / 24

CBC, CTR, CFB, CFB8, OFB, ECB, XTS

AES-256

OpenSSL

256 / 32

CBC, CTR, CFB, CFB8, OFB, ECB, XTS

Rijndael-128

MCrypt

128 / 16, 192 / 24, 256 / 32

CBC, CTR, CFB, CFB8, OFB, OFB8, ECB

Rijndael-192

MCrypt

128 / 16, 192 / 24, 256 / 32

CBC, CTR, CFB, CFB8, OFB, OFB8, ECB

Rijndael-256

MCrypt

128 / 16, 192 / 24, 256 / 32

CBC, CTR, CFB, CFB8, OFB, OFB8, ECB

GOST

MCrypt

256 / 32

CBC, CTR, CFB, CFB8, OFB, OFB8, ECB

Twofish

MCrypt

128 / 16, 192 / 24, 256 / 32

CBC, CTR, CFB, CFB8, OFB, OFB8, ECB

CAST-128

MCrypt

40-128 / 5-16

CBC, CTR, CFB, CFB8, OFB, OFB8, ECB

CAST-256

MCrypt

128 / 16, 192 / 24, 256 / 32

CBC, CTR, CFB, CFB8, OFB, OFB8, ECB

Loki97

MCrypt

128 / 16, 192 / 24, 256 / 32

CBC, CTR, CFB, CFB8, OFB, OFB8, ECB

SaferPlus

MCrypt

128 / 16, 192 / 24, 256 / 32

CBC, CTR, CFB, CFB8, OFB, OFB8, ECB

Serpent

MCrypt

128 / 16, 192 / 24, 256 / 32

CBC, CTR, CFB, CFB8, OFB, OFB8, ECB

XTEA

MCrypt

128 / 16

CBC, CTR, CFB, CFB8, OFB, OFB8, ECB

RC2

MCrypt

8-1024 / 1-128

CBC, CTR, CFB, CFB8, OFB, OFB8, ECB

RC2

OpenSSL

8-1024 / 1-128

CBC, CFB, OFB, ECB

Camellia-128

OpenSSL

128 / 16

CBC, CFB, CFB8, OFB, ECB

Camellia-192

OpenSSL

192 / 24

CBC, CFB, CFB8, OFB, ECB

Camellia-256

OpenSSL

256 / 32

CBC, CFB, CFB8, OFB, ECB

Seed

OpenSSL

128 / 16

CBC, CFB, OFB, ECB

注意

如果您希望使用其中一種密碼,則必須將其名稱以小寫(xiě)形式傳遞到加密庫(kù)。

注意

您可能已經(jīng)注意到,所有AES cipers(和Rijndael-128)也列在便攜式密碼列表中。這是因?yàn)轵?qū)動(dòng)程序支持這些密碼的不同模式。此外,重要的是要注意AES-128和Rijndael-128實(shí)際上是相同的密碼,但只有在與128位密鑰一起使用時(shí)才是如此

注意

CAST-128 / CAST-5也列在便攜式和驅(qū)動(dòng)程序?qū)S妹艽a列表中。這是因?yàn)镺penSSL的實(shí)現(xiàn)似乎無(wú)法正確使用80位或更低的密鑰。

注意

RC2被列為支持MCrypt和OpenSSL。但是,這兩個(gè)驅(qū)動(dòng)程序都以不同的方式實(shí)現(xiàn)它們,并且它們不具有便攜性 可能值得注意的是,我們只發(fā)現(xiàn)了一個(gè)不明確的來(lái)源,確認(rèn)它是MCrypt沒(méi)有正確實(shí)施它。

加密模式

不同的加密模式具有不同的特征并用于不同的目的。有些比其他更強(qiáng),有些更快,有些提供額外的功能。我們不會(huì)深入討論這個(gè)問(wèn)題,我們會(huì)將其留給加密專家。下表是為我們更有經(jīng)驗(yàn)的用戶提供簡(jiǎn)要的信息參考。如果你是初學(xué)者,只需堅(jiān)持CBC模式 - 它被廣泛接受為強(qiáng)大和安全的一般用途。

模式名稱

CodeIgniter名稱

驅(qū)動(dòng)程序支持

附加信息

CBC

CBC

MCrypt,OpenSSL

一個(gè)安全的默認(rèn)選擇

CTR

CTR

MCrypt,OpenSSL

理論上認(rèn)為比CBC更好,但沒(méi)有那么廣泛

CFB

CFB

MCrypt,OpenSSL

N / A

CFB8

CFB8

MCrypt,OpenSSL

與CFB相同,但以8位模式運(yùn)行(不推薦)。

OFB

OFB

MCrypt,OpenSSL

N / A

OFB8

ofb8

mcrypt的

與OFB相同,但以8位模式運(yùn)行(不推薦)。

ECB

ecb

MCrypt,OpenSSL

忽略IV(不推薦)。

XTS

XTS

OpenSSL的

通常用于加密隨機(jī)存取數(shù)據(jù),如RAM或硬盤存儲(chǔ)。

Stream

stream

MCrypt,OpenSSL

這實(shí)際上不是一種模式,它只是說(shuō)正在使用流密碼。由于通用密碼+模式初始化過(guò)程而需要。

消息長(zhǎng)度

知道加密的字符串通常比原始的純文本字符串長(zhǎng)(取決于密碼)可能很重要。

這受到密碼算法本身,密文前置的IV和預(yù)先配置的HMAC認(rèn)證消息的影響。此外,加密的消息也是Base64編碼的,因此無(wú)論使用哪種字符集,都可以安全地進(jìn)行存儲(chǔ)和傳輸。

選擇數(shù)據(jù)存儲(chǔ)機(jī)制時(shí)請(qǐng)記住這些信息。例如,Cookie只能保存4K條信息。

配置庫(kù)

為了可用性,性能以及與我們以前的加密類相關(guān)的歷史原因,加密庫(kù)旨在重復(fù)使用相同的驅(qū)動(dòng)程序,加密密碼,模式和密鑰。

如上面的“默認(rèn)行為”部分所述,這意味著使用自動(dòng)檢測(cè)的驅(qū)動(dòng)程序(OpenSSL具有更高的優(yōu)先級(jí)),CBC模式下的AES-128鉗位和您的$config['encryption_key']值。

但是,如果您想更改該initialize()方法,則需要使用該方法。它接受一個(gè)參數(shù)的關(guān)聯(lián)數(shù)組,所有這些參數(shù)都是可選的:

選項(xiàng)

可能的值

司機(jī)

'mcrypt','openssl'

暗號(hào)

密碼名稱(請(qǐng)參閱支持的加密密碼和模式)

模式

加密模式(請(qǐng)參閱加密模式)

加密密鑰

例如,如果要在CTR模式下將加密算法和模式更改為AES-256,則應(yīng)該這樣做:

$this->encryption->initialize(        array(                'cipher' => 'aes-256',                'mode' => 'ctr',                'key' => '<a 32-character random string>'        ));

請(qǐng)注意,我們只提到要更改鉗位和模式,但我們還在示例中包含了一個(gè)鍵。如前所述,為使用的算法選擇適當(dāng)大小的密鑰非常重要。

如果出于某種原因,您也可以更改驅(qū)動(dòng)程序,但是希望使用MCrypt而不是OpenSSL:

// Switch to the MCrypt driver$this->encryption->initialize(array('driver' => 'mcrypt'));// Switch back to the OpenSSL driver$this->encryption->initialize(array('driver' => 'openssl'));

加密和解密數(shù)據(jù)

使用已配置的庫(kù)設(shè)置加密和解密數(shù)據(jù)很簡(jiǎn)單。就像將字符串傳遞給encrypt()和/或decrypt()方法一樣簡(jiǎn)單:

$plain_text = 'This is a plain-text message!';$ciphertext = $this->encryption->encrypt($plain_text);// Outputs: This is a plain-text message!echo $this->encryption->decrypt($ciphertext);

就是這樣!加密庫(kù)將完成整個(gè)過(guò)程所需的一切,以加密保護(hù)開(kāi)箱即用。你不需要擔(dān)心它。

重要

如果發(fā)生錯(cuò)誤,兩種方法都將返回FALSE。雖然encrypt()這只能意味著配置不正確,但您應(yīng)該始終檢查decrypt()生產(chǎn)代碼的返回值。

怎么運(yùn)行的

如果你必須知道這個(gè)過(guò)程是如何工作的,下面是發(fā)生的一切:

  • $this->encryption->encrypt($plain_text)

    1. 使用SHA-512摘要算法,通過(guò)HKDF 從您配置的encryption_key導(dǎo)出加密密鑰和HMAC密鑰。

    2. 生成隨機(jī)初始化向量(IV)。

    3. 使用上述導(dǎo)出的加密密鑰和IV,以CBC模式(或其他先前配置的密碼和模式)通過(guò)AES-128對(duì)數(shù)據(jù)進(jìn)行加密。

    4. 在結(jié)果密文上面加上IV。

    5. 對(duì)結(jié)果字符串進(jìn)行Base64編碼,以便可以安全地存儲(chǔ)或傳輸字符集,而不用擔(dān)心字符集。

    6. 使用派生的HMAC密鑰創(chuàng)建SHA-512 HMAC認(rèn)證消息,以確保數(shù)據(jù)完整性并將其預(yù)先添加到Base64字符串中。

  • $this->encryption->decrypt($ciphertext)

    1. 使用SHA-512摘要算法,通過(guò)HKDF 從您配置的encryption_key導(dǎo)出加密密鑰和HMAC密鑰。由于您配置的encryption_key是相同的,所以會(huì)產(chǎn)生與上述encrypt()方法相同的結(jié)果- 否則您將無(wú)法解密它。

    2. 檢查字符串是否足夠長(zhǎng),將HMAC從中分離出來(lái)并驗(yàn)證它是否正確(這樣做是為了防止定時(shí)攻擊)。如果任一檢查失敗,則返回FALSE。

    3. Base64解碼字符串。

    4. 將IV從密文中分離出來(lái),并使用該IV和派生的加密密鑰對(duì)所述密文進(jìn)行解密。

使用自定義參數(shù)

假設(shè)您必須與另一個(gè)無(wú)法控制的系統(tǒng)進(jìn)行交互,并使用其他方法來(lái)加密數(shù)據(jù)。這種方法肯定不符合上述順序,也可能不會(huì)使用所有步驟。

加密庫(kù)允許您更改其加密和解密過(guò)程的工作方式,以便您可以輕松地為這種情況量身定制解決方案。

注意

可以以這種方式使用庫(kù),而無(wú)需在配置文件中設(shè)置encryption_key。

你所要做的就是將一個(gè)帶有幾個(gè)參數(shù)的關(guān)聯(lián)數(shù)組傳遞給encrypt()or decrypt()方法。這是一個(gè)例子:

// Assume that we have $ciphertext, $key and $hmac_key// from on outside source$message = $this->encryption->decrypt(
        $ciphertext,        array(                'cipher' => 'blowfish',                'mode' => 'cbc',                'key' => $key,                'hmac_digest' => 'sha256',                'hmac_key' => $hmac_key        ));

在上面的例子中,我們使用CBC模式使用Blowfish密碼對(duì)消息進(jìn)行解密,并通過(guò)SHA-256 HMAC進(jìn)行驗(yàn)證。

重要

請(qǐng)注意,在此示例中使用了'key'和'hmac_key'。在使用自定義參數(shù)時(shí),加密和HMAC密鑰不會(huì)像庫(kù)的默認(rèn)行為那樣派生。

以下是可用選項(xiàng)的列表。

但是,除非您真的需要并且您知道自己在做什么,否則我們建議您不要更改加密過(guò)程,因?yàn)檫@可能會(huì)影響安全性,所以請(qǐng)謹(jǐn)慎操作。

選項(xiàng)

默認(rèn)值

強(qiáng)制/可選

描述

cipher

N / A

加密算法(請(qǐng)參閱支持的加密密碼和模式)。

模式

N / A

加密模式(請(qǐng)參閱加密模式)。

N / A

加密密鑰。

HMAC

真正

沒(méi)有

是否使用HMAC。布爾。如果設(shè)置為FALSE,則hmac_digest和hmac_key將被忽略。

hmac_digest

SHA512

沒(méi)有

HMAC消息摘要算法(請(qǐng)參閱支持的HMAC認(rèn)證算法)。

hmac_key

N / A

是的,除非hmac是FALSE

HMAC密鑰。

原始數(shù)據(jù)

沒(méi)有

密文是否應(yīng)該是原始的。布爾。如果設(shè)置為TRUE,則不會(huì)執(zhí)行Base64編碼和解碼,并且HMAC不會(huì)是十六進(jìn)制字符串。

重要

encrypt()decrypt()如果沒(méi)有提供強(qiáng)制性參數(shù)或提供的值不正確,將返回FALSE。這包括hmac_key,除非hmac設(shè)置為FALSE。

支持的HMAC認(rèn)證算法

對(duì)于HMAC消息認(rèn)證,加密庫(kù)支持使用SHA-2系列算法:

算法

原始長(zhǎng)度(字節(jié))

十六進(jìn)制編碼的長(zhǎng)度(字節(jié))

SHA512

64

128

SHA384

48

96

SHA256

32

64

SHA224

28

56

不包括其他常用算法(如MD5或SHA1)的原因是它們不再被認(rèn)為是安全的,因此我們不希望鼓勵(lì)它們的使用。如果您絕對(duì)需要使用它們,通過(guò)PHP的本地hash_hmac()函數(shù)很容易實(shí)現(xiàn)。

當(dāng)然,更強(qiáng)大的算法將來(lái)會(huì)隨著它們的出現(xiàn)而被廣泛使用。

類參考

class CI_Encryptioninitialize($params)

參數(shù):

$ params(array) - 配置參數(shù)

返回:

CI_加密實(shí)例(方法鏈接)

返回類型:

CI_Encryption

  • $ paramsarray) - 配置參數(shù)

Returns:  CI\_Encryption instance (method chaining)
Return type:  CI\_Encryption
初始化(配置)庫(kù)以使用不同的驅(qū)動(dòng)程序,密碼,模式或密鑰。

例:

$this->encryption->initialize(         array('mode' => 'ctr') );

有關(guān)詳細(xì)信息,請(qǐng)參閱配置庫(kù)部分。

encrypt($data[, $params = NULL])

參數(shù):

$ data(string) - 要加密$ params(數(shù)組)的數(shù)據(jù) - 可選參數(shù)

返回:

加密數(shù)據(jù)或失敗時(shí)為FALSE

返回類型:

  • $ datastring) - 要加密的數(shù)據(jù)

  • $ paramsarray) - 可選參數(shù)

返回:加密的數(shù)據(jù)或失敗時(shí)的FALSE
返回類型:字符串
加密輸入數(shù)據(jù)并返回其密文。

例:

$ciphertext = $this->encryption->encrypt('My secret message');

有關(guān)可選參數(shù)的信息,請(qǐng)參閱使用自定義參數(shù)部分。

decrypt($data[, $params = NULL])

參數(shù):

$ data(string) - 解密$ params(array)的數(shù)據(jù) - 可選參數(shù)

返回:

解密數(shù)據(jù)或失敗時(shí)失敗

返回類型:

  • $ datastring) - 要解密的數(shù)據(jù)

  • $ paramsarray) - 可選參數(shù)

返回:解密的數(shù)據(jù)或失敗時(shí)的FALSE
返回類型:字符串
解密輸入數(shù)據(jù)并以純文本形式返回。

例:

echo $this->encryption->decrypt($ciphertext);

有關(guān)可選參數(shù)的信息,請(qǐng)參閱使用自定義參數(shù)secrion。

create_key($length)

參數(shù):

$ length(int) - 輸出長(zhǎng)度

返回:

具有指定長(zhǎng)度的偽隨機(jī)加密密鑰,或失敗時(shí)為FALSE

返回類型:

  • $ lengthint) - 輸出長(zhǎng)度

返回:具有指定長(zhǎng)度的偽隨機(jī)加密密鑰,或失敗時(shí)為FALSE
返回類型:字符串
通過(guò)從操作系統(tǒng)的源中獲取隨機(jī)數(shù)據(jù)(即/ dev / urandom)創(chuàng)建加密密鑰。

hkdf($key[, $digest = 'sha512'[, $salt = NULL[, $length = NULL[, $info = '']]]])

參數(shù):

$ key(字符串) - 輸入密鑰材料$ digest(字符串) - 一個(gè)SHA-2家族摘要算法$ salt(string) - 可選salt $ length(int) - 可選輸出長(zhǎng)度$ info(字符串) - 可選上下文/具體信息

返回:

偽隨機(jī)密鑰或FALSE失敗

返回類型:

  • $ key字符串) - 輸入密鑰材料

  • $ digest字符串) - 一個(gè)SHA-2家族摘要算法

  • $salt字符串) - 可選鹽

  • $ lengthint) - 可選輸出長(zhǎng)度

  • $ info字符串) - 可選的上下文/特定于應(yīng)用程序的信息

返回:失敗時(shí)的偽隨機(jī)密鑰或FALSE
返回類型:字符串
從另一個(gè)推導(dǎo)出一個(gè)密鑰,推測(cè)是較弱的密鑰。

此方法在內(nèi)部用于從您配置的encryption_key派生加密和HMAC密鑰。

由于其他一般目的,它是公開(kāi)可用的。它在RFC 5869中有描述。

但是,與RFC 5869中的描述相反,此實(shí)現(xiàn)不支持SHA1。

例:

$hmac_key = $this->encryption->hkdf(         $key,         'sha512',         NULL,         NULL,         'authentication' );  // $hmac_key is a pseudo-random key with a length of 64 bytes

Previous article: Next article: