尽管我必须这样做,但使用相同的初始向量进行加密是否被认为是一种不好的做法

问题描述

我正在制作一个用户国家 ID 作为列的应用程序,确保此数据是敏感的,因此必须对其进行加密,因此我使用节点 JS 加密库进行加密和使用不推荐使用 createCipheriv 方法将其加密为 createCipher。让我想要使 初始向量 保持不变的原因是我希望用户使用他们的国家 ID 进行注册,首先将搜索该国家 ID 是否在我的数据库中可用,然后允许如果可用,他们注册这里的要点是我需要在数据库搜索 national id 所以我不能向它添加初始向量,因为它不可能找到,所以这可以吗因为我必须这样做,或者有更好的方法吗?

注意:首先使用 createCipheriv 的目的是我以后可能需要对其进行解密。

解决方法

是的,你真的不应该重复使用 IV。您的解决方案表明 id 是敏感的,因此不应是 IV。您可以将 IV 存储为另一列吗?它不需要加密。 IV 必须是唯一的,这是唯一的要求。您可以使用递增值或 GUID,类似的东西保证唯一