OpenSSL
扩展自 AbstractAES 实现 AesInterfaceOpenSSL 加密类
自 |
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