OA加密狗实现方式

   转自: http://hi.baidu.com/369554933/blog/item/5c07c10983e7c5cb3ac7637c.html

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种算

    法。第197198199共三个字节,是每种算法的因子,有16,777,215种变化。

    如果已经用DisableShare()禁止了共享,而发现有多台机器共用一个狗,

    DogConvert()失败。

public native int WriteDog();

    WriteDog()函数把数据存入微狗存储器中的用户区。WriteDog()DogAddr

    始的微狗用户区空间写入DogBytes个字节的数据,并把这些数据写入DogData

    指向的缓冲区。实际操作时将校验密码 DogPassword

    返回值为 0 表示成功,其它返回值表示写狗失败。

    * 注意:

    存贮区的最后4字节对变换算法有影响。第196字节选择算法,第197198199

    共三个字节,是每种算法的因子。因此,在程序中最好不要写存贮区的最后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中。

你可能感兴趣的:(加密,算法,存储,dll,import,login)