欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

基于Access打造安全快速的应用数据程序

程序员文章站 2022-05-22 10:26:53
...

对于一般的桌面软件来说,使用 Access 来进行工程数据或者其他数据存储是一种很常见的处理方式,然后 Access 加密破解技术满天飞,如何保护你的数据? Access 有两种整体加密的方法: 1 )加密码 2 )访问授权,这里不作为讲解的内容介绍,因为采用这两种方

对于一般的桌面软件来说,使用Access来进行工程数据或者其他数据存储是一种很常见的处理方式,然后Access加密破解技术满天飞,如何保护你的数据?

Access有两种整体加密的方法:1)加密码 2)访问授权,这里不作为讲解的内容介绍,因为采用这两种方式都可以较容易的破解。我这里介绍一种较为简单并且实用的方法。

首先定位一下解决什么问题?

使用Access存储数据,解决数据安全问题,要能够支持数据快速查询,能够支持SQL查询。

简单举个例子:班级的学生得分:

张三 99

李四 100

我要求能够查询学生成绩在 60~100分之间的学生列表,但是我又不希望这个数据别人能够不经过我的系统直接看到(实际应用会有这样的需求),怎么办?

这里面有两种需求:模糊名称,不让对方看到。

我想起了二战时的电报破解的方式,老外们把常用的文章中的字母挨个统计一下,得到字母abc等的比例,按照高比例去替换密电得到明文,早期还真是一对一个准,呵呵。这种方式挺好,你不妨给自己一个对照表,混淆一遍,让破解者先来个甜点,容易点的。这样如果使用SQL查询你只需要转换一下即可,你的数据层抽象一下即可,对应用程序完全透明。

然后仅仅上述方式,我相信不能满足很多需求,我们知道很多情况下,信息的重要程度是有差别的,比如上面的例子,我认为分数重要,那么把分数藏起来,即使有人拿到,如果看不到分数也很郁闷。

如何藏?加密?不错,采用加密的方式。针对关键字段进行加密,使用DESRES等算法加密。

但是加密后如何支持SQL查询?

我们可以采用扩展函数来处理。这里就介绍了。

介绍另一种方式:我称之为暗度陈仓,比如我对分数进行DES加密,这个算法加密后的数据是完全没有啥规则的,不具有查询的可能性,我总不能挨个解密,进行数据比对吧?

这样做,太慢了,如果你的数据较少或者时间要求不高的话,也可以。但是分析一下,可以考虑牺牲一下空间,增加一个Ord字段,在加密前对分数进行排序,这样当查询时可以简单的使用二分查找即可判断出你的数据位置,简单而高效的解决你的数据安全问题。

关键是思路,搞清楚这个,实现就很简单了。

基于这个思路,我可以在这上面构建一个数据Schema层,用来封装数据访问,对上层应用完全透明,加密解密完全自动完成。