最近在为客户开发一个基于Eclipse RCP的桌面应用,客户有一份内部使用的数据文件在软件运行中需要用到,但是文件内容涉及公司机密,需要进行加密。老版本的系统开发人员采用数据库加密形式,直接将该文件以二进制流的方式写入到derby数据库中,然后在系统启动时读取到内存。但问题是这个数据文件会经常变动,所以每次数据文件一变动,就必须重新导入数据库,非常麻烦。请问大家有没有好的方法对资源文件进行加密呢?

解决方案 »

  1.   

    這份文件是否多人存取? 最後是存客戶端還是存數據庫?
    如果是雙向加解密,還必須考量密碼問題,就是密碼是每次輸入,或是寫在程序裡。
    每次輸入挺麻煩的,也可能遺失。寫在程序裡又怕被反組譯取得。另外,文件如果放客戶端,是否能被任意複製,也是必須考量的。總之,加解密不難,java.security.Security相關套件就可以做到,比較麻煩的是安全控管流程。
      

  2.   

    那就对文件本身进行加密吧,这样在对文件进行读写前首先对文件进行解密。使用对称加密,推荐MD5,DES加密会更严格但效率可能会稍低。或着对文件里面的内容加密,这样会更省事。
      

  3.   

    文件在客户端,它实际上相当于一个小的数据库<字典类型的>,不过客户不愿意存到数据库,因为要经常可视化修改。
    解密也会写到系统中。
    这个只是一般性质的加密,要求不会很高,要有一定隐蔽性就可以嘞。
      

  4.   

    文件不到200K,RCP启动本来就不快,嘿嘿~
      

  5.   

    你用 H2 這種內嵌式數據庫吧。資料庫本身有壓縮,所以無法直接看到內容,感覺蠻符合需求的。
    (雖然他是數據庫,但可以內建在程序裡,算是程序的一部分)http://www.h2database.com/html/main.html
      

  6.   

    现有版本用的derby数据库~
    就是每回都要重新导入数据库好麻烦
    不过看来这也只有这样嘞~