萌萌妈妈 发表于 2015-1-18 11:15:12

发布一篇用Java的加密机制来回护你的数据

最初被命名为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好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

变相怪杰 发表于 2015-2-2 22:04:07

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台

飘飘悠悠 发表于 2015-2-8 08:58:49

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台

蒙在股里 发表于 2015-2-25 06:47:11

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

简单生活 发表于 2015-2-28 10:37:06

是一种使网页(Web Page)产生生动活泼画面的语言

灵魂腐蚀 发表于 2015-3-1 21:35:29

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

萌萌妈妈 发表于 2015-3-2 06:00:46

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

小女巫 发表于 2015-3-11 02:19:55

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

老尸 发表于 2015-3-17 19:08:02

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

活着的死人 发表于 2015-3-24 19:30:21

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。
页: [1]
查看完整版本: 发布一篇用Java的加密机制来回护你的数据