Java加解密——初步认识密码体制

     当信息无处不在,安全问题随即暴露,网络安全、信息安全等是大家关注的重要话题,如何构建安全的应用考验着每一位架构师和软件工程师们。解决安全问题必定离不开密码学的运用,密码学在古代战争中就得到了运用,发展到近代计算机的出现,密码学如虎添翼,从此密码学进入了计算机时代,并催生了一系列加密算法及新一代密码体制。

一、对称密码体制

图 1-1

     如图1-1所示,发送者和接收者共享密钥,发送者用密钥加密,接收者用同一个密钥做加密的逆运算(解密),对称加密体制开放性差,双方均要对密钥妥善保存。
二、非对称密码体制

图1-2


图1-3

     非对称加密体制中,加密的密钥和解密的密钥是不同的两个,一个公开(公钥),一个保密(私钥),这两个密钥都可以进行加密和解密的操作,消息的加密解密需要公私钥共同参与,公钥加密则需要私钥解密,反之亦然,如图1-2、1-3所示。其优点在于密钥的管理有一定的开放性,管理相对简单,但是非对称体制需要更高的计算资源,效率较对称体制要低。

三、消息摘要函数

图1-4

     消息摘要函数(哈希函数、单向函数),用来验证消息的完整性,通过消息摘要函数可以创建散列值(数字指纹),如图1-4所示,发送者通过消息摘要函数对消息处理,产生该消息对应的散列值,然后将消息明文和散列值一并发给接收者。接收者得到消息以后,以与发送者共同商定的相同的消息摘要函数算法,对收到的消息明文进行处理,生成散列值,由于接收者使用的函数算法与发送者使用的是相同的,因此,产生的散列值也是相同的,接收者通过将接收的散列值和自己生成的散列值比较,确定消息明文在传递中没有被篡改。
     它的有点在于消息长度不受限制、函数有确定的结果,两个散列值不同,那么输入的原始消息值也不同、函数的运算不可逆,无法根据散列值推算出原始消息值、不同的消息所产生的散列值一定不同。
     广泛运用于消息的完整性校验;

四、数字签名

图1-5
     
     消息摘要函数可以保证消息的完整性,但是有时候我们只验证消息的完整性是远远不够的,还要保证消息的可认证性和发送者的不可抵赖性,这符合数字签名的主要特征:完整性、验证性、不可抵赖性,而要实现验证性和不可抵赖性则离不开非对称加密体制的运用。
     签名流程如图1-5所示,注意,在这里,私钥只用于签名(签名算法),公钥只用于验证签名(验证签名算法),不能反过来使用,公钥私钥成对使用,私钥加密则公钥解密,公钥加密则私钥解密。发送者生成一对公私钥,并将公钥发布给接收者,发送者使用私钥将消息签名,得到数字签名串,然后利用私钥对消息加密,然后将消息加密串和签名串一并发送给接收者,接收者收到消息后首先利用公钥对消息的加密串进行解密,然后利用公钥的验证签名函数对原始消息和签名串进行验证处理。在这种机制下发送者无法否认自己发送的消息。
     当接收者收到消息后还要给发送者一个应答时应怎样做呢?因为接收者拿到的是发送者发布的公钥,公钥顾名思义是公开的,当接收者利用公钥签名发送给接收者,接收者再利用私钥验证签名显然是不合理的。怎么解决这种双向认证呢?很简单,接收者也生成一对公私钥,将公钥公布给发送者,以完成消息的发送及响应的双向通路,如图1-6:

图1-6


     通过上述对密码体制的初步认识,对密码学的运用有了基本的了解,后续会继续深入探讨如何基于Java实现各密码体制下的加解密。
     
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值