public abstract void
MD5HMAC(
  int lFileID1, /*[ in]*/
  int lFileID2, /*[ in]*/
  byte pText[], /*[ in]*/
  int lTextLen, /*[ in]*/
  byte pDigest[] /*[out]*/
);这个是java的帮助文档
  C#可以直接调用这个函数
 但是实在不晓得参数怎么填
 对pText[],加密为什么需要两个文件??
 想了好久还是想不通
 服务器是怎么保存密匙的

解决方案 »

  1.   

    楼上能在分析一下吗?
           加密的内容好像是服务器产生的随机数,服务器那边使用密匙对这个随机数加密一次
           在客户端这边收到没加密的随机数,在usbkey中使用加密算法加密一次
      然后客户端把加密后的数字 发送到服务器,两个加密的是否相等,
     用这个来判断是合法用户
      

  2.   

    不详之处请谅解。
    你可以参考下这个业务流程:在发放Usbkey时会将它的编号与对应用户绑定,同时由服务器随机产生一个密钥,这个密钥同时保存在usbkey和服务器数据库中(与此usbkey编号对应);
    使用时,如你所说“服务器那边使用密匙对这个随机数加密一次, 在客户端这边收到没加密的随机数,在usbkey中使用加密算法加密一次  然后客户端把加密后的数字 发送到服务器,两个加密的是否相等”
    这里注意一点,服务器端要根据用户对应usbkey编号读取密钥,这样有助于增加安全性。