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