OpenSSL

扩展自 AbstractAES 实现 AesInterface

OpenSSL 加密类

4.0.0

Joomla CMS

方法

__construct

此类的构造函数

__construct() : 

响应

混合

decrypt

解密字符串。返回原始二进制明文。

decrypt( cipherText,  key) : 

$ciphertext 必须以 IV 后跟密文开头,即使对于 EBC 数据也是如此(在 EBC 模式下,第一块数据会被丢弃,因为 EBC 模式中没有 IV 的概念)。

警告:在加密期间,返回的明文会用零填充到算法的块大小。建议在解密后将字符串修剪到原始明文的长度。虽然 rtrim($decrypted, "\0") 看起来很有吸引力,但它不是处理二进制数据的正确方法(零字节实际上可能是您明文的一部分,而不仅仅是填充!)。

参数

cipherText

string要加密的密文

key

string原始二进制密钥(如果其大小与块大小不同,则将用零填充或截断)

响应

string原始未加密的二进制字符串。

encrypt

加密字符串。返回原始二进制密文。

encrypt( plainText,  key, null|string iv = null) : 

警告:明文会用零填充到算法的块大小。建议存储明文的大小并在解密后将字符串修剪到该长度。

参数

plainText

string要加密的明文

key

string原始二进制密钥(如果其大小与块大小不同,则将用零填充或截断)

iv

null|string初始化向量(用于 CBC 模式算法)

响应

string原始加密的二进制字符串。

getBlockSize

返回以字节为单位的加密块大小

getBlockSize() : 

响应

int

getZeroPadding

返回要追加到字符串的空字节,以便将其用零填充到指定的块大小

getZeroPadding( string,  blockSize) : 
继承

参数

string

string将用零填充的二进制字符串

blockSize

int块大小

响应

string要追加到字符串的零字节,以将其用零填充到 $blockSize

isSupported

此适配器是否受支持?

isSupported() : 

响应

bool

resizeKey

修剪或用零填充密钥/IV

resizeKey( key,  size) : null|string
继承

参数

key

string要处理的密钥或 IV

size

int当前使用算法的块大小

响应

null|string如果 $key 为 null,则为 null,否则为处理后的 $size 字节长度的字符串

setEncryptionMode

设置 AES 加密模式。

setEncryptionMode( mode = 'cbc',  strength = 128) : 

警告:强度已弃用,因为它在 MCrypt 和 OpenSSL 中具有不同的效果。MCrypt 在 2003 年之前就被放弃了,当时 Rijndael-128 算法还不是高级加密标准 (AES)。MCrypt 还提供了具有不同块大小的 Rijndael-192 和 Rijndael-256 算法。这些在 AES 中未使用。但是,OpenSSL 正确地实现了 AES。它始终使用 128 位(16 字节)块。192 和 256 位强度指的是密钥大小,而不是块大小。因此,在 MCrypt 和 OpenSSL 中使用不同的强度会导致不同的且不兼容的密文。

总之:始终使用 $strength = 128!

参数

mode

string在 CBC(推荐)或 ECB 之间选择

strength

int密钥的位强度(128、192 或 256 位)。已弃用。请阅读上面的说明。

响应

void

属性

openSSLOptions

加密/解密的 OpenSSL 选项

类型

int

method

要使用的加密方法

类型

string