从表定义开始:
- UserID
- Fname
- Lname
- Email
- Password
- IV
更改如下:
选择最佳的加密密码和模式超出了此答案的范围,但是最终的选择会影响加密密钥和初始化向量的大小;在本文中,我们将使用AES-256-CBC,它的固定块大小为16个字节,密钥大小为16、24或32个字节。
一个好的加密密钥是从可靠的随机数生成器生成的二进制Blob。建议使用以下示例(> = 5.3):
$key_size = 32; // 256 bits
$encryption_key = openssl_random_pseudo_bytes($key_size, $strong);
// $strong will be true if the key is crypto safe
可以执行一次或多次(如果您希望创建一串加密密钥)。尽可能将它们保密。
初始化向量为CBC模式增加了加密的随机性。理想情况下,这些值只能使用一次(每个加密密钥技术上只能使用一次),因此,对行的任何部分进行更新都应重新生成它。
$iv_size = 16; // 128 bits
$iv = openssl_random_pseudo_bytes($iv_size, $strong);