- 浏览: 2204183 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
项目中引入了SQLCipher之后,会让你的程序体积骤然增加,打成APK后大概会变大好几M,是更侧重于文件大小,还是更侧重于程序安全,你应该根据具体的需求做出合适的判断。
manifest 配置写入文件权限 因为copy的数据库文件到创建的目录下
module 下的build.gradle
application 或者你当前所用到的activity 首先要加上这句话
创建一个MyDatabaseHelper
关键代码 activity
数据库加密之后 用工具无法打开。这就足以说明,目前数据库中的数据是非常安全的,只有在应用程序里通过SQLCipher提供的API才可以访问到数据库里的数据,使用其它的方式都无法获取其数据。
创建目录
SDCardUtils
FileUtil
我自己经历的错误 :
1.你首先要确信 你的手机里 没有你现在建好的db 文件 否则它会告诉你不能加密此文件 :
2.我在as里 使用了 eclipse 配置的方法 却没有在build.gradle文件里做配置 eclipse的配置这些so 文件 jar包 zip 文件 都要有
manifest 配置写入文件权限 因为copy的数据库文件到创建的目录下
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
module 下的build.gradle
compile 'net.zetetic:android-database-sqlcipher:3.5.3@aar'
application 或者你当前所用到的activity 首先要加上这句话
SQLiteDatabase.loadLibs(this);
创建一个MyDatabaseHelper
public class MyDatabaseHelper extends SQLiteOpenHelper { public static final String CREATE_TABLE = "create table Book(name text, pages integer)"; public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) { } }
关键代码 activity
public class MainActivity extends AppCompatActivity { private SQLiteDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //因为很多手机没有root 过 所以你没办法去找到你的db文件 并且copy出来查看 这时候需要手动去创建目录 createSdcardFolder(); setContentView(R.layout.main); SQLiteDatabase.loadLibs(this); MyDatabaseHelper dbHelper = new MyDatabaseHelper(this, "cipher.db", null, 1); db = dbHelper.getWritableDatabase("secret_key"); Button addData = (Button) findViewById(R.id.add_data); Button queryData = (Button) findViewById(R.id.query_data); addData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ContentValues values = new ContentValues(); values.put("name", "达芬奇密码"); values.put("pages", 566); db.insert("Book", null, values); } }); queryData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Cursor cursor = db.query("Book", null, null, null, null, null, null); if (cursor != null) { while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex("name")); int pages = cursor.getInt(cursor.getColumnIndex("pages")); Log.d("TAG", "book name is " + name); Log.d("TAG", "book pages is " + pages); } } cursor.close(); } }); //copy出数据库文件 copyfile.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { copyDatabaseToSdcard(MainActivity.this); } }); } /** * 创建SdcardFolder */ public void createSdcardFolder(){ if(SDCardUtils.isSDCardEnable()){ File file =null; file = new File(String.format("%s%s",SDCardUtils.getSDCardPath(), "/cliper/temp")); if(!file.exists()){//判断sdcard卡上是否有目录,没有目录则生成目录 file.mkdirs(); } } } /** * 复制数据库文件 */ public static void copyDatabaseToSdcard(Context context){ copyDatabaseToSdcard(context,"dbfile"); } /** * 复制数据库文件 */ public static void copyDatabaseToSdcard(Context context,String name){ try { File file = context.getDatabasePath("cipher.db"); FileUtil.writeFile(new FileInputStream(file.getAbsolutePath()), SDCardUtils.getSDCardPath() +"/cipher/temp" + "/"+name); } catch (IOException e) { e.printStackTrace(); } } }
数据库加密之后 用工具无法打开。这就足以说明,目前数据库中的数据是非常安全的,只有在应用程序里通过SQLCipher提供的API才可以访问到数据库里的数据,使用其它的方式都无法获取其数据。
创建目录
/** * 创建SdcardFolder */ public void createSdcardFolder(){ if(SDCardUtils.isSDCardEnable()){ File file =null; file = new File(String.format("%s%s",SDCardUtils.getSDCardPath(), "/cipher/temp")); if(!file.exists()){ file.mkdirs(); } } }
SDCardUtils
public static String getSDCardPath(){ return Environment.getExternalStorageDirectory().toString(); }
FileUtil
public final static void writeFile(InputStream input, String fileName) throws IOException { writeFile(input, new FileOutputStream(fileName)); } public final static void writeFile(InputStream input, OutputStream os) throws IOException { byte[] bs = new byte[1024]; // 设置数据缓冲 int len; // 读取到的数据长度 while ((len = input.read(bs)) != -1) { os.write(bs, 0, len); } os.close(); input.close(); }
我自己经历的错误 :
1.你首先要确信 你的手机里 没有你现在建好的db 文件 否则它会告诉你不能加密此文件 :
2.我在as里 使用了 eclipse 配置的方法 却没有在build.gradle文件里做配置 eclipse的配置这些so 文件 jar包 zip 文件 都要有
sourceSets { main { manifest.srcFile 'src/main/AndroidManifest.xml' java.srcDirs = ['src/main/java'] res.srcDirs = ['src/main/res'] assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs'] } }
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 635本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1111颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 1005从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1181Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 1020Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 848前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 937监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 808在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 979最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1344##MediaQuery MediaQuery.of(con ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 1143当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 791setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1525问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 781底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1792点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1383import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2337TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1567一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 880Flutter最近很火,我抽出了一点时间对Flutter进行了 ... -
关于android O 上 NotificationChannel 的一些注意事项
2019-07-04 11:47 941最近在适配android O,遇到个问题,应用中原本有设置界面 ...
相关推荐
使用sqlcipher实现数据库加密解密,内附详细总结文档
SQLCipher就是一款专为SQLite数据库提供加密功能的开源库,适用于Android和其他平台。本文将深入探讨如何在Android项目中使用SQLCipher来加密数据库文件。 首先,了解SQLCipher的基本原理。SQLCipher基于SQLite,它...
SQLCipher 是一个开源的 SQL 数据库加密解决方案,它为 SQLite 数据库提供了透明的加密功能。在 Android 开发中,数据安全是至关重要的,SQLCipher 提供了一种方法来保护应用程序存储在数据库中的敏感信息,如用户...
提供的"sqlcipher3.0.1 Android数据库解密工具 for Win"可能包含以下部分: - **readme.txt**:一般会包含使用工具的说明和步骤,如如何导入数据库文件,如何输入解密密钥等。 - **bin**:这个目录可能包含可执行...
sqlcipher:https://github.com/sqlcipher/android-database-sqlcipher js脚本 Java.perform(function () { //wcdb try { const SQLiteConnection = Java.use('com.tencent.wcdb.database.SQLiteConnect
ormlite框架整合sqlcipher数据库加密实例,注意调配编译版本
SQLCipher是一个开源的SQLite数据库加密扩展,它提供了对SQLite数据库进行透明加密的能力,确保数据在存储和传输过程中的安全性。本教程将深入讲解SQLCipher的使用,以及如何在Android项目中集成和应用SQLCipher来...
《Android数据库安全:SqlCipher深度解析》 在移动设备中,数据安全是至关重要的,尤其是在Android平台上,由于其开放性,应用程序的数据面临着更多的潜在风险。为了解决这一问题,许多开发者选择使用加密技术来...
SQLCipher是一款开源的数据库加密工具,它为SQLite数据库提供透明的数据加密功能,确保在存储和检索数据时的数据安全。SQLite是广泛应用于移动设备和嵌入式系统的轻量级数据库,而SQLCipher则增强了其安全性,使得...
在Android应用开发中,SQLite是一个...通过以上介绍,我们了解了在Android中使用SQLCipher实现SQLite数据库加密的重要性、方法以及注意事项。在实际项目中,可以根据需求选择适合的加密策略,确保应用的数据安全性。
sqlcipher数据库加密加载包,用于安卓sqlite数据库加密,采用的是数据库整体加密
在Android开发中,数据存储是不可或缺的一部分,而随着对数据安全性的重视日益增强,数据库加密成为了一项重要的技术。SQLite是Android系统默认的轻量级数据库,它为开发者提供了便捷的数据存储方式。然而,SQLite...
在实际应用中,使用Sqlite Cipher进行数据库加密的好处包括: 1. 数据隐私:通过加密,即使数据库文件被非法获取,没有正确的密码也无法读取其中的内容。 2. 应用合规性:对于处理敏感数据的应用,如金融或医疗应用...
在Android开发中,数据存储是不可或缺的一部分,而SQLite作为Android内置的关系型数据库,被广泛...通过学习和实践这个案例,开发者可以掌握在Android环境中实现数据库加密的方法,为用户提供更安全的数据存储环境。
总之,SQLCipher为Android应用提供了数据库加密的功能,帮助开发者在保护用户数据安全的同时,仍能享受SQLite带来的便利。通过上述的步骤和最佳实践,可以有效地在应用中集成并使用SQLCipher,为Android数据库安全...
本文将深入探讨如何使用SQLCipher来加密数据库文件,并通过实际的代码示例展示如何进行数据库的增删改查操作。 首先,SQLCipher的基本原理是通过在SQLite的API层添加一层加密,使得数据库文件在磁盘上以密文形式...
在Android开发中,由于sqlite是默认的数据存储方式,但原始的sqlite数据库并不具备安全的加密机制,因此Sqlcipher的引入可以有效保护用户数据的安全,防止未授权访问。本文将详细介绍如何在Android应用中使用...
SQLCipher是一款开源的SQL数据库加密库,它提供了透明的数据库加密功能,允许开发者在不修改原有SQL语句的情况下,实现数据库的加密。在`SafeRoomDemo`中,我们将看到如何集成SQLCipher到Room数据库,以及如何进行...
SqlCipher.exe是一款针对Sqlite数据库的加密查看工具,专为Windows操作系统设计。Sqlite是一款轻量级、自包含的数据库引擎,广泛应用于各种桌面和移动应用程序。然而,数据安全是任何应用的重要考量,SqlCipher正是...
SQLCipher是一种针对SQLite数据库的开源加密库,它允许开发者对SQLite数据库进行透明的加密操作,以保护存储在其中的敏感数据。SQLCipher的使用既简单又高效,但正如描述中提到的,它可能会使应用程序(APK)文件的...