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