zoukankan      html  css  js  c++  java
  • 【原创】国网远程加密机认证软件开发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,不会的可以自行补脑,百度到处都是参考。

  • 相关阅读:
    使用 Web 服务 为 ECS Linux 实例配置网站及绑定域名
    部署 LAMP
    PHP与MYSQL事务处理
    centos6 yum 安装nginx 不成功解决办法
    5.5版本以上”No input file specified“问题解决
    php访问url的四种方式
    mysql索引总结----mysql 索引类型以及创建
    承诺,项目管理中的大杀器
    什么叫工作到位?
    Java中注解Annotation的定义、使用、解析
  • 原文地址:https://www.cnblogs.com/dranched/p/3758785.html
Copyright © 2011-2022 走看看