我必须在MySQL列(MediumBLOB)中存储一些信息(Text)。它有效,但我不确定这种方式是否足够安全。
请不要怀疑加密密钥是随机的。它按设计工作:)
$encryptionKeyRandom = str_random(12);
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
$encrypted_string = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $encryptionKeyRandom, $input['item'], MCRYPT_MODE_ECB, $iv);
$input['item'] = bin2hex($encrypted_string);
// Save to DB
欢迎提出改进安全性/加密性的建议。
mcrypt已经过时了,而且已经有好几年没有被使用了。我并不是说它不可用,只是有更快的替代品可用,因为坦率地说,mcrypt很慢。
openssl是一个更好的替代方案,其工作原理与mcrypt非常相似,但在我看来,最好的库是sodium。然而,php 7中还没有钠,这可能会使其达到7.1。但应该用于其他版本。
https://www.virendrachandak.com/techtalk/encryption-using-php-openssl/帮助我从mcrypt迁移到openssl,看看吧。