仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 666|回复: 12
打印 上一主题 下一主题

[学习教程] 发布一篇用Java的加密机制来回护你的数据

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:15:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。
Java开辟工具包(JDK)对加密和平安性有很好的撑持。个中一个上风就是其内置的对Socket通讯的撑持。因而,很简单做到在服务器和客户之间创建平安的数据流。

Javastreams是一个壮大的编程工具。java.io包供应了良多尺度的流范例,并能很简单的创建本人的流范例。流的一个有效的特性是和链表一样的复杂处置历程。将FileReader和BufferedReader链接起来。我们在用客户机/服务器使用程序的时分也会用到相似的观点。
关头字
关于考证来讲,关头字很主要,运转KeyGen来发生一个关头字。我们接纳同步办法,以是客户机和服务器必需用不异的关头字。
平安socket
我们从一个复杂的类入手下手,它供应我们在一般socket对象之上的加密。机关器创立了变量并初始化了暗码:
outCipher=Cipher.getInstance(algorithm);
outCipher.init(Cipher.ENCRYPT_MODE,key);
inCipher=Cipher.getInstance(algorithm);
inCipher.init(Cipher.DECRYPT_MODE,key);
由于socket是双向的通讯,以是我们接纳两个暗码。加密输入的数据并解密输出的数据。我们利用getInputStream()和getOutputStream(),这两种办法来加密合解密通用的输出和输入的经由包装的数据流。
在JCE的javax.crypto包中包括CipherInputStream和CipherOutputStream这两种流范例。他们吸收输出输入的流对象和暗码对象。
Socket服务器
入手下手写我们的socket服务器类吧。SecretSocketServer在一个端口翻开ServerSocket,当吸收到毗连时,利用SocketHandler发生一个线程来操纵毗连。
Socket句柄
经由过程KeyGen来定位关头字,并创建一个SecretSocket对象。
Keykey=KeyGen.getSecretKey();
this.ss=newSecretSocket(s,key);
一切的socket处置都是经由过程SecretSocket而不是Socket对象。然后我们利用上面的代码:
in=ss.getInputStream();
记着,在SecretSocket中,getInputStream是和CipherInputStream和InputStream相分离的。由于SocketHandler是一个可实行的界面,我们为它天生一个run()办法。这个办法只是在守候socket的数据:
booleanbool=true;
while(bool){
bool=listen();
}
listen办法用来监听socket。
intaByte;
while((aByte=in.read())>=0){
system.out.println((char)aByte);
}
Socket客户
如今我们来看看客户端。客户真个事情和服务器端很类似,只是反过去了。起首,我们创建一个套接字毗连到服务器。利用KeyGen找到关头字,创建一个平安套接字(SecretSocket)。然后我们使用它的OutputStream给服务器发送数据:
Keykey=KeyGen.getSecretKey();
Sockets=newSocket("localhost",4444);
SecretSocketss=newSecretSocket(s,key);
OutputStreamos=ss.getOutputStream();
os.write("HelloWorld!".getBytes());
os.flush();
os.close();
s.close();
总结
经由过程JCE中的java流和链表,我们能够轻松的加密基于socket的收集通讯。

诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。
山那边是海 该用户已被删除
沙发
发表于 2015-1-20 18:32:50 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
愤怒的大鸟 该用户已被删除
板凳
发表于 2015-1-21 07:46:17 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
爱飞 该用户已被删除
地板
发表于 2015-1-25 14:06:43 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
变相怪杰 该用户已被删除
5#
发表于 2015-2-2 22:04:07 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
飘飘悠悠 该用户已被删除
6#
发表于 2015-2-8 08:58:49 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
蒙在股里 该用户已被删除
7#
发表于 2015-2-25 06:47:11 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
简单生活 该用户已被删除
8#
发表于 2015-2-28 10:37:06 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
灵魂腐蚀 该用户已被删除
9#
发表于 2015-3-1 21:35:29 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
萌萌妈妈 该用户已被删除
10#
 楼主| 发表于 2015-3-2 06:00:46 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
小女巫 该用户已被删除
11#
发表于 2015-3-11 02:19:55 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
老尸 该用户已被删除
12#
发表于 2015-3-17 19:08:02 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
活着的死人 该用户已被删除
13#
发表于 2015-3-24 19:30:21 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 03:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表