zoukankan      html  css  js  c++  java
  • 电子海图开发第四十四篇 , s63电子海图解密(共一百篇)

    数据服务商发送给数据客户端的授权文件是以 PERMIT。TXT形式发送的,在该文件中包含多条记录,每一条记录对应一幅电子海图,每条记录都包含解密电子海图的单元权证、版本号、数据服务商的ID等信息, PERMIT。TXT文件如下所示

    当数据客户端收到数据服务商的 PERMIT。TXT后首先要验证文件的格式是否符合S-63数据标准规定的格式,若不符合应弹出对话框提示。格式正确后要验证每条记录的CRC32循环冗余校验值。以第一条记录为例,提取出最后的16位二进位十六位制字母,即CA052072CBE548,然后求取单元权证中剩余部分即GB303420。B7575E的CRC32循环冗余校验的校验值,将HWID的第一位补充到HWID之后形成HWID6,以HWID6为密钥加密求取的校验值和最后16位二进位十六位制字母比较,若一致,则单元权证是有效,否则单元权证无效在每条单元权证中,每条记录都是单元权证开头,单元权证的前六位为海图的图号,紧跟的8位为日期,以第一条记录为例,海图图号为GB303420,海图的过期日期为20121231。设备制造商应能够和GPS时间或者电脑时间对照看该条记录中的海图是否过期,若过期应给予提示。同样,若该条记录中的海图还有30天过期同样也应该给予提示在确保单元权证有效且在有效期内之后,接下来就可以进行解密和解压缩的步骤。

    在单元权证中提出加密后的单元密钥ECK1和ECK2,以第一条记录为例,ECK为287292A0F5B7575E,ECK2为287292A0F5B7575E。以HWID6为解密密钥对ECK和ECK2进行解密,得到单元密钥CK和CK2。单元密钥是5位字符组成或10位二进位十六位制字符表示。具体解密的过程为:
        (1)以单元密钥1为解密密钥,用 Blowfish解密算法解密电子海图数据

    (2)对解密后的电子海图数据进行解压缩,若能够成功解压缩,则可将解密解压缩后的电子海图导入ECDS终端; 

    (3)如果解压缩不成功,则以单元密钥2为解密密钥,用 Blowfish解密算法解密电子海图数据;

    (4)对解密后的电子海图数据进行解压缩,若能够成功解压缩,则可将解密解压缩后的电子海图导入ECDS终端

    (5)若(2)和(4)中的解压缩都不成功的话则证明单元权证中不含有效的解密单元密钥,系统应该给与提示。

    参考文章:电子海图开发,web电子海图开发,电子海图二次开发

  • 相关阅读:
    Mac电脑PHP环境-XAMPP:报错 Unable to load dynamic library的解决方法
    Mac下安装JDK(Day 12.05)
    Mac下配置Java Web开发环境
    StiReport使用
    深入浅出图解【计算机网络】 之 【TCP可靠传输的实现2: 超时重传+拥塞控制】
    深入浅出图解【计算机网络】 之 【TCP可靠传输的实现: 三次握手+滑动窗口】
    深入浅出图解【计算机网络】 之 【路由选择协议】
    由Leetcode详解算法 之 动态规划(DP)
    自定义装点博客的“门面”
    数据结构 之 常见的几种“排序”
  • 原文地址:https://www.cnblogs.com/ecdis/p/13522629.html
Copyright © 2011-2022 走看看