OA加密狗实现方式: 第一步:建立加密狗DOGJava.dll(此加密狗驱动限金网OA系统中使用)驱动程序,放到系统系统盘符的winnt/system32下。 第二步:在登陆程序com.cmn.oa.pub.action.LoginAction类的login()方法中加入检查是否有存在狗的代码: 引入import com.cmn.oa.pub.dogcheck.GSDOG包; GSDOG dogCheck = new GSDOG();
if(dogCheck.DogCheck()!=0){ //System.out.println("NO DOG"); } else{ //System.out.println("Find DOG"); }
微狗DLL调用示例过程说明:
public native int DogCheck(); DogCheck( ) 函数检测微狗是否存在。 返回值为 0 表示成功,其它返回值表示检测失败。
public native int DogConvert(); DogConvert( )函数把一个字符串或一个数据发送给微狗,并接收从微狗返回 的变换结果。发送的数据由DogData指定,字节长度由DogBytes指定, 变换后的32位数据存入DogResult; 返回值为 0 表示变换成功,其它返回值表示变换失败。
* 注意: 存贮区的最后4字节对变换算法有影响。第196字节选择算法,因此共有256种算 法。第197,198,199共三个字节,是每种算法的因子,有16,777,215种变化。
如果已经用DisableShare()禁止了共享,而发现有多台机器共用一个狗, DogConvert()失败。
public native int WriteDog(); WriteDog()函数把数据存入微狗存储器中的用户区。WriteDog()从DogAddr开 始的微狗用户区空间写入DogBytes个字节的数据,并把这些数据写入DogData 指向的缓冲区。实际操作时将校验密码 DogPassword。 返回值为 0 表示成功,其它返回值表示写狗失败。
* 注意: 存贮区的最后4字节对变换算法有影响。第196字节选择算法,第197,198,199 共三个字节,是每种算法的因子。因此,在程序中最好不要写存贮区的最后4字 节,除非您确实了解这样做对变换结果影响。
如果已经用 DisableShare () 禁止了共享,而发现有多台机器共用一个狗, WriteDog()失败。
public native int ReadDog(); ReadDog()函数读取微狗存储器中用户区的数据,用户区的数据可由软件开 发商写入。ReadDog()从DogAddr开始的微狗用户区空间读取DogBytes个字 节的数据,实际操作时将校验密码DogPassword。 返回值为 0 表示成功,其它返回值表示读狗失败。
如果已经用 DisableShare () 禁止了共享,而发现有多台机器共用一个狗, ReadDog()失败。
public native int DisableShare(); DisableShare()函数用来禁止多台计算机通过并口共享器共享一个微狗。并口 共享器是一个第三方提供的设备,这种设备可以实现多台计算机共享一个微狗。 这样,一套加密软件就可以在多台计算机上运行了。微狗出厂时的缺省方式是 允许共享,但可以用 DisableShare 函数禁止共享。
DisableShare 只影响 ReadDog, WriteDog, DogConvert。开发商如果想禁止共 享,只需要在调用 ReadDog, WriteDog, DogConvert之前先调用一次 DisableShare 即可。
* 注意: 请不要多次调用 DisableShare 函数,一个程序应当只调用一次 DisableShare 。
public native int GetCurrentNo(); 读取微狗的流水号。每个狗都有一个唯一的流水号。即使是同号狗也一样。 同号狗是指系列号相同,可互换使用。但流水号唯一,为了让开发商有管理加密软 件的辅助手段。 流水号为四字节长,得到的流水号放入DogResult中。 |