基于Java的SQL Server数据库加解密系统设计与实现

news/2024/5/19 18:49:10/文章来源:https://blog.csdn.net/sheziqiong/article/details/127171404

目 录
摘 要 1
ABSTRACT 2
第1章 绪论 3
1.1 数据库加解密系统开发背景 3
1.2 国内外现状 3
1.3 本文的主要工作 4
1.4 论文的组织结构 4
第2章 数据库加密的基本理论 6
2.1 数据库加密的三种级别 6
2.2 数据库加密的粒度 8
2.2.1 数据库级的数据库加密 8
2.2.2 表(文件)级的的数据库加密 8
2.2.3 记录级的的数据库加密 8
2.2.4 字段级的数据库加密 9
2.2.5 数据项级的数据库加密 9
2.3数据库加密的限制 9
第3章 密码学技术 10
3.1 对称加密 11
3.1.1 对称加密模型 11
3.1.2 AES和DES算法 12
3.2 非对称加密 13
3.2.1 非对称加密基本原理 13
3.2.2 RSA加密算法 14
3.3 加密算法分析 15
第4章 数据加密的密钥管理设计 15
4.1加解密控制模块 16
4.2 存储库 16
4.3 管理器 18
4.3.1 密钥生命周期与密钥更新 18
4.3.2 密钥销毁 19
4.4 对外的密钥列表 19
4.4.1 密钥集合 20
4.4.2 密钥分配 20
第5章 数据库加密的设计与实现 20
5.1 总体框架 21
5.2 加解密控制模块和算法 22
5.2.1加解密控制模块 22
5.2.2 加解密控制模块的实现 22
5.2.3 密码算法 22
5.3 存储库和列表 24
5.3.1 存储库 24
5.3.2 实现数据库中的存储库 25
5.3.3 程序中存储库的实现 25
5.3.4 列表 28
5.3.5 列表的实现 28
5.4 密钥管理器 29
5.5 命令行解析 30
5.6 客户端和服务器 32
5.7系统的运行 33
5.7.1 以管理员的身份登录 34
5.7.2 生成二级密钥 34
5.7.3 新建两个有效的密钥 35
5.7.4 完成注册登录步骤 36
5.7.5 在worker数据库表的两个不同类型的列加密 38
5.7.6 SQL语句 40
5.7.7 更换二级密钥 45
第6章 结论 48
致谢 48
参考文献 50
附录 51
本文讨论的主要问题,是研究、开发可行性好和性能优秀的数据库加密系统。借助Visual Studio、eclipse编程工具和SQL Server 2012数据库,结合数据库安全模型,使用对称和非对称加密算法,并采用合适的密钥管理机制设计并实现了一个基于SQL Server的数据库加解密原型系统。工作内容主要从下面几个方向展开:
数据库加密系统选取对称加密算法。以使数据库加密系统具有较优良加解密速度,数据保密性高的优点,并且通过建立密钥管理机制来使这个数据库加密系统更加安全、更加人性化。
然后对数据库加密的关键技术进行分析与自我调整。实现密钥分配、备份,并对密钥的生命周期和密钥的更改进行研究与设计。
将数据库加密理论加以实践证明,基于C/S模式,设计与实现一个切合理论的数据库加密原型系统,包括在服务器建立密钥管理机制,为客户端提供一系列的加解密指令,使得不同级别的用户存取访问密文数据库,对该理论的可行性做出了肯定的回答。
第3章密码学技术
密码学就是去探讨如何在不被人知道信息的情况下去交流信息。按照人的正常思维去思考,会有两种方法:第一种就是找一个无人的地方,然后再去交流信息;第二种是,用一种只有通信双方才能理解的方式,例如:眼神交流、肢体语言等,即使是别人能发现,也不能理解是什么意思。在计算机的领域,在计算机网络中,我们只要开启抓包的工具,一般都能得到通信报文,再者,不是每个人跟别的人都是专用链路,所以说第一种创造无人环境一般是行不通的。考虑到种种限制,隐藏信息的涵义(专业地说加密)才是应该选择的解决方案
按隐藏信息的涵义的方式来对加密算法进行区分,所有的算法都被分到两个集合中,一个集合叫对称加密和另一个集合叫非对称加密。
3.1 对称加密
对称加密最大的特点应该就是加解密使用相同的密钥,这符合人们的思维惯性,因为同一把锁,就应该用同一种钥匙,所以它也被称为传统密码算法。当然对称加密发展至今,加解密钥也不一定是相同的了,本文转载自http://www.biyezuopin.vip/onews.asp?id=14538但终究是对称加密算法,加解密要之间是可以相互推导,实质还是加解密使用相同的密钥。
分组加密(块加密)和序列加密(流加密)是这种加密的两种主要形式。
对称加密的安全性满足一下两个要求:
(1)随着时间的流逝,总会有一些密文和明文会无意地泄露出去,但即使这些东西被不法分子得到,他也不能通过这些数据来猜到我们的密钥。
(2)密钥和加密算法是关键的两环,一旦这两个环节被窃取,则数据相当于暴露在空气中,随时可以被他人获取,所以要将密钥放在真空的环境下。
3.1.1 对称加密模型
对称加密模型有5个基本成分:
(1)明文:可以通过大脑的识别后可以被人们所理解的数据。
(2)加密算法:能实现给现实生活的信息编上密码,只有知道密码,才能读出正确的信息,达到保密的目的这个功能的准确和完整的描述。
(3)密钥:就是加锁的钥匙,这里被加锁的是明文,锁就是加密算法。但是最为奇特的是这个锁适用多个钥匙,不过不同钥匙,加锁后的情况不相同。
(4)密文:作为算法的返回值,用人的肉眼看是一定看不懂的,即使是能看懂也不是直观的意义,依赖于明文和密钥。
(5)解密算法:就是逆加密算法,反向加密。参数是密文和密钥,返回值为原始明文。

