• 【原创】国网远程加密机认证软件开发1(相关说明)


    由于前段时间做校表软件被领导的计划打断了,估计后续会补上。自己找了好久都没有国网远程加密机的资料,现在就把自己开发的过程附上吧,也便于以后如果有需要的可以参考下。

    ——————————————————————————————————————————————————————————————————————————————————

    1.需要用到的动态库说明

    虽然电科院给了一份函数说明文档,但是讲的太模糊了,也没有一个DEMO,所以一切都要自己来摸索。

    我们认证过程用到的函数库为SJJ1009forformalchip.dll(其中具体的函数请自行查阅相关文档)

    。打开设备,连接加密机

    [DllImport("SJJ1009forformalchip.dll")]
            public static extern int ConnectDevice(string putIp, string putPortk, string putCTime);

    putIP:加密机IP

    putPort:加密机端口

    putCTime:最大超时时间

    错误代码:17 未插入USBKey或密码机未开机(可以遇到自行整理)

    。认证函数

    [DllImport("SJJ1009forformalchip.dll")]
            public static extern int Meter_Formal_IdentityAuthentication(int Flag, string PutDiv, System.Text.StringBuilder OutRand, System.Text.StringBuilder OutEndata);

    Flag:密钥类型

    PutDiv:8字节分散因子。0000+表号

    OutRand:随机数1

    OutEndData:密文1

    注意:随机数1和密文1是加密机返回数据

    认真过程主要就是这两个函数,如果以后涉及到远程控制的话,会在后续添加的。

    2.认证过程

    (1)连接加密机

    (2)取8字节的分散因子,国网统一规定为0000+表号,不过大家也可以自行设置

    (3)利用身份认证指令取得随机数1和密文1

    (4)将随机数1,密文,分散因子和操作者代码、电表密码、身份认证指令通过串口发送给电表

    (5)电表将返回4字节的随机数2和8字节的ESAM序列号

    到此,整个身份认证的过程就完成了。

    相对于老国网的认证,现在的认证过程相对繁琐了,不过大致原理是一样的,可以参考l另外两篇篇比较全面的博文

    (原创)-智能电能表SM1算法开发套件(主站接口) 基础资料篇

    (原创)-智能电能表SM1算法开发套件(主站接口) 开发篇

    远程的加密机需要用到比较简单的socket,不会的可以自行补脑,百度到处都是参考。

  • 相关阅读:
    python IDE比较与推荐
    一个平庸程序员的想法
    [转载]Malcolm的新书:Outliers
    程序员的编辑器——VIM
    Blender网络资源
    普通人的编辑利器——Vim
    易学易用的Windows PowerShell
    分区表的修复(转)
    云南电信DNS服务器地址
    滇南本草(上)
  • 原文地址:https://www.cnblogs.com/dranched/p/3758785.html
Copyright © 2020-2023  润新知