我想提供一个网站服务,用户可以输入一些数据,例如15个字节的长名称“namedata”并获得一个密钥代码。 然后该代码可用于解锁游戏中的某些功能(由我提供),也可以使用namedata(想想一个名为“Lazgun of Peter”的自定义Lazgun,其中“Peter”是namedata)。
我的计划是使用非对称加密(使用私钥)加密namedata以及一些短签名(例如5字节“hello”)到密钥代码中(类似于AsdF-STaCK-0VEr-FL0W-13Abbx)。
然后用户在游戏中输入密钥代码,游戏然后用公钥将数据解码到namedata和签名中,然后用户获得“Lazgun of Peter”。
问题(或我的误解?)是典型的RSA加密只能用于加密密钥长度的数据,例如: 1024位,对于我的密钥代码来说太长了 - 没有用户想要输入150多个字符的代码(假设每个输入字符大约有6位数据)。
我应该使用什么样的加密来获得不错的安全性,以便只有我的网站服务才能生成“正确”的代码,但用户只需要输入有关namedata +签名大小的代码+一些小的开销?< / p>
注意:游戏可执行文件显然是公开可用的,并且可以从中读取存储在其中的任何加密密钥,但是不能更改可执行文件本身(复制保护)。
答案 0 :(得分:0)
我认为将所有商品数据存储在实际的密钥代码中是错误的。
创建一个独特的下载代码更有意义。输入后,客户端将连接到服务器,并通过安全连接下载实际的项目数据。
这有意义吗?