我的一个客户想要为他的每个客户提供一个 URL 以在系统中注册。这个 URL 将包含一个查询字符串参数,其中包含来自他的客户的一些数据(例如代码、电子邮件和姓名),使用 AES 和 CBC 加密,类似于此(IV 以粗体显示):
www.website.com/register?key= 44a74fb9fad889496e970c604e54fdab a367c6e5802252822ce071c35d7f108aea43e6de925cf93dd3d4772974621927a12702428b1d22d82b6f976acc7
当用户进入该页面时,它会对其进行解密并检查数据是否有效(例如,客户的代码在外部数据库中是否有效以及是否尚未注册),以便向他展示注册表单。
我见过一些人使用 HMAC 和 AES 来加密数据,但我不知道在这种情况下是否需要这样做。我的问题是:这足够安全吗?在使用 AES 加密数据以验证数据之前,我是否应该将 HMAC 之类的东西与明文一起使用?