package client;import java.io.*;
import java.net.*;
import java.util.*;import server.Server;/*** 客户端*/
public class Client {public Socket socket = null;public BufferedReader br = null;public PrintWriter pw = null;public Scanner scanner = new Scanner(System.in);// 从键盘读取public ReadServerMessage rsm = null;public Client() {try {// 创建客户端socketsocket = new Socket(Server.HOST, Server.PORT);// 读取从客户端发来的消息br = new BufferedReader(new InputStreamReader(socket.getInputStream()));// 写入信息到服务器端pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));rsm = new ReadServerMessage(this, socket, br);// 从服务器读取消息} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {new Client();}public void close() {try {System.out.println("close......");br.close();br = null;pw.close();pw = null;socket.close();socket = null;} catch (Exception e) {e.printStackTrace();}}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_19477.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(附源码)SSM药品销售平台设计与实现JAVA计算机毕业设计项目

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

python读写操作redis数据库

python读写操作redis数据库 redis有16个逻辑数据库(编号db0到db15),每个逻辑数据库数据是隔离的,默认db0。选择第n个逻辑数据库,命令select n ,python连接时可指定数据库编号(0~15)…

【Linux内核】内存管理——内核的内存分区

转载请注明: https://www.cnblogs.com/Ethan-Code/p/16619091.html 内核的内存分区 32位机中的虚拟内存大小为4GB,其中0~3GB用于用户空间,3~4GB用于内核空间。 内核的内存空间只有1G,这一部分内存在进程中共享,与用户空间隔离&…

WSL2和Docker使用GPU

文章目录安装Docker-Desktop简单配置dockerwin10安装支持WSL2的nvidia驱动ubuntu配置 CUDA ToolkitGPU测试及问题处理安装Docker-Desktop 安装Docker-Desktop Docker-Desktop下载地址 :https://www.docker.com/products/docker-desktop/ 接着就一路无脑安装即可。 下载完成之…

PTA - 数据库合集10

目录 10-52 查询姓‘李’的学生记录 10-54 查询所有学生的平均成绩 10-67 sql-insert-sample 10-68 sql-delete-sample 10-72 单表查询:根据运费查询订单信息 10-52 查询姓‘李’的学生记录 分数 5 全屏浏览题目 切换布局 作者 张庆 单位 集美大学 本题目要…

MaxViT实战:使用MaxViT实现图像分类任务(一)

MaxViT实战摘要安装包安装timm数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集摘要 MaxViT,是今年谷歌提出分层Transformer的模型,将注意力模型与卷积有效地融合在一起。在图像分类方面,MaxViT 在各种设置下都达到了最先进的性能&…

数据结构子KMP算法

传统从主串找子串方法 然子串从第一个开始,一个个比对,相同比对第二个字母 不同然子串后移一位重新开始比较 直至找到全部相同的或者主串里面没有让子串比较的字母了 这样的算法太暴力,执行效率太低 KMP算法 来说我们人脑对于字符串匹配的…

Linux第三章——用户与组管理

用户与组账号 一个用户可以隶属于不同的组一个组可以包含若干用户系统通过账户对用户与组进行管理 账号 Linux系统账号分为用户账号和组账号 用户账号:每个系统的操作者拥有一个用户账号,每个用户账号具有唯一的标识UID和自己所属组的标识GID。组账号…

【Android-JetpackCompose】5、三阶段:组合、布局、绘制,架构分层,设计原则、性能最佳实践

文章目录一、帧的3个阶段1.1 第 1 阶段:组合1.2 第 2 阶段:布局1.3 第 3 阶段:绘制二、读取 state2.1 优化读取 state三、重组循环(循环阶段依赖项)四、架构分层五、设计原则5.1 控制5.2 自定义六、性能最佳实践6.1 使…

c++类和对象

前言 在学习完漫长的C语言,那么这篇文章也算是开始踏上了高级语言之路 。古人云:路漫漫其修远兮,吾将上下而求索。c的道路才开始,那么我们应该为此开始思考了。余甚 愚,余认为c有太多细节了,必定耗时细磨才…

实验一:贝叶斯神经网络及其如何用随机梯度马尔可夫链蒙特卡洛有效训练

0.实验环境搭建: 源代码获取: 来源一:google 来源二:web 来源三:github 环境: conda create --name python36_google_deep python3.6 conda activate python36_google_deep #建议按照顺序安装 pip inst…

基于FPGA的图像边缘检测

基于FPGA的图像边缘检测一、图像处理算法1.灰度转换2.高斯滤波3.二值化4.Sobel二、项目框架1.摄像头配置模块2.图像处理模块3.数据缓存模块4.其它模块三、部分代码1.数据采集模块2.读写控制模块四、参考五、源码简介:基于FPGA,摄像头实时采集图像数据&am…

【Algorithm】Karatsuba Multiplications 乘法算法

Karatsuba Multiplications Q1: 请计算:x1234x1234x1234, y5678y5678y5678, x∗y?x*y?x∗y? 这个问题其实我们在三年级的时候就学过,用乘法竖式进行运算。但是有没有其他的方法,或者说,如果 x,yx,yx,y 非常大的时候…

drf 视图类 GenericAPIView 及扩展

drf 视图类 GenericAPIView 及扩展 文章目录drf 视图类 GenericAPIView 及扩展1、2个视图基类1.1、GenericAPIView:属性和方法1.2、基于APIView 写5个接口1.3、基于GenericAPIView写5个接口2、5个视图扩展类2.1 基于GenericAPIView5个视图扩展类写接口3、九个视图子…

【UCB操作系统CS162项目】Pintos Lab2:用户程序 User Programs(下)

在上节中,我们已经完成了 Lab 2 要求的参数传递和系统调用中的 halt, exit 以及向 stdout 输出的 write,最终停在了 wait 的实现之前。本节就先从 wait 和 exec 继续。 Syscall wait exec:实现父子进程 讲义中 wait 的要求是这样的&#x…

这几个文字翻译工具确定不试试看?

想问问大家平常会接触到TXT文件吗?这是微软在操作系统上附带的一种文本格式,主要是保存纯文字信息,像我们电脑上自带的记事本工具,就是使用这种文件格式。有时候我们需要将文本内容翻译成中文。那你知道如何实现TXT翻译成中文吗&a…

LRU缓存——哈希表+双向链表

一、题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: 1)LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 2)int get(int key) 如果关键字 key 存在于缓存中,…

STA系列 - 特殊时序分析multicycle/half-cycle/false path

文章目录什么是require time/arrive timeMulticycle PathHalf PathFalth Path本篇文章介绍的是特殊的时序path, 全文为视频笔记,以及自己的理解https://www.bilibili.com/video/BV1if4y1p7Dq?p10&vd_source84d1070e8334ce7e2bb0bd110abcf1a7什么是require time…

使用服务器跑模型——案例2

案例2 在本案例中我们使用vscode来上传/下载文件,服务器端编程和debug。 下载 vscode 在官网下载vscode正式版,别使用家庭版。下载地址https://code.visualstudio.com/Download。 使用 vscode 连接服务器 在vscode扩展中搜索ssh并下载安装。 安装成功…

【机器学习】熵权算法确定权重 原理+完整MATLAB代码+详细注释+操作实列

【机器学习】熵权算法确定权重 原理完整MATLAB代码详细注释操作实列 文章目录 1. 熵权法确定指标权重 (1)构造评价矩阵 Ymn (2)评价矩阵标准化处理 (3)计算指标信息熵值 Mj (4&#xff09…