Maison > Article > base de données > 基于Access打造安全快速的应用数据程序
对于一般的桌面软件来说,使用 Access 来进行工程数据或者其他数据存储是一种很常见的处理方式,然后 Access 加密破解技术满天飞,如何保护你的数据? Access 有两种整体加密的方法: 1 )加密码 2 )访问授权,这里不作为讲解的内容介绍,因为采用这两种方
对于一般的桌面软件来说,使用Access来进行工程数据或者其他数据存储是一种很常见的处理方式,然后Access加密破解技术满天飞,如何保护你的数据?
Access有两种整体加密的方法:1)加密码 2)访问授权,这里不作为讲解的内容介绍,因为采用这两种方式都可以较容易的破解。我这里介绍一种较为简单并且实用的方法。
首先定位一下解决什么问题?
使用Access存储数据,解决数据安全问题,要能够支持数据快速查询,能够支持SQL查询。
简单举个例子:班级的学生得分:
张三 99
李四 100
我要求能够查询学生成绩在 60~100分之间的学生列表,但是我又不希望这个数据别人能够不经过我的系统直接看到(实际应用会有这样的需求),怎么办?
这里面有两种需求:模糊名称,不让对方看到。
我想起了二战时的电报破解的方式,老外们把常用的文章中的字母挨个统计一下,得到字母a、b、c等的比例,按照高比例去替换密电得到明文,早期还真是一对一个准,呵呵。这种方式挺好,你不妨给自己一个对照表,混淆一遍,让破解者先来个甜点,容易点的。这样如果使用SQL查询你只需要转换一下即可,你的数据层抽象一下即可,对应用程序完全透明。
然后仅仅上述方式,我相信不能满足很多需求,我们知道很多情况下,信息的重要程度是有差别的,比如上面的例子,我认为分数重要,那么把分数藏起来,即使有人拿到,如果看不到分数也很郁闷。
如何藏?加密?不错,采用加密的方式。针对关键字段进行加密,使用DES、RES等算法加密。
但是加密后如何支持SQL查询?
我们可以采用扩展函数来处理。这里就介绍了。
介绍另一种方式:我称之为“暗度陈仓”,比如我对分数进行DES加密,这个算法加密后的数据是完全没有啥规则的,不具有查询的可能性,我总不能挨个解密,进行数据比对吧?
这样做,太慢了,如果你的数据较少或者时间要求不高的话,也可以。但是分析一下,可以考虑牺牲一下空间,增加一个Ord字段,在加密前对分数进行排序,这样当查询时可以简单的使用二分查找即可判断出你的数据位置,简单而高效的解决你的数据安全问题。
关键是思路,搞清楚这个,实现就很简单了。
基于这个思路,我可以在这上面构建一个数据Schema层,用来封装数据访问,对上层应用完全透明,加密解密完全自动完成。