如何对sqlite3数据库进行加密

如何对sqlite3数据库进行加密,第1张

给SQLite数据库加密解密的方法:

1、创建空的sqlite数据库。

//数据库名的后缀你可以直接指定,甚至没有后缀都可以

//方法一:创建一个空sqlite数据库,用IO的方式

FileStream fs = FileCreate(“c:\\testdb“);

//方法二:用SQLiteConnection

SQLiteConnectionCreateFile(“c:\\testdb“);

创建的数据库是个0字节的文件。

2、创建加密的空sqlite数据库

//创建一个密码为password的空的sqlite数据库

SQLiteConnectionCreateFile(“c:\\test2db“);

SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test2db“);

SQLiteConnection cnn = new SQLiteConnection(“Data Source=D:\\test2db“);

cnnOpen();

cnnChangePassword(“password“);

3、给未加密的数据库加密

SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\testdb“);

cnnOpen();

cnnChangePassword(“password“);

4、打开加密sqlite数据库

//方法一

SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test2db“);

cnnSetPassword(“password“);

cnnOpen();

//方法二

SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();

builderDataSource = @”c:\testdb“;

builderPassword = @”password“;

SQLiteConnection cnn = new SQLiteConnection(builderConnectionString);

cnn Open();

除了用上述方法给SQLite数据库加密以外,您还可以使用专业的文件加密软件将SQLite数据库加密。

超级加密 3000采用先进的加密算法,使你的文件和文件夹加密后,真正的达到超高的加密强度,让你的加密数据无懈可击。

超级加密3000使用起来,只要点击需要加密的文件的右键,即可轻松实现文件的加密。

解密只要双击已加密文件,输入密码即可轻松搞定。

数据库密码加密看原密码的以下步骤。

1、打开mysqlexe和mysqldexe所在的文件夹,复制路径地址。

2、打开cmd命令提示符,输入mysqlexe在上一步中所在的文件夹。

3、输入命令mysqld-skip-grant-tables并输入。此时跳过mysql的用户认证。请注意,输入该命令后,无法 *** 作命令行。这时,可以打开一个新的命令行。注意,在输入这个命令之前,在任务管理器中结束mysqldexe进程,确保mysql服务器已经运行完毕。

4、然后直接进入mysql,不需要任何登录参数就可以登录数据库,直接进入,输入显示数据库,看到所有数据库都显示登录成功。

一般是先加盐再用不可逆加密算法加密密码的,常见的有:sha1 sha256 md5等。

作用:这些加密算法,只能加密,不能逆向解密,所以使用这些算法。即时你的数据库被拖库,得到的人,也无法知道用户密码。

为什么加盐

举例

在注册时,

