AesInterface
AES 加密适配器的接口
自 |
4.0.0 |
---|---|
包 |
Joomla CMS |
方法
解密
解密字符串。返回原始二进制明文。
decrypt( cipherText, key) :
$ciphertext 必须以 IV 后跟密文开头,即使对于 EBC 数据也是如此(由于 EBC 模式中没有 IV 的概念,因此第一个数据块会在 EBC 模式中被丢弃)。
警告:返回的明文在加密期间会被填充到算法的块大小。建议您在解密时将字符串修剪到原始明文的长度。虽然 rtrim($decrypted, "\0") 看起来很有吸引力,但它不是处理二进制数据的正确方法(零字节实际上可能是您明文的一部分,而不仅仅是填充!)。
参数
- 密文
string
要加密的密文- 密钥
string
原始二进制密钥(如果其大小与块大小不同,则会被填充零或被截断)
响应
string
原始未加密的二进制字符串。
加密
加密字符串。返回原始二进制密文。
encrypt( plainText, key, null|string iv = null) :
警告:明文会被填充到算法的块大小。建议您存储明文的大小,并在解密时将字符串修剪到该长度。
参数
- 明文
string
要加密的明文- 密钥
string
原始二进制密钥(如果其大小与块大小不同,则会被填充零或被截断)- IV
null|string
初始化向量(用于 CBC 模式算法)
响应
string
原始加密的二进制字符串。
获取块大小
返回以字节为单位的加密块大小
getBlockSize() :
响应
int
是否支持
此适配器是否受支持?
isSupported() :
响应
bool
设置加密模式
设置 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 中使用不同的强度会导致不同且不兼容的密文。
TL;DR:始终使用 $strength = 128!
参数
- 模式
string
在 CBC(推荐)或 ECB 之间选择- 强度
int
密钥的位强度(128、192 或 256 位)。已弃用。阅读上面的说明。
响应
混合