Encryption 保护Java源代码不被访问

Encryption 保护Java源代码不被访问,encryption,Encryption,上周,我不得不为家庭作业创建一个小GUI。 我的同学都没有这样做。他们偷了我的一个,我们不得不上传它,然后他们又上传了一次。当我告诉老师这都是我的工作时,他不相信我 所以我想在里面放一个无用的方法或者其他东西,并证明我对它进行了编码。我想到了加密。到目前为止,我最好的想法是: String key = ("ZGV2ZWxvcGVkIGJ5IFdhckdvZE5U"); //My proof in base64 你能想出其他更好的方法吗?如果你给老师提供源代码,那么只需在你的一个班级文件中添加一

上周,我不得不为家庭作业创建一个小GUI。 我的同学都没有这样做。他们偷了我的一个,我们不得不上传它,然后他们又上传了一次。当我告诉老师这都是我的工作时,他不相信我

所以我想在里面放一个无用的方法或者其他东西,并证明我对它进行了编码。我想到了加密。到目前为止,我最好的想法是:

String key = ("ZGV2ZWxvcGVkIGJ5IFdhckdvZE5U"); //My proof in base64

你能想出其他更好的方法吗?

如果你给老师提供源代码,那么只需在你的一个班级文件中添加一个
serialVersionUID
,该文件是你名字的加密版本。你可以自己给老师解密

这对其他人没有任何意义,只是对你而言。你可以说这是一个生成的代码,如果他们偷了它,可能根本不会修改它


如果你想以一种时尚的方式来做,你可以使用,如果你找到产生你名字的随机种子的话那将是你的号码,无论它出现在哪里,都可以证明是你写的密码。

如果你的同学从上传站点偷走了你的密码,我会加密你的作业,并将密钥通过电子邮件发送给老师。如果您想变得复杂,或者像带有密码的Zip文件这样简单,您可以使用PGP来实现这一点

编辑: PGP允许您在不泄露密钥的情况下进行加密/签名,但您无法用密码打败Zip文件的简单性,因此只需在每次家庭作业中选择一个新密钥即可。简洁中的美:)

什么东西被偷了

  • 消息来源?您可以在其中放入随机字符串(但可以更改)。你也可以尝试添加一个只有你知道的特殊行为(一个特殊的按键会改变颜色行),然后你可以问老师“其他人知道这个特殊组合吗?”。最好的办法是使程序崩溃。如果在5分钟的活动后,档案中没有一个空的无用文件,你的同学会懒得等这么长时间

  • 二进制文件?只需比较每节课的校验和就足够了(你的同学懒得重写课堂文件)

使用分布式(=独立)版本控制系统,如git。可能也有用


有你的名字和日期的历史版本可能足够令人信服。

这发生在我的一对学生身上,他们住在同一套公寓里。有人从桌上抽屉里的磁盘上偷走了源代码

窃贼稍微修改了被盗的来源,这样就不会很明显了。我注意到代码的相似性,并在编辑器中检查了源代码。有些线条的末端有额外的空格。每个学生的源都有相同数量的额外空格

您可以利用此漏洞对信息进行编码,而不使其可见。您可以在某些行的末尾用空格对您的姓名首字母或学生ID进行编码

小偷可能会对可见代码进行表面更改,但可能会丢失不可见的字符

编辑:

再考虑一下,你可以使用空格和制表符作为摩尔斯电码的DIT和DAH,并将你的名字放在多行的末尾。小偷可以删除、重新排序或重新键入一些行,而不会破坏您的身份

编辑2:


“空白隐写术”是用空白隐藏信息的术语。谷歌搜索发现它可以追溯到90年代,使用哈夫曼编码而不是莫尔斯电码。

很久以前我和你有同样的问题。我们有Windows 2000机器,并将文件上传到一个新颖的网络文件夹,每个人都可以看到。我甚至用了几个技巧打败了最好的小偷:空白水印;元数据水印;不寻常的性格;可信时间戳;作案手法。这是按顺序排列的

空白水印: 这是我对水印的原始贡献。我需要一个在文本文件中工作的不可见水印。我想出的诀窍是在编程语句(或段落)之间加入特定的空白模式。文件在他们看来是一样的:一些编程语句和换行符。仔细选择文本将显示空白。每个空行将包含一定数量的空格,这显然不是随机或偶然的。(例17)在实践中,这种方法对我有效,因为他们无法理解我在文档中嵌入了什么

元数据水印 这是更改文件元数据以包含信息的地方。您可以将您的姓名、哈希等嵌入文件的不可见部分,尤其是EXE。在NT时代,交替数据流很流行

非同寻常的人物 我把这个扔进去只是为了好玩。一个古老的IRC模仿技巧是用看起来与另一个人名字相似的字母来命名。您可以在水印中使用它。Windows中的字符映射将为您提供许多看起来与源代码中可能使用的字母或数字相似但不是的不寻常字符。这些出现在别人作品中某个特定的地方并不是偶然的

可信时间戳 简而言之,您将一个文件(或其散列)发送给第三方,然后第三方将时间戳附加到该文件,并使用私钥对其进行签名。任何想要证明您何时创建文档的人都可以到受信任的第三方(通常是网站)验证您的创建时间证明。这些证据已被用于知识产权纠纷的法庭案件,因此它们是一种非常有力的证据形式。它们是完成你所寻求的证据的标准方式。(我先把其他的也包括进来,它们很简单,更有趣,可能会有用。)

可能有助于您的讲师了解您的证据,外部链接部分有许多提供者,包括免费提供者。我会在免费的测试文件中运行几天,然后再将它们用于重要的用途

Hope your lecturer will read this thread before his next tutorial :D