我在java中制作二十一点游戏, 并且我不确定每次是否应该将卡片的图像从服务器发送到客户端,或者只是将所有图像文件放在客户端中并使用他们的名字。
一方面发送图像可能会使编程变得更加混乱,使程序运行速度稍慢, 但另一方面,我不想让客户能够搞清楚他身边的事情。 这段代码不适合生产,但重要的是要注重安全性和稳定性。
我很高兴听到您的意见,谢谢:)
答案 0 :(得分:0)
你走在正确的轨道上。如果您发送图像,它将减慢您的应用程序并使代码更复杂。如果从本地存储库加载图像,用户可以用自己的图像替换这些文件。
如果您专注于安全性,可以将文件放在本地并加密。用没有密钥正确解密的图像替换文件将是困难的(读取:不可能)。然而,攻击者可以切换卡片(即通过更改文件名替换一个带有10的ace)。为了避免这种情况,不只是加密消息加密元组(卡值,图像)。这样,您可以在解密后验证该值是您所期望的值。鉴于没有人知道用于加密/解密的密钥,这一切都很好。因此,您需要隐藏密钥(通过网络发送密钥,将其隐藏在内存中等)。此外,加密和解密确实需要时间,因此它会降低您的应用程序速度。这不会像通过网络发送图像那样明显,但它会在那里。
如果沿着发送图像的路径走下去,仍然可能存在攻击向量。攻击者可以拦截网络包并向您的客户端发送不同的图像。为避免这种情况,您需要使用加密协议。许多常见协议都有加密选项。