1. 程式人生 > >Android基於ormlite框架的資料庫加密

Android基於ormlite框架的資料庫加密

本文轉載自:https://my.oschina.net/u/2561871/blog/1512131

專案中期安全突然說本地資料庫要進行加密,由於專案的本地資料庫是用的ormlite框架,在網上搜了很多Android本地資料庫加密的方法基本上都是用的SQLCipher開源框架進行的對SQLite資料庫加密,由於專案本身用的是ormlite框架,因此不能直接使用,後來查了很多相關的資料,終於解決了安全的需求,特此記下,以備後用。

由於下面需要用到SQLCipher框架,先介紹一下:

SQLCipher簡介:

SQLCipher是一個在SQLite基礎之上進行擴充套件的開源資料庫,SQLCipher具有佔地面積小、效能因此它非常適合嵌入式應用的資料庫保護,非常適合於移動開發。

優勢:

  • 加密效能高、開銷小,只要5-15%的開銷用於加密
  • 完全做到資料庫100%加密
  • 採用良好的加密方式(CBC加密模式)
  • 使用方便,做到應用級別加密
  • 採用OpenSSL加密庫提供的演算法

所需jar包

  • ormlite-android-encryption.jar
  • sqlcipher.jar
  • guava-r09.jar
  • nineoldandroids.jar

原理分析

其實原理很簡單,就是在ormlite的基礎上重寫了SQLite資料庫getReadableDatabase()方法和getWritableDatabase()方法,就是在讀資料庫和寫資料庫的時候加上key

