信息安全课程设计金融服务系统Word文档下载推荐.doc
《信息安全课程设计金融服务系统Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《信息安全课程设计金融服务系统Word文档下载推荐.doc(39页珍藏版)》请在冰豆网上搜索。
本人任务:
制作完整的金融信息系统。
主要制作登录、注册、信息发布窗体、服务器窗体以及各窗体之间的链接与监听,使之能进行完整的信息交互过程。
序号
评分内容
满分
实际得分
1
学习态度认真,考勤全到
10
2
方案设计合理,满足安全需求,具有可操作性
25
3
系统功能完善、与方案一致、运行无误
30
4
报告撰写思路清晰、论证充分,行文流畅,书写规范
20
5
答辩时思路清晰,重点突出,准确无误
6
设计有独到见解
总分
100
等级
五级制
评语:
指导教师签名:
年月日
目录
目录 3
第一章课程设计背景 4
第二章设计的方案 4
一.注册和登录时——MD5加密算法:
5
二.沟通过程中,用AES进行分组加密 6
三.(MAC)进行完整性检查以及抵抗窃听者的重放攻击 7
第三章方案分析 8
一.MD5安全性:
8
二.AES安全性:
9
三.MAC安全性:
第四章设计成果 9
一.以下是该系统的主要功能流程图:
10
二.以下是该系统主要界面:
11
1、首先运行服务器,后启动服务器。
12
2.客户登录 13
3.客户注册 13
4.金融消息发布 14
第五章总结 16
参考文献 16
附录(代码) 16
第一章课程设计背景
金融业是指经营金融商品的特殊企业,它包括银行业、保险业、信托业、证券业、租赁业和典当业。
在现代社会中,金融业用途广泛:
第一,社会各阶层各行业所有人,都需要资金融通,不论长期的或短期的资金需求,不论国内的或海外的现金需求,不论短期的或远期的资金需求,金融业都可以满足这些需要。
第二,已盈利的企业或个人,他的金钱需要有个存放或运用的去处,金融业正可以满足这个需要。
所以金融服务系统是一个具有优化资金配置的作用的系统,而当下也是一个信息争夺的时代,因此金融信息获取的及时性就相关人员来说就显得尤其重要,影响到公司或个人的投资或融资决策。
于是,金融业经营手段的现代化是急需解决的问题,运用电子计算机和自动化服务能保证信息的共享性和及时性,这也是我们开发本系统的目的。
我们的目的是:
创造一个为客户提供金融信息的平台,金融服务人员可以在该平台发布信息,而所有的注册登录客户都可以及时跟进最新的金融信息,以做出相应的决策。
第二章设计的方案
本系统是运用纯java语言制作的金融服务系统化,客户端—服务器—客户端的消息交互模式。
客户端功能主要包括客户注册、登录、信息发送、在线用户显示。
提供给客户一个友好的界面,方便客户的操作,从服务器上得到数据后再显示给客户,并根据不同的需求,向服务器发送各种请求。
服务端的功能主要包括接受客户注册(采用口令、MD5方式管理保护注册信息)、接受客户登录请求、提示客户离线以及显示端口号、服务器当前状态等。
服务器运行后,开启服务就可以开始监听客户请求,如有信息发送过来,首先发送确认信息,然后建立一个线程,处理接受到得数据,处理结束后,线程就结束,这样可以实时接受每一个客户的请求,不会因为处理一个客户的请求而忽略了其他客户的请求。
我们开发的系统应满足以下技术要求:
一、登录、注册、服务器、客户端等窗体的设计与连接。
二、实现客户账号和密码的对应安全存储;
三、对所有的交流信息进行分组加密;
四、对所有的交流信息进行完整性检验;
五、实现服务器端对客户身份的验证;
六、能够抵挡的攻击人的防重放攻击。
1、简介:
MD5的全称是Message-DigestAlgorithm5(信息-摘要算法)。
它的作用是让大容量信息在用数字签名软件签署私人密匙前被"
压缩"
成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。
2、应用:
MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。
MD5广泛用于加密和解密技术上。
本文描述的系统中用户的密码就是以MD5经加密后存储在服务器。
当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在服务器中的MD5值进行比较,进而确定输入的密码是否正确。
通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。
这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。
3、算法描述:
对MD5算法简要的叙述可以为:
MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
4、具体在本系统中的应用:
① 建立MD5Encrypt1类,主要代码为:
byte[]btInput=s.getBytes();
MessageDigestmdInst=MessageDigest.getInstance("
MD5"
);
mdInst.update(btInput);
//处理数据
byte[]md=mdInst.digest();
//完成哈希计算
② 注册时,调用MD5Encrypt1类创建对象:
MD5Encrypt1md5=newMD5Encrypt1();
data.password=md5.MD5(data.password);
由此将注册客户的密码用MD5加密,然后才发送到服务器。
③ 第三,登录时,和注册时加密方法一样。
二.沟通过程中,用AES进行分组加密
沟通过程中,我们对各种沟通信息采用对称密码分组加密方法,首先新建一个提供AES加密、解密算法的类,消息从发送端发送时调用AES加密算法,接受端接受到信息再调用AES解密算法进行解密。
AES(TheAdvancedEncryptionStandard)是美国国家标准与技术研究所用于加密电子数据的规范。
它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。
在应用方面,尽管DES在安全上是脆弱的,但由于快速DES芯片的大量生产,使得DES仍能暂时继续使用,为提高安全强度,通常使用独立密钥的三级DES。
但是DES迟早要被AES代替。
AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。
与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。
通过分组密码返回的加密数据的位数与输入数据相同。
迭代加密使用一个循环结构,在该循环中重复置换(permutations)和替换(substitutions)输入数据。
4、具体在本系统中的应用:
① 加密时:
byte[]raw=sKey.getBytes();
SecretKeySpecskeySpec=newSecretKeySpec(raw,"
AES"
//根据给定的字节数组构造一个密钥
Ciphercipher=Cipher.getInstance("
AES/CBC/PKCS5Padding"
//"
算法/模式/补码方式"
//生成一个实现指定转换的Cipher对象
IvParameterSpeciv=newIvParameterSpec("
0102030405060708"
.getBytes());
//初值
//使用CBC模式,需要一个向量iv,可增加加密算法的强度
cipher.init(Cipher.ENCRYPT_MODE,skeySpec,iv);
//加密
byte[]encrypted=cipher.doFinal(sSrc.getBytes());
② 解密时:
byte[]raw=sKey.getBytes("
ASCII"
cipher.init(Cipher.DECRYPT_MODE,skeySpec,iv);
//解密
byte[]encrypted1=hex2byte(sSrc);
③ StringaesKey=randkey.randomString(16);
//调用方法随机产生AES密钥
三.(MAC)进行完整性检查以及抵抗窃听者的重放攻击
1、简介:
MAC算法(MessageAuthenticationCodes),即消息认证码(带密钥的Hash函数):
消息的散列值由只有通信双方知道的秘密密钥K来控制。
此时Hash值称作MAC。
2、应用:
消息认证码是基于密钥和消息摘要所获得的一个值,可用于数据源发认证和完整性校验。
是通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具。
3、算法描述:
在发送数据之前,发送方首先使用通信双方协商好的散列函数计算其摘要值。
在双方共享的会话密钥作用下,由摘要值获得消息验证码。
之后,它和数据一起被发送。
接收方收到报文后,首先利用会话密钥还原摘要值,同时利用散列函数在本地计算所收到数据的摘要值,并将这两个数据进行比对。
若两者相等,则报文通过认证。
算法流程如下:
① Stringmackey=mac.getMacKey();
//调用方法随机产生MAC密钥
Stringmacmiwen=mac.toHex(mac.encryptHMAC(data,mackey));
//MAC加密
② 取得HMAC密钥:
KeyGeneratorkeyGenerator=KeyGenerator.getInstance("
HmacMD5"
SecretKeysecretKey=keyGenerator.generateKey();
③ 执行加密:
byte[]bkey=newBASE64Decoder().decodeBuffer(key);
SecretKeysecretKey=newSecretKeySpec(bkey,"