用PHP对MySQL列中的文本进行加密/解密


Encrypt / Decrypt Text in MySQL Column with PHP

我必须在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,看看吧。