public classSQLiteHelper
extendsOrmLiteSqliteOpenHelper
{ public static final String TAG = "SQLiteHelper"; //資料庫版本號 public static final int VERSION = 1; //資料庫名稱 private static String DB_NAME = "test.db"; //讀寫資料庫所用到的key private static String KEY = "key"; Context mContext; publicSQLiteHelper(Context context){ super(context, context.getDatabasePath(DB_NAME).getPath(), null
, VERSION, KEY); mContext = context; } publicvoidonCreate(SQLiteDatabase arg0, ConnectionSource connSource){ try { TableUtils.createTableIfNotExists(connSource, User.class); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } publicvoidonUpgrade(SQLiteDatabase db, ConnectionSource connSource, int oldNum, int newNum){ try { TableUtils.dropTable(connectionSource, User.class, true); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } publicvoidclose(){ super.close(); } public SQLiteDatabase getReadableDatabase(){ return getReadableDatabase(KEY); } public SQLiteDatabase getWritableDatabase(){ return getWritableDatabase(KEY); } publicsynchronized SQLiteDatabase getReadableDatabase(String arg0){ // TODO Auto-generated method stub return super.getReadableDatabase(arg0); } publicsynchronized SQLiteDatabase getWritableDatabase(String arg0){ // TODO Auto-generated method stub return super.getWritableDatabase(arg0); } }

到此,Android 端基於本地資料庫(ormlite)框架的加密就搞定了,是不是很簡單dao的用法和增刪該查都跟ormlite操作一樣

基於ormlite資料庫框架的批量插入資料(知識點很小,但是用途很大)

/**
 * 批量插入
 */
publicvoidinsertAllUsers(List<User> users){
     DatabaseConnection conn = null;
     Savepoint savepoint = null;
     try {
      conn = userDao.startThreadConnection();
      savepoint = conn.setSavePoint("bulk_insert");
      for (User user : users) {
          userDao.create(user);
      }
     } catch (SQLException e) {
     } finally {
      if (conn != null) {
       try {
        conn.commit(savepoint);
        userDao.endThreadConnection(conn);
       } catch (SQLException e) {
       }
      }
     }
}

Android端的本地資料庫加密是應安全需求,並不是所有的專案都需要加密,希望我的經驗能夠帶給你幫助

【總監】十二春秋之,[email protected]; 【Master】zelo,[email protected];【運營】狼行天下,[email protected]; 【產品設計】流浪貓,[email protected];【體驗設計】兜兜,[email protected]; 【iOS】淘碼小工,[email protected];iMcG33K,[email protected]【Android】人猿居士,[email protected];思路的頓悟,[email protected]; 【java】首席工程師MR_W,[email protected];【測試】土鏡問道,[email protected]; 【資料】喜樂多,[email protected];【安全】保密,你懂的。

相關推薦

Android基於ormlite框架資料庫加密

本文轉載自:https://my.oschina.net/u/2561871/blog/1512131 專案中期安全突然說本地資料庫要進行加密,由於專案的本地資料庫是用的ormlite框架,在網上搜了很多Android本地資料庫加密的方法基本上都是用的SQLCipher開源

androidORMLite框架 的使用方法---給你的資料庫操作插上翅膀

一:首先下載 ORMLite Jar 包 先去 ORMLite官網下載jar包 寫部落格時,目前最新的,對於Android為:ormlite-android-5.0.jar 和 ormlite-core-5.0.jar ; 然後分包處理,建議如圖所示分包:

Android 基於 MVP 框架的下拉重新整理、上拉載入頁面,View和Presenter層基類封裝

前言 Android 專案開發中經常遇到列表式頁面,並且需要實現下拉重新整理,上拉到底後加載下一頁的功能,這裡結合我們專案正在使用的 MVP 框架,介紹一種基類封裝方案,實現 View、Adapter、資料處理Presenter層的基類封裝,後續繼承這幾個類,

android基於開源網絡框架asychhttpclient,二次封裝為通用網絡請求組件

定義 pen ntc ucc 編寫 stat ner href face 網絡請求是全部App都不可缺少的功能,假設每次開發都重寫一次網絡請求或者將曾經的代碼拷貝到新的App中,不是非常合理,出於此目的,我希望將整個網絡請求框架獨立出來,與業務邏輯分隔開,這

基於 MVP 架構使用Android通用開發框架快速開發微博項目實戰

安卓 MVP 課程目標:基於 MVP 架構使用Android通用開發框架快速開發微博項目實戰適應人群:適合大學生和初中級android開發工程師,可以系統化的微博類APP的開發,系統化掌握商業化項目的開發。* 不斷豐富自己的知識,做有“錢”途的Android工程師課程簡介:《基於 MVP 架構使用An

Android開發-基於ijkplayer框架開發網路電視直播播放器的實現

前 言 ijkplayer框架是由B站在GitHub開源的一款比較好用的開源網路播放器框架,它能支援在Android、IOS等平臺上編譯移植使用。而且支援多種視訊格式的播放,而且編碼的速度比傳統的開源網路播放器還要快。除此之外,ijkplayer框架支援網路視訊播放時彈幕的推送等功能

android基於libjpeg-turbo的圖片壓縮框架

Light a lightweight image compress framework for Android based on libJpeg. 一個基於libJpeg的壓縮圖片框架, 支援配合rxjava使用。 可以一行程式碼解決圖片下載->壓縮->顯

android基於註解實現類似spring服務端框架

用過spring或Retrofit的人都知道實現函式和http請求的繫結和解耦非常方便,這裡分享一下基於NanoHttpd實現的簡單註解框架。 第一步定義註解類: //http控制類,被該註解的類用來處理http請求 @Retention(RetentionPo

Android 快速開發系列 ORMLite 框架最佳實踐

                上一篇已經對ORMLite框架做了簡單的介紹:Android ORMLite 框架的入門用法~~本篇將介紹專案可能會使用到的一些用法,也為我們的使用ORMLite框架總結出一個較合理的用法。通過上一篇的瞭解,我們使用ORMLite,需要自己寫一個DatabaseHelper去繼

基於代理的資料庫分庫分表框架 Mycat實踐

文章共 1796字,閱讀大約需要 4分鐘 ! 概 述 在如今海量資料充斥的網際網路環境下,分庫分表的意義我想在此處就不用贅述了。而分庫分表目前流行的方案最起碼有兩種: 方案一:基於應用層的分片,即應用層程式碼直接完成分片邏輯 方案二:基於代理層的分片,即在應用程式碼和底層資料庫中

15.android SQLite資料庫實現增刪該查和android測試test框架

SQliteOpenHelper是一個抽象類,來管理資料庫的建立和版本的管理。這個輔助類繼承自SQLiteOpenHelper類,在該類的構造器中,呼叫Context中的方法建立並開啟一個指定名稱的資料庫物件。繼承和擴充套件SQLiteOpenHelper類主要做的工作就是重

Android ORM 框架AndroidORMLite應用基礎

ORMLite是常用的一個ORM框架,她不止可以用在Android的sqlite資料庫,也可以使用她操作其他常見的資料庫。這兒是根據官方文件抽取來的android用法。 一,新增依賴 匯入ormlite-core.jar和ormlite-android.

基於代理的資料庫分庫分表框架 Mycat實踐 侵立刪

轉自:http://www.spring4all.com/article/1817   概 述 在如今海量資料充斥的網際網路環境下,分庫分表的意義我想在此處就不用贅述了。而分庫分表目前流行的方案最起碼有兩種: 方案一:基於應用層的分片,即應用層程式碼直接完成分片邏輯

【PHP】基於codeigniter框架的顯示資料庫資料的例項

這次是一個CI的例項,功能為通過CI框架,在頁面中顯示資料庫中的內容 1.安裝 首先,下載codeigniter,連結點選開啟連結 解壓,把檔案放入你的網站根目錄,裡面有若干檔案和三個資料夾,其中的

Android基於DataBinding的一個基礎框架

開篇廢話 因公司需求,開發了一個基於DataBinding的基礎框架,以後公司可能寫專案都要按這個框架來寫,規範一些,有利於互相讀程式碼。先附上github連結吧——CFramework。 如果不知道什麼是DataBinding,建議先看上一篇文章

基於easyui框架中input 型別的checkbox拼接成字串存入資料庫和讀取選中---善良公社專案

       專案中我做修改使用者個人資料的時候,有一個需求是幫助人員的幫助型別如圖下所示:        當初想如果是asp.net控制元件的話應該很簡單實現,如果不是基於easyUI框架那

Android基於Facebook Rebound的動畫效果框架Backboard demo (非常炫酷)

Usage 更新build.gradle  1 2 3 4 dependencies { compile 'com.facebook.rebound:rebound:0.3.8' compile 'com.tumblr.backboard:backboard:+' }

基於開源框架Glide載入Gif資源圖到Android ImageView中

《基於第三方開源框架Android Glide載入Gif資源圖片到Android ImageView中》 通常Android的ImageView不能載入Gif圖片,如不做任何處理,那麼載入到ImageView中的Gif只顯示第一幀。網上給出很多解決方案,也

基於express框架下Node.js+MySQL連線池的資料庫增添操作

題記: 這幾天一直在學習Node以及關係型資料庫的知識,剛剛接觸到了express框架,就想利用express框架,實現一個通過ajax操作來向資料庫內增添資料的功能。 正文: 話不多說,現在我們就來一起看看吧!我們需要了解哪些知識,做哪些基本工作!

android基於類裝載器DexClassloader設計“外掛框架

外掛相關介紹     首先外掛只是一個邏輯概念,而不是什麼技術標準,主要包含如下幾個意思: 外掛不能獨立執行,必須執行一個宿主程式中,宿主程式去呼叫外掛(ps:微信的遊戲算不算外掛?感覺算是一種)外掛一般情況下可以獨立安裝,android中就可以設計一個apk宿主程式