文章目录
  1. 1. 我的项目—林业百科
    1. 1.1. 数据库
      1. 1.1.1. 森林资源非空间数据标准
      2. 1.1.2. other
    2. 1.2. 遇到的困难
      1. 1.2.1. 原理:
      2. 1.2.2. 对数据库加密遇到的问题:
      3. 1.2.3. 数据录入数据库的问题

我的项目—林业百科

数据库

森林资源非空间数据标准

  1. 地类代码表
  • 林种代码表
  • 林分因子代码表
  • 单株林木因子代码表
  • 森林环境因子代码表
  • 人工造林措施数据代码表
  • 森林经营数据代码表
  • 资源动态变化数据代码表
  • 森林权属数据代码表
  • 森林主要植物种代码表
  • 植被类型代码表
  • 森林类型代码表
  • 森林灾害数据代码表
  • 其他数据代码表

other

  1. 地形图要素分类与代码
  2. 国土基础信息数据分类与代码
  3. 荒漠化信息分类与代码
  4. 陆生野生动物疫病分类与代码
  5. 木材产品物资分类与代码
  6. 森林火灾信息分类与代码1
  7. 森林火灾信息分类与代码2
  8. 森林生态工程信息分类与代码
  9. 森林植物害虫分类与代码
  10. 森林资源分类与代码–国营林场分类与代码
  11. 森林资源分类与代码–林木病害
  12. 森林资源分类与代码–陆栖脊椎野生动物
  13. 森林资源分类与代码–森林类型
  14. 森林资源分类与代码–森林资源
  15. 森林资源分类与代码–自然保护区
  16. 野生种植物保护信息分类与代码1
  17. 野生种植物保护信息分类与代码2
  18. 湿地信息分类与代码
  19. 营林产品分类与代码
  20. 中国土壤分类与代码
  21. 专题地图信息分类与代码

遇到的困难

  • 数据加密:数据加密采用的是IDEA加密算法,这种算法是在DES算法的基础上发展出来的,类似于三重DES,弥补了DES密钥太短的缺点。IDEA密钥为128位。

    原理:

  • IDEA 它也是对64bit大小的数据块加密的分组加密算法密钥长度为128位它基于”相异代数群上的混合运算”设计思想。
  • 产生密钥:
    1. 算法用了52个子密钥(8轮中的每一轮需要6个,其他4个用与输出变换)。
    2. 将128-位密钥分成8个16-位子密钥。这些是算法的第一批8个子密钥(第一轮六个,第二轮的头两个)。然后,密钥向左环移25位后再分成8个子密钥。开始4个用在第二轮,后面4个用在第三轮。密钥再次向左环移25位产生另外8个子密钥,如此进行直到算法结束。具体是:
      IDEA总共进行8轮迭代操作,每轮需要6个子密钥,另外还需要4个额外子密钥,所以总共需要52个子密钥,这个52个子密钥都是从128位密钥中扩展出来的。
  • 加密过程:

    1. 输入的64-位数据分组被分成4个16-位子分组:xl,X2,x3和x4。
    2. 这4个子分组成为算法的第一轮的输入,总共有8轮。在每一轮中,这4个子分组相互相异或,相加,相乘,且与6个16-位子密钥相异或,相加,相乘。

      在每一轮中,执行的顺序如下:
             (1)X1和第一个子密钥相乘。
             (2)x2和第二个子密钥相加。
             (3)X3和第三个子密钥相加。
             (4)x4和第四个子密钥相乘。
             (5)将第(1)步和第(3)步的结果相异或。 .
             (6)将第(2)步和第(4)步的结果相异或。
             (7)将第(5)步的结果与第五个子密钥相乘。
             (8)将第(6)步和第(7)步的结果相加。
             (9)将第(8)步的结果与第六个子密钥相乘。
             (10)将第(7)步和第(9)步的结果相加。
             (11)将第(1)步和第(9)步的结果相异或。
             (12)将第(3)步和第(9)步的结果相异或。
             (13)将第(2)步和第(10)步的结果相异或。
             (14)将第(4)步和第(10)步的结果相异或。
             每一轮的输出是第(11)、(12)、(13)和(14) 步的结果形成的4个子分组。
              将中间两个分组分组交换(最后一轮除外)后,即为下一轮的输入。
             经过8轮运算之后,有一个最终的输出变换:
             (1) X1和第一个子密钥相乘。
             (2) x2和第二个子密钥相加。
             (3) x3和第三个子密钥相加。
             (4) x4和第四个子密钥相乘。
      
  • IDEA算法的密钥长度为128位。设计者尽最大努力使该算法不受差分密码分析的影响。

    对数据库加密遇到的问题:

  • 因为加密算法是用Java写的,idea算法只能对byte数组加密,但是从数据库中读出来的数据是string类型的,这中间需要string到byte的转换,一开始直接用string.getByte()方法,加完密在利用string的构造方法将byte转化为string存到数据库,然后再从数据库读密文加密的时候就全乱码了。
  • 这个问题捣鼓了很久,不断测试过程发现肯定不是算法问题,因为直接把加完密的byte解密输出的时候,不是乱码,而是明文,所有应该是在加密和解密的过程中,string转byte出现了问题,后来找了一个Base64提供的接口:

    //string转byte            
    new sun.misc.BASE64Decoder().decodeBuffer(js.getCode())
    //byte转string
    new sun.misc.BASE64Encoder().encodeBuffer(decryptdata[k]);
    加完密之后,密文byte转string的时候用new sun.misc.BASE64Encoder().encodeBuffer(decryptdata[k]),
    解密之前,密文string转byte时候用new sun.misc.BASE64Decoder().decodeBuffer(js.getCode()),
    整个加密 解密过程只是使用这两次,其它情况正常转换即可。
    
    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一

数据录入数据库的问题

  • 如何把书中的数据录入数据库中?
    • 手动录入肯定不可能,因为数据量很大
    • 解决办法是,扫描仪扫描整本书,得到PDF文件
    • 然后测试了多个文档识别软件,最终选用了Abbyy FineReader
    • 通过它消除了不必要的水印,数据出错率也低。
    • 转换成Excel后,通过Java程序读取Excel内容存入了相应的数据库

更多精彩内容,请关注公众号:轮子工厂,公众号内回复:我要造轮子,可免费获得100本计算机经典电子图书; 回复:福利,获取大学生礼包; 回复:加群,邀请您进高手如云技术交流群。

文章目录
  1. 1. 我的项目—林业百科
    1. 1.1. 数据库
      1. 1.1.1. 森林资源非空间数据标准
      2. 1.1.2. other
    2. 1.2. 遇到的困难
      1. 1.2.1. 原理:
      2. 1.2.2. 对数据库加密遇到的问题:
      3. 1.2.3. 数据录入数据库的问题