【问题标题】:How to generate key code containing encrypted data?如何生成包含加密数据的密钥代码?
【发布时间】: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


    【解决方案1】:

    我认为将所有项目数据存储在实际密钥代码中是错误的想法。

    创建一个唯一的下载代码更有意义。输入后,客户端将连接到服务器,并通过安全连接下载实际项目数据。

    这有意义吗?

    【讨论】:

    • 是的,应该可以,但这意味着基础设施需要付出更多努力——客户端(游戏)需要与某些服务器进行通信。不幸的是,我必须保持预算很小,而且我也不对网站部分负责。
    • 好的,但如果它是低预算的,RSA 似乎真的有点矫枉过正。也许您可以使用一些简单的密码,例如 Vigenère? en.wikipedia.org/wiki/Vigen%C3%A8re_cipher
    • ...祈祷游戏不要流行:)
    • 我宁愿祈祷它变得非常流行,我重做那个系统。 ;) 但是考虑到您的回答已经有所帮助,我想我只需要更改传递密钥代码的方式:与其让用户输入某些密钥,不如通过邮件给他一些文件(或者让他粘贴很长代码),因此密钥代码的长度不再是问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2010-12-02
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多