我正在开发一个创建“许可证”文件的程序。此文件应为二进制文件,包含名称,今天的日期,警告日期,到期日期以及度量标准或英制度量单位的偏好,并且基本上授权程序在到期日期之前工作,在此之前警告日期通知用户许可证将过期。要充分利用此功能,必须无法轻易编辑日期,以防止人们将日期设置为他们想要的任何内容并保留程序。
当我使用“write”方法时,我现在将每个字段从String或Integer写入BinaryWriter类认为应该写入的内容。我一直在尝试Big和Little Endian编码之间的区别,它可以在表单中选择。
[code redacted]
如果输入的名称没有空格,则文件看起来有点不可读,但还不够。使用Big Endian,大部分到期日仍然显示;与Little Endian一起,其他两个日期大多是可见的。但是,在输入的名称中使用空格可以更改输出文本的格式,使所有字符都被空格分隔,因此非常容易更改。我很抱歉我实际上无法向您展示文件的样子。
是否有更好/更可接受的存储方式?我希望许可证文件能够与现有的FORTRAN程序一起使用,其中我已经详细阅读了一般结构中的未格式化文件,但是反向工程这听起来有点困难,因为我读过并且我的雇主提出重写如果需要,FORTRAN文件接受这个新的许可证创建程序。
答案 0 :(得分:1)
以文本形式创建许可证结构,包含您需要的任何数据(XML是一种方便的格式)。
使用公钥加密(使用您的私钥)加密。
在您的应用中嵌入公钥。使用公钥解密许可证文件。根据需要处理它。
容易!
答案 1 :(得分:0)
我见过的大多数许可证管理器都倾向于以纯文本显示许可证信息,然后是程序检查的校验和代码,很可能是数据与其他随机内容混合。这提供了具有人类可读许可文件的好处,同时难以更改。
请注意,像这样的许可证管理员会使临时复制变得困难,但是有人决定在没有许可证的情况下运行您的程序仍然可以使用反汇编程序破解它并且有一段时间。
答案 2 :(得分:0)
最安全的方法可能是加密许可证文件,让使用许可证的程序解密文件并在必要时显示信息。