有时我的Java程序需要从客户端计算机向远程计算机发送.dll或.so文件。是否有可能确保这个.dll(.so)文件是由我而不是某些黑客创建的?首先,我认为数字签名(java.security包)将是我的第一选择,但我无法在远程计算机中验证签名,因为Java可能在那里不可用。还有其他选择吗?
答案 0 :(得分:2)
您要实现的目标是non repudiation。那就是:
- 提供完整性证明(没有人修改过你的文件)和数据来源的服务(你是真正的创造者) 文件)。
- 认证可以被证明是真实的,具有高度保证。
它不是关于Java或C#或语言本身,它是一个不依赖于您正在使用的编程语言的概念。 每种语言都有自己的类,库,机制......用于处理,有些语言比其他语言更好或更容易。
特别是在Java中,您可以开始查看here。您需要的步骤:
如果您只想检查文件是否未被修改,您可以使用简单的digest mecanism而无需签名,只需创建哈希(不需要创建证书,验证签名......)和稍后验证将工作,但要注意,只有哈希,你不能检查谁是文件的作者,只是文件没有被修改,因为它是哈希创建。