• 电子海图开发第四十四篇 , 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电子海图开发,电子海图二次开发

  • 相关阅读:
    Nginx 高级配置
    nginx安装和优化配置
    location语法介绍
    iptables
    通过 loganalyzer 展示数据库中的系统日志
    ubuntu_server16.04详细安装步骤
    内存控制mmap的原型和使用方法
    C语言中open函数read函数lseek函数是如何使用的
    gdb调试工具的基本使用
    C语言如何制作静态库
  • 原文地址:https://www.cnblogs.com/ecdis/p/13522629.html
Copyright © 2020-2023  润新知