范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Java加密Sqlite库及文件

  原因:最近在用Sqlite存储数据,因涉及数据安全,所以需要数据库加密,Sqlite库默认不带加密功能 目前已知的对 SQLite 加密的工具主要有「[SQLite Encryption Extension (SEE)]、[SQLiteEncrypt]、[SQLiteCrypt]、[SQLCipher],但是这里面仅有 SQLCipher 有免费版本。 所以自己有个方案,针对Sqlite无法就是限制不能直接查看,那就对文件进行加密,需要连接的时候进行文件解密就可以了,如果大神有更好的解决方案,请告知,谢谢!
  package com.ts.tools;
  import cn.hutool.core.io.FileUtil;
  import cn.hutool.core.io.IoUtil;
  import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
  import cn.hutool.crypto.symmetric.SymmetricCrypto;
  import java.io.*;
  /** 加密解密文件
  * @author xhc
  * @version 1.0.0
  * @date 2022-10-31
  */
  public class FileEnDe {
  public static void main(String[] args) {
  try {
  //加密密码
  String key="abcdefghijklmnop";
  //FileEnDe.encryptFile("D:/test.db",key,true);
  //FileEnDe.decryptFile("D:/test.db",key);
  System.out.println(FileEnDe.isLocked("D:/sysDb.db"));
  } catch (Exception e) {
  throw new RuntimeException(e);
  }
  }
  /**
  * 加密db文件(理论可以加密任何文件)
  * @param filePath 文件路径
  * @param key16 加密密码(必须16位)
  * @return boolean
  * @throws Exception
  */
  public static boolean encryptFile(String filePath,String key16,boolean isReadOnly){
  FileOutputStream fos =null;
  boolean bFlag=false;
  try {
  if(FileUtil.exist(filePath)) {
  byte[] key = key16.getBytes();
  //取文件名称含后缀
  String fileName=FileUtil.getName(filePath);
  //加密文件
  SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, key);
  FileInputStream fis = new FileInputStream(filePath);
  String newFilePath=filePath+"_e";
  fos=new FileOutputStream(newFilePath);
  aes.encrypt(fis, fos, true);
  fos.close();
  //删除源文件,注意如果文件被使用会报:另一个程序正在使用此文件,进程无法访问
  boolean isDel=FileUtil.del(filePath);
  if(isDel){
  //重命名加密文件为源文件
  FileUtil.rename(new File(newFilePath),fileName,true);
  //设置只读文件
  if(isReadOnly) {
  File f=new File(filePath);
  f.setReadOnly();
  }
  }
  bFlag=true;
  }else{
  throw new RuntimeException(filePath+" 文件不存在!");
  }
  } catch (Exception e) {
  throw new RuntimeException(e);
  } finally {
  IoUtil.close(fos);
  }
  return bFlag;
  }
  /**
  * 解密Db库
  * @param filePath 文件路径
  * @param key16 加密密码(必须16位)
  * @return boolean
  * @throws Exception
  */
  public static boolean decryptFile(String filePath,String key16){
  boolean bFlag=false;
  FileOutputStream fos =null;
  try {
  if(FileUtil.exist(filePath)) {
  byte[] key = key16.getBytes();
  //取文件名称含后缀
  String fileName=FileUtil.getName(filePath);
  //解密文件
  SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, key);
  FileInputStream fis = new FileInputStream(filePath);
  String newFilePath=filePath+"_d";
  fos = new FileOutputStream(newFilePath);
  aes.decrypt(fis, fos, true);
  //注意,解密之后 fos 并未关闭,请先关闭
  fos.close();
  //删除源文件,注意如果文件被使用会报:另一个程序正在使用此文件,进程无法访问
  boolean isDel=FileUtil.del(filePath);
  if(isDel){
  //重命名加密文件为源文件
  FileUtil.rename(new File(newFilePath),fileName,true);
  }
  bFlag=true;
  }else{
  throw new RuntimeException(filePath+" 文件不存在!");
  }
  } catch (FileNotFoundException e) {
  throw new RuntimeException(filePath+" 文件不存在!");
  }catch (Exception e){
  throw new RuntimeException(e);
  }finally {
  IoUtil.close(fos);
  }
  return bFlag;
  }
  /**
  * 文件是否占用(采用重命名的方式)
  * @param filePath 文件路径
  * @return boolean
  */
  public static boolean isLocked(String filePath){
  boolean bFlag=false;
  String newFileName="";
  String fileName="";
  try {
  if(FileUtil.exist(filePath)) {
  // 采用重命名的方式,如果占用无法修改文件名称,如果未占用修改新的文件名称后再修改回来
  fileName = FileUtil.getName(filePath);
  newFileName = fileName + "_n";
  FileUtil.rename(new File(filePath), newFileName, true);
  }
  } catch (Exception e) {
  bFlag=true;
  }finally {
  //如果未占用修改新的文件名称后再修改回来
  if(!bFlag) {
  FileUtil.rename(new File(filePath+"_n"), fileName, true);
  }
  }
  return bFlag;
  }
  }

