情况:
我想提供一个网站服务,用户可以在其中输入一些数据,例如 15 字节长的名称“namedata”并获取密钥代码。然后,该代码可用于解锁游戏中的某些功能(由我提供),还可以使用名称数据(想想一个名为“Lazgun of Peter”的自定义 Lazgun,其中“Peter”是名称数据)。
我的计划是使用非对称加密(使用私钥)将名称数据与一些短签名(例如 5 字节“hello”)一起加密到密钥代码中(类似于 AsdF-STaCK-0VEr-FL0W-13Abbx)。
然后用户在游戏中输入密钥代码,然后游戏使用公钥将数据解码为 namedata 和签名,瞧,用户得到了它的“Lazgun of Peter”。
问题:
问题(或我的误解?)是典型的 RSA 加密只能用于加密密钥长度的数据,例如 1024 位,这对于我的密钥代码来说太长了 - 没有用户想要输入 150 的代码+ 字符(假设每个输入的字符大约有 6 位数据)。
问题:
我应该使用什么样的加密来获得不错的安全性,这样只有我的网站服务才能生成“正确”的代码,但用户只需要输入大约 namedata 大小的代码 + 签名 + 一些小开销?
注意:游戏可执行文件显然是公开可用的,并且可以从中读取存储在其中的任何加密密钥,但可执行文件本身不能更改(复制保护)。