验证签名
² [ 同生成签名一样先取得签名对象]
² [用公钥初始化签名对象] 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代理
客户端界面
Client代理
Server代理
TCP/IP Web
Server代理
事务处理中心
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 类兼容,所以会话密钥用我自己的方式再上传给银行
² 银行每次确认连接后保留收到的用户的公钥证书。
² 用户形成命令后,先签名然后用约定的会话密钥对数据进行加密。
² 银行收到数据后,先用会话密钥解密,然后检查数据签名,对返回结果用会话密钥加密。
RSS订阅






收 藏
推 荐