康熙家训不想养逆子,就一定要让他吃这五种苦!可怜天下父母心。没有不爱子女的父母。但是一味溺爱,只能把孩子推向深渊。古人说爱其子而不教,犹为不爱也教而不以善,犹为不教也。有些磨难一定要让孩子承受,再爱孩子,也要舍得给孩子吃这五谢晖真不给老东家面子!带大连队4比0横扫上港,扬眉吐气了一把日前,大连队主帅谢晖为了检验球队这段时间热身赛效果,跟老东家上港进行了一场热身赛。在这场热身赛上,谢晖没有给老东家留任何面子。谢晖临场指挥和排兵布阵针对性都非常强,所以大连队就以4欧冠决赛将迎来巅峰对决5月29日凌晨300,欧冠决赛将迎来巅峰对决红军利物浦将与银河战舰皇家马德里上演红白大战!两支球队的总身价高达16亿欧元,这场欧冠决赛算得上是豪门对决。利物浦和皇马在欧冠中有过8次欧冠利物浦VS皇马欧冠冠军,你更看好谁?来投票吧利物浦周天要打皇马咯,今年欧冠奖杯花落谁家?家人们谁知道?知道的投票告诉坑坑吧。欧冠决赛不期而至,惊不惊喜,意不意外?不管你们惊不惊喜,意不意外,反正坑坑挺意外的,好好地休息打麻将詹娜快乐衫篮网不愿给欧文长期合同儿子开始骂老子了据篮网记者报道,篮网完全不愿意给欧文提供一份长期续约合同。不接种疫苗和伤病史让篮网管理层犹豫不决。湖人签换威少吗?一年威少使用权总比什么都没有好篮网那可不一定塔图姆谈到了近日发生在最佳阵容投票字母哥满票,巴特勒戈贝尔落选NBA公布了本赛季最佳阵容的投票情况字母哥满票当选,拿到100张第一选票,总分100分。约基奇东契奇各拿到88张第一选票,12张第一选票,总分476分。布克82张第一选票总分460618国际与国货化妆品牌拼杀,梵蜜琳等国货能否突出重围转眼又到一年五月下旬,各电商平台也相继开启618预售。其中已有很多平台于5月20号25号就提前开启预售,抢先一步进入预售大阵之中,而作为电商平台老牌大哥的天猫则于5月26日开启预售同样是演痞子,陈小春张一山靠演技,而孙红雷自带气质如今许多新出的电影电视剧很多都是仙侠系列的,一些爱看战争片动作片的小伙伴就会进入怀旧模式,会找以前那些经典黑帮影片进行观看,说起警匪片,许多网友就开始了对痞子类型进行分类,有些饰演建立敢贷愿贷能贷会贷长效机制经济日报面对暂时困难也要有长远眼光近日,央行印发关于推动建立金融服务小微企业敢贷愿贷能贷会贷长效机制的通知,一条条有针对性实打实的举措,着力提升金融机构服务小微企业的意愿能力和可持续性,助力稳市场主体稳就业创业稳经NikeAirPresto最新配色BlueRose率先曝光NikeAirPresto鞋款凭借着与HelloKitty的联名系列重新回到众人眼前,今番为迎接夏季的到来,推出带有花卉图案的最新配色BlueRose。NikeAirPresto最换帅潮再起波澜,最强黑马遭遇挖墙脚,胖胖虎三大去处解谜团CBA这个休赛季,出现了前所未有的换帅潮,从赛季还没有结束时北京首钢雅尼斯和浙江稠州金租刘维伟主动挂帅开始,换帅潮就变得波涛汹涌,势不可挡。青岛国信主帅吴庆龙遭遇友好解职。一原单位
网球女神玛利亚莎拉波娃玛丽亚莎拉波娃(MariaSharapova)在她的职业生涯中赢得了五次大满贯冠军,多次荣登世界收入最高的女运动员名单。她曾11次被福布斯杂志列为收入最高的女运动员。在其职业生涯中美若没有几分遗憾,如何能有千般滋味美若没有几分遗憾,如何能有千般的滋味。题记今天偶然看到一篇关于遗憾的辩论赛,正方观点从未在一起更遗憾反方观点最终没有在一起更遗憾。那么很现实的两个辩论话题,其实我们大多数人都明白,请问你有什么遗憾吗?初冬的上海,天空飘起了雪花。洋洋洒洒的雪花,似乎讲述着一篇浩瀚巨著,也是一个人不平凡的一生。天使问在空中的他Doyouhaveanyregrets?他是懂多种语言的,英语俄语歌都是散文作品荐读凤山县巴腊猴山凤山县巴腊猴山为了四年的辉煌,换得余生的颠沛流离文初林吃了一顿丰盛的早餐之后,我们乘坐专车出发了,沿着崎岖蜿蜒的山路直奔猴山,车窗外不断闪现着青山绿水让人惊艳的壮美。通往猴山的路比韩国球员曹圭成8件事!外表神似朴叙俊差点因身高而放弃足球2022世界杯2022世足小组赛即将进入尾声,而韩国在小组赛时遇上迦纳,其中9号球员曹圭成3分钟连进2球的好表现,不只引起球坛关注,神似朴叙俊的帅气外貌,更是在网上引起热议,IG粉90后的10年心路历程从无知无畏少年文青愤青而立年(1)说起十年,一瞬间想到黄庭坚的诗桃李春风一杯酒,江湖夜雨十年灯!李太白曾说夫天地者,万物之逆旅光阴者,百代之过客。而浮生若梦,为欢几何?十年光阴放在人类历史长河中,弹指一瞬间放在人类小鹏汽车打出自救组合牌,但穿越寒冬仍需时日丨焦点分析文丨彭苏平编辑丨李勤销量一早曝光之后,小鹏汽车三季度财报的不好看理应落在预期之内营收68。2亿元,环比下跌8。2,亏损略有收窄,仍高达23。8亿元但产品切换期的阵痛还是来得如此真切今年流行的奶奶鞋,配卡布里裤简直天生一对!小个子穿也适合小个子的穿搭总是充满讲究,尤其是身材比例不够好的小个子,在穿衣方面更应该注意比例的改善。裤子和鞋子的选择是非常重要的部分,今年流行的单品是奶奶鞋和卡布里裤,这两件单品组合起来,是非国际足联改变规则,让世界杯比赛频繁爆冷,并不是意外2022世界杯卡塔尔世界杯小组赛的比赛,很快就会结束争夺,最终晋级到16强的球队,和球迷之前的预想有很大不同,皆因这届世界杯和以往有很大不同,那就是爆冷的比赛很多,强队不强,弱队不恶意抢注世界杯商标,就该被严打新京报快评卡塔尔世界杯吉祥物拉伊卜的周边产品。资料图。图ICphoto四年一度的世界杯,让很多人看到了商机,但也让一些人动了歪心思。据央视新闻报道,少数企业自然人以谋取不当利益为目的,对著名分析满足湖人三种交易策略的三笔方案威少贝弗利孰去孰留?(原文发表于12月2日,作者为露天看台的DanFavale,文章内容不代表译者观点)围绕湖人的交易讨论又开始了,多方消息源告知TheAthletic网站的记者JovanBuha,湖