假设你的密码是1234,一般服务器会加一个盐(随便一个乱打的字符串),和你的密码加在一起,1234和efnU(@#H!JKNF得到1234efnU(@#H!JKNF这个值,然后再进行加密(这里我用md5)得到 91dc02c1fc2ce2252969e6b86173aa78,于是数据库里你的密码就变为了91dc02c1fc2ce2252969e6b86173aa78

登入时,

你输入1234, 然后服务器用和注册相同的步骤进行加密,得到加密后的值,91dc02c1fc2ce2252969e6b86173aa78,将这个值与数据库的加密值比对,如果正确则登入。

最基本的做法就是使用加密工具,先把字符串加密,之后用配置文件的方法,添加到你的项目中;

然后通过程序的运行,动态的将加密过的字符串进行逆转 *** 作,恢复成123456,你需要考虑的是,哪种加密方式可以逆反 *** 作,MD5这样的方式似乎只能进行单向的加密,其实,加密方式也就是一个计算的过程。

希望可以帮助到你~!

用户密码加密方式

用户密码保存到数据库时,常见的加密方式有哪些以下几种方式是常见的密码保存方式:

1 明文保存

比如用户设置的密码是“123456”,直接将“123456”保存在数据库中,这种是最简单的保存方式,也是最不安全的方式。但实际上不少互联网公司,都可能采取的是这种方式。

2 对称加密算法来保存

比如3DES、AES等算法,使用这种方式加密是可以通过解密来还原出原始密码的,当然前提条件是需要获取到密钥。不过既然大量的用户信息已经泄露了,密钥很可能也会泄露,当然可以将一般数据和密钥分开存储、分开管理,但要完全保护好密钥也是一件非常复杂的事情,所以这种方式并不是很好的方式。

3 MD5、SHA1等单向HASH算法

使用这些算法后,无法通过计算还原出原始密码,而且实现比较简单,因此很多互联网公司都采用这种方式保存用户密码,曾经这种方式也是比较安全的方式,但随着彩虹表技术的兴起,可以建立彩虹表进行查表破解,目前这种方式已经很不安全了。

其实之前公司也是采用的这种MD5加密方式。

4 PBKDF2算法

该算法原理大致相当于在HASH算法基础上增加随机盐,并进行多次HASH运算,随机盐使得彩虹表的建表难度大幅增加,而多次HASH也使得建表和破解的难度都大幅增加。

在使用PBKDF2算法时,HASH一般会选用sha1或者sha256,随机盐的长度一般不能少于8字节,HASH次数至少也要1000次,这样安全性才足够高。一次密码验证过程进行1000次HASH运算,对服务器来说可能只需要1ms,但对于破解者来说计算成本增加了1000倍,而至少8字节随机盐,更是把建表难度提升了N个数量级,使得大批量的破解密码几乎不可行,该算法也是美国国家标准与技术研究院推荐使用的算法。

5 bcrypt、scrypt等算法

这两种算法也可以有效抵御彩虹表,使用这两种算法时也需要 指定 相应的参数,使破解难度增加。

在密码学中,scrypt(念作“ess crypt”)是Colin Percival于2009年所发明的金钥推衍函数,当初设计用在他所创立的Tarsnap服务上。设计时考虑到大规模的客制硬件攻击而刻意设计需要大量内存运算。

Scrypt不仅计算所需时间长,而且占用的内存也多,使得并行计算多个摘要异常困难,因此利 用rainbow table进行暴力攻击更加困难。Scrypt 没有在生产环境中大规模应用,并且缺乏仔细的审察和广泛的函数库支持。但是,Scrypt 在算法层面只要没有破绽,它的安全性应该高于PBKDF2和bcrypt。

各个算法的特性

总结

采用PBKDF2、bcrypt、scrypt等算法可以有效抵御彩虹表攻击,即使数据泄露,最关键的“用户密码”仍然可以得到有效的保护,黑客无法大批量破解用户密码,从而切断撞库扫号的根源。

加密软件编辑推荐

易控网盾加密软件--重要文件防泄密专家!轻松实现单位内部文件自动加密保护,加密后的文件在单位内部正常流转使用。未经许可,任何私自拷贝加密文件外发出去,都将打开为乱码,无法使用!对于发送给客户等第三方的文件,可实现控制打开时间和打开次数等防泄密参数!同时可设置对员工电脑文件自动备份,防止恶意删除造成核心数据的遗失!从源头防止企业核心文件被外泄!

相关页面:加密软件,文件加密,文档加密,图纸加密软件,防泄密软件,CAD加密软件,文件外发加密

问题解决思路:将配置文件用户相关的信息(例如:密码)进行加密使其以密文形式存在,进行初始化连接池的时候进行解密 *** 作,达到成功创建连接池的目的。Tomcat默认使用DBCP连接池(基于common-pool的一种连接池实现),可在下载commons-dbcp源码包commons-dbcp-14-srczip,对orgapachecommonsdbcpBasicDataSourceFactory类修改,把数据库密码字段(加密后的密文)用解密程序解密,获得解密后的明文即可。具体实现:1修改orgapachecommonsdbcpBasicDataSourceFactory类文件找到数据源密码设置部分value=propertiesgetProperty(PROP_PASSWORD);if(value!=null){dataSourcesetPassword(value);}修改为:value=propertiesgetProperty(PROP_PASSWORD);if(value!=null){dataSourcesetPassword(Encodedecode(value));}将配置文件中的“密码”(加密后的结果)取出,调用加解密类中的解密方法Encodedecode(value)进行解密。2加密类Encodejava,本例中使用加密解密模块比较简单只是用来说明问题,密文为明文的十六进制串。publicclassEncode{//编码-普通字符串转为十六进制字符串publicstaticStringencode(Stringpassword){Stringresult=“”;byte[]psd=passwordgetBytes();for(inti=0;ipassword696e65743231urljdbc:oracle:thin:@127001:1521:orcldriverClassNameoraclejdbcdriverOracleDriverusernamewanfang4将修改后的BasicDataSourceFactoryjava和新添加的Encodejava编译后的class类文件重新打包进commons-dbcp-14jar,将该包拷贝进tomcat下的common/lib目录中,重启tomcat。此时tomcat下部署的应用在连接数据源的时候都可以在不暴露密码明文的情况下进行连接。转载,仅供参考。

3des加密很常用

而且算法很多

自己可以随意改

自己设置个加密密钥就行

用户名没必要加密

因为你这不是银行的数据库

感觉差不多就行,如果想万全的话,还是要在数据库的严密性上来做文章。。

以上就是关于如何对sqlite3数据库进行加密全部的内容,包括:如何对sqlite3数据库进行加密、数据库密码加密的怎么看原密码、数据库里加密的密码是怎么实现的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9827147.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存