毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

java网络安全论文附程序 第3页

更新时间:2007-10-13:  来源:毕业论文

 

使用 JDK 1.2 API 来构造自己的例程

 基础 API

产生公钥和密钥对

²        [ 得到密钥产生器]KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN");

²        [ 初始化密钥产生器] SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN"); keyGen.initialize(1024, random);

²        [产生公钥和密钥] KeyPair pair = keyGen.generateKeyPair();PrivateKey priv = pair.getPrivate();  PublicKey pub = pair.getPublic();

 

对数据签名

²        [ 得到一个签名对象] Signature dsa = Signature.getInstance("SHA1withDSA", "SUN");

²        [初始化签名对象]  dsa.initSign(priv);

²        [对数据签名 ] dsa.update(buffer, 0, len);

²        [得到签名的数据] byte[] realSig = dsa.sign();

存储签名和公钥

²        签名结果直接按字节流存储

²        公钥通过pub.getEncoded(); 先转换为字节流来处理

从文件中取得公钥

²        先从文件中读到字节流中  à encKey

²        [构造一个密钥说明类]  X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(encKey);

²        [构造一个密钥管理器]  KeyFactory keyFactory = KeyFactory.getInstance("DSA", "SUN");

²        [取得公钥]  PublicKey pubKey = keyFactory.generatePublic(pubKeySpec);

验证签名

²        [ 同生成签名一样先取得签名对象]

²        [用公钥初始化签名对象]  sig.initVerify(pubKey);

²        [取得被签名的数据] sig.update(buffer, 0, len);

²        [验证] boolean verifies = sig.verify(sigToVerify);

 

关于访问控制支持

Policy

 

 

SUN java 包中的对安全的支持的接口( Interface )

java.security.Certificate

java.security.Key

java.security.Principal   可以提供 identify 的任何实体

java.security.PrivateKey

java.security.PublicKey

 

java.security.acl 还提供了支持访问控制的接口

java.security.acl.Acl  多个 acl 的入口的集合

java.security.acl.AclEntry  acl 的入口

java.security.acl.Group  一组 Principal

java.security.acl.Owner  Acl 的管理者

java.security.acl.Permission  控制信息

 

运用自己的算法类和 Java JDK 支持完成网络银行原型

     前段时间我用 java 实现了课程中几个重要的算法 : 加密的 des 算法, 通过大数类的支持实现了 RSA 算法 MD5 函数及带密码的签名算法, 但由于我还没有找到比较好的 Java 处理字节流的方法,所以接口不是很清晰,特别是用了大数类,使得网上的数据传输比较麻烦, 而目前我又没办法找到 java RSA 加密算法的支持代码 [ 可以从网上的 JCE 部分找到 ], 这部分就使用了我编的算法, 加上时间关系我不能实现用x.509 标准来表示公钥等,所以系统的设计不是很流畅,权当是课后的一次练习。

系统设计

大致的示意图:

< 由于钱目前不能通过 Internet  传输,这里认为客户端是一个管存取钱的代理 >

Client代理 向客户端提供的接口有:

0.  Login ( [in] Uid , [in] password )

1.         UpdateBalance([ in ] AccountNumber , [ int ] AccountHolder ,[ in ] AccountBalance [out] errInfo)

/取操作。BankServer 确认用户帐号和用户后更改用户的存款数目。

2.         CloseAccount([ in ] AccountNumber , [ int ] AccountHolder ,[ in ] AccountBalance )

消户。BankServer 确认用户帐号和用户后将户头取消。

 

 安全性方面的测略

²         由于要求在流览器中实现,在本地存取证书的方式是不可行的,对于用户身份认证还是采取了传统的 uid + PWD 的形式,但为了保密,在上传时先用银行的公钥用 RSA 算法加密 [ 该信息直接放在 Applet 的参数中 ]

²         由于没有证书管理措施,不妨认为用户是先执有效证件到银行开户以后取得帐号,设置了密码。用户在每次连接前先生成自己的一份证书,在Log in 时将公钥用x.509的格式[ java 类支持]上传给银行, 由于我自己的算法没法和java 类兼容,所以会话密钥用我自己的方式再上传给银行

²         银行每次确认连接后保留收到的用户的公钥证书。

²         用户形成命令后,先签名然后用约定的会话密钥对数据进行加密。

²         银行收到数据后,先用会话密钥解密,然后检查数据签名,对返回结果用会话密钥加密。

上一页  [1] [2] [3] 

java网络安全论文附程序 第3页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。