关于java中的很多知识,其实都是与我们的日常工作与生活息息相关的,涉及到很多方面。关于网络安全的一些点也是非常的重要的。今天就来和大家说一下java中如何保证公钥不被篡改,一起来看一下具体的做法吧。
具体操作如下所示:
将公钥放在数字证书中。只要证书是可信的,公钥就是可信的。
然而公钥加密计算量太大,那么要如何减少耗用的时间?
每一次对话(session),客户端和服务器端都生成一个"对话密钥"(session key),用它来加密信息。由于"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间。
1. 客户端向服务器端索要并验证公钥。
2. 双方协商生成"对话密钥"。
3.双方采用"对话密钥"进行加密通信。上面过程的前两步,又称为"握手阶段"(handshake)。
另外再补充一下相关知识:
SSL工作过程,A:客户端,B:服务器端
1.协商加密算法:A向B发送SSL版本号和可选加密算法,B选择自己支持的算法并告知A
2.服务器鉴别:B向A发送包含公钥的数字证书,A使用CA公开发布的公钥对证书进行验证
3.会话密钥计算:A产生一个随机秘密数,用B的公钥进行加密后发送给B,B根据协商的算法产生共享的对称会话密钥并发送给A
4.安全数据传输:双方用会话密钥加密和解密它们之间传送的数据并验证其完整性
还有就是,TCP对应的应用层协议
FTP:定义了文件传输协议,使用21端口.
Telnet:它是一种用于远程登陆的端口,23端口
SMTP:定义了简单邮件传送协议,服务器开放的是25号端口。
POP3:它是和SMTP对应,POP3用于接收邮件。
HTTP、UDP对应的应用层协议
DNS:用于域名解析服务,用的是53号端口
SNMP:简单网络管理协议,使用161号端口
TFTP(Trival File Transfer Protocal):简单文件传输协议,69
以上就是关于java中如何保证公钥不被篡改的主要内容了,还为大家衍生了一些相关的知识,具体的内容还是很好理解的。如果你想要了解更多java常见问题,敬请关注奇Q工具网。
推荐阅读: