如何通过加密锁实现单机程序的保护

  • 需求

防止软件被盗版或随意复制使用,需要实现软件和加密锁的绑定,有锁的情况下能正确执行程序,无锁不能执行。

  • 应用
  1. 将程序内重要参数(如string和char[]或byte[])或文件数据写入锁内,程序需要使用这些数据时,从锁内读取后供程序使用;
  2. 将程序中部分源代码移植到锁内执行。
  • 使用方法

方法1:

  1. 将程序中的参数或数据直接写入(也可加密后写入)锁内;
  2. 程序运行时将参数或数据读出后(也可读后解密)使用;

方法2:

  1. 通过keil编译器将预移植到锁内的代码使用C语言编译成的bin文件下载到锁内;
  2. 锁外程序调用链接库中执行锁内程序的接口来传入传出参数;
  3. 锁外程序使用锁内程序传出的结果继续执行。

 

  • 示意图

  • 满足的产品型号

飞天诚信 Rockey-ARM、Rockey5时钟锁、Rockey3、Rockey6smart Plus

提示1加密的主要目的是将原本程序的部分关键数据放入锁内或代码移到锁中运行,如果调用加密锁这部分代码被跳过,程序将会缺少一部分关键数据或代码,从而没有办法正常运行。由于加密锁的运行速度无法与PC相比,所以只需要移植一部分代码到锁内即可,以保证不影响运行速度。

提示2一般不要这样做:即获得加密锁内存放的数据或锁内程序运行的结果,然后在PC端对其进行比较判断来决定程序是否可以继续运行,因为这样很容易将比较直接跳过。最合适的方法是将加密锁内的数据或锁内程序运行结果用于其下继续运行的代码中,即这些数据或结果在下面继续运行的代码中将会继续用到,因为它本身是程序中的一部分,这样就可以达到,存在指定的加密锁,程序将会正常运行,不存在指定加密锁或加密部分被跳过,程序将不能正常运行,从而达到不被盗版的目的。

提示3公私钥对是非对称加密算法中加解密操作的钥匙,公钥与私钥必须一一对应才能做到公钥加密后的密文使用私钥能够解密。如果公私钥不对应,密文还原明文将会失败。

提示4发锁程序客户可以根据功能的需要来调用库文件自行开发,也可以使用开发包中提供的标准批量初始化加密锁的工具来完成。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页