上周,我不得不为作业创建一个小GUI。我的同学都没有这样做。他们从我们必须上传的地方偷走了我的那一部,然后又以自己的名字再次上传了。当我告诉老师这是我的全部工作时,他不相信我。
因此,我想到了将无用的方法或某些东西放入我编码过的证明中。我想到了加密。到目前为止,我最好的主意是:
String key = ("ZGV2ZWxvcGVkIGJ5IFdhckdvZE5U"); //My proof in base64
您能想到其他更好的方法吗?
上周,我不得不为作业创建一个小GUI。我的同学都没有这样做。他们从我们必须上传的地方偷走了我的那一部,然后又以自己的名字再次上传了。当我告诉老师这是我的全部工作时,他不相信我。
因此,我想到了将无用的方法或某些东西放入我编码过的证明中。我想到了加密。到目前为止,我最好的主意是:
String key = ("ZGV2ZWxvcGVkIGJ5IFdhckdvZE5U"); //My proof in base64
您能想到其他更好的方法吗?
Answers:
我很久以前就遇到过同样的问题。我们拥有Windows 2000计算机,并将文件上传到每个人都可以看到的Novel网络文件夹中。我使用了几种技巧来击败最好的盗贼:空白水印;元数据水印;不寻常的字符;值得信赖的时间戳记;作案手法 这是他们的顺序。
这是我对水印的最初贡献。我需要在文本文件中可用的不可见水印。我想到的技巧是在编程语句(或段落)之间放入特定的空格模式。在他们看来,该文件是相同的:一些编程语句和换行符。仔细选择文本将显示空白。每个空行将包含一定数量的空格,这些空格显然不是随机的或偶然的。(例如17)在实践中,这种方法为我完成了工作,因为他们无法弄清楚我在文档中嵌入的内容。
在这里,您可以更改文件的元数据以包含信息。您可以将名称,哈希等嵌入文件的看不见的部分,尤其是EXE。在新台币时代,备用数据流很受欢迎。
我将把它扔出去只是为了踢。一个古老的IRC模仿技巧是用看起来与另一个人的名字相似的字母来命名。您可以在水印中使用它。Windows中的“字符映射”将为您提供许多看起来与您在源代码中可能使用的字母或数字相似但不相似的不寻常字符。这些出现在别人工作的特定位置并不是偶然的。
简而言之,您可以将文件(或其哈希)发送给第三方,然后由后者附加时间戳并使用私钥对其进行签名。任何想证明您何时创建文档的人都可以去受信任的第三方(通常是网站)来验证您的创建时间证明。这些已在法庭案件中用于知识产权纠纷,因此它们是非常有力的证据。它们是完成您要寻找的证明的标准方法。(我首先将其他人包括在其中,他们很容易,他们更有趣,并且可能会工作。)
这篇Wikipedia文章可能会帮助您的讲师理解您的证据,并且外部链接部分提供了很多提供商,包括免费的提供商。我会先通过免费文件运行测试文件几天,然后再将它们用于重要的事情。
那么,您做了一些事情,现在有了证明对吗?不,学生们仍然可以说您从他们那里偷走了这个主意或其他胡说八道。我的解决方法是私下与教员建立一种或多种方法。我告诉讲师寻找空白,寻找某些符号等,但是从不告诉其他人水印是什么。如果讲师同意对您的简单技巧保密,那么他们可能会继续正常工作。如果没有,总是有值得信赖的时间戳。;)
如果您的同学从上传站点上窃取了您的代码,我会加密您的作业,并将密钥通过电子邮件发送给老师。如果您想很复杂,或者像带密码的Zip文件一样简单,可以使用PGP进行。
编辑:PGP将允许您在不显示密钥的情况下进行加密/签名,但是您无法用密码击败Zip文件的简洁性,因此只需在每次家庭作业中选择一个新密钥即可。简单的美丽:)
如果您要将源代码提供给老师,则只需serialVersionUID
在您的一个班级文件中添加一个名称的加密版本即可。您可以自己将其解密给老师。
这对其他人没有任何意义,仅对您而言。您可以说这是一个生成的代码,如果他们正在窃取它,可能根本不会去修改它。
如果您想以一种时尚的方式做到这一点,可以使用此技巧,如果您发现产生您名字的随机种子。:)那将是您的电话号码,无论出现在哪里,都将证明是您编写该代码。
//written by WarGodNT
为//Written by ImaCheata
。)许多人甚至都不知道svUID可以破坏它们。即使其中一些人很聪明;如果大多数班级都在作弊,那么几乎肯定会被抓住。至少应该足以说服老师取消对他的程序的限制。
这是我一对住在同一公寓的学生发生的。一个人从办公桌抽屉里的磁盘上窃取了源代码。
小偷对偷来的货源做了些微改动,以使其不明显。无论如何,我注意到了代码的相似性,并在编辑器中检查了源代码。有些行的末端有多余的空格。每个学生的来源都有相同数量的额外空间。
您可以利用它来编码信息而不使其可见。您可以在某些行的末尾用空格对姓名缩写或学生证进行编码。
小偷可能会对可见代码进行外观上的更改,但可能会错过不可见字符。
编辑:
再想一想,您可以使用空格和制表符作为莫尔斯电码的字符和数字,并将您的名字放在多行的末尾。小偷可以删除,重新排序或重新键入某些行,而不会破坏您的身份。
编辑2:
“空白隐写术”是用于在空白中隐藏消息的术语。谷歌搜索显示了可以追溯到90年代的这种开放源代码实现,使用的是霍夫曼编码而不是莫尔斯电码。
使用分布式(=独立)版本控制系统,例如git。可能也有用。
带有您的姓名和日期的版本历史可能会令人信服。
如果您将文件上传到具有密码加密功能的.zip中,那么任何人都可以通过下载.zip文件来破解密码,并让他们的cpu对这个作弊小偷们进行一百万次查询。不幸的是,有些确实很容易做到。
其他学生可以在共享服务器上查看您的源。老师确实应该给您您自己的密码加密目录,以供上载。只需添加子域即可轻松完成。但是也许老师可以允许您将文件上传到您自己的服务器上,以供他在此处访问它们。
还可以对脚本进行混淆处理,使其具有document.write('此页面由xxxxx编写),从而迫使复制您作品的任何人都无法删除信用,除非他们先对其进行解密。但是真正的答案是,您的学校需要为每个学生提供自己的受密码保护的目录。