如何确保我创建文件?

时间:2017-04-07 06:24:47

标签: java digital-signature

有时我的Java程序需要从客户端计算机向远程计算机发送.dll或.so文件。是否有可能确保这个.dll(.so)文件是由我而不是某些黑客创建的?首先,我认为数字签名(java.security包)将是我的第一选择,但我无法在远程计算机中验证签名,因为Java可能在那里不可用。还有其他选择吗?

1 个答案:

答案 0 :(得分:2)

您要实现的目标是non repudiation。那就是:

  
      
  • 提供完整性证明(没有人修改过你的文件)和数据来源的服务(你是真正的创造者)   文件)。
  •   
  • 认证可以被证明是真实的,具有高度保证。
  •   

它不是关于Java或C#或语言本身,它是一个不依赖于您正在使用的编程语言的概念。 每种语言都有自己的类,库,机制......用于处理,有些语言比其他语言更好或更容易。

特别是在Java中,您可以开始查看here。您需要的步骤:

  • 生成一对密钥(仅执行一次)。
  • 签署您在客户端创建的每个文档(确保没有人可以更改它,没有人可以取得它的所有权,没有人可以拒绝该文件的所有权。)
  • 发送文件及其签名。
  • 在服务器端,根据提供的文档验证签名的有效性。

如果您只想检查文件是否未被修改,您可以使用简单的digest mecanism而无需签名,只需创建哈希(不需要创建证书,验证签名......)和稍后验证将工作,但要注意,只有哈希,你不能检查谁是文件的作者,只是文件没有被修改,因为它是哈希创建。