Java常用的两种加密原理

发表于:2018-1-17 10:40

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:song2song    来源:稀土掘金

  加密定义:
  1.对称加密:需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要。因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成重中之重的问题。在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。
  2.非对称加密:在通信双方,如果使用非对称加密算法,一般遵从这样的原则:公钥(publickey)加密,私钥(privatekey)解密。同时,一般一个密钥加密,另一个密钥就可以解密。因为公钥是公开的,如果用来解密,那么谁都可以解密消息,那么私钥和公钥没什么区别了。因此,私钥也可以认为是个人身份的证明。非对称加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。
  3.数字摘要:数字摘要是将任意长度的消息变成固定长度的短消息,它类似于一个自变量是消息的函数,也就是Hash函数。数字摘要就是采用单向Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。
  4.数字签名:数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明,一次数字签名涉及到一个哈希函数、接受者的公钥、发送者的私钥。
  5.数字证书:是一个经证书授权中心(CertificateAuthority)数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名,有效期。
  使用原理:
  1.对称加密:甲和乙是一对生意搭档,他们住在不同的城市。由于生意上的需要,他们经常会相互之间邮寄重要的货物。为了保证货物的安全,他们商定制作一个保险盒(即经过算法加密),将物品放入其中。他们打造了两把相同的钥匙(双方持有对称、相同的秘钥)分别保管,以便在收到包裹时用这个钥匙打开保险盒,以及在邮寄货物前用这把钥匙锁上保险盒。这样看来也印证上面所说的对称加密最重要的问题在于如何将“钥匙”安全的送达并保存。
  2.非对称加密:A和B两家公司,需要交流重要信息(比如交易金额发起和交易结果通知)。A需要保证自己的发起金额准确,必须进行信息加密,B公司是实际金额的操作者(帮A公司代收代付),A使用B给的公钥加密数据,B使用自己的私钥解密执行金额交易。这样只有和B公司合作的并持有B公司发放的公钥才能发起交易。反之,A公司也只识别自己给了公钥的B公司加密的数据。这样就是最基本的非对称加密的用法。但是有一个新的问题是,假如同样持有B公司公钥的C公司模拟或从中修改了A公司发起数据并加密传给了B,B不知道是C伪造的执行了操作就会给A带来经济损失。所以新的问题出现了:身份认证和信息完整性必须验证!
  A:将被发送文件用SHA编码加密产生128bit的数字摘要,用自己的私用密钥对摘要再加密,这就形成了数字签名。然后将使用B公钥加密的密文和加密的摘要同时传给B。
  B:用A公共密钥对数字签名解密(这里保证了只有A的身份),同时对收到的密文使用自己的私钥解密,在用SHA编码加密产生又一摘要。将解密后的摘要和用SHA编码加密产生的又一摘要相互对比。如两者一致,则说明传送过程中信息没有被破坏或篡改过(这里保证了数据的完整性)。
  至此,AB互有一对公私钥,这样就保证了信息都是对方加密的密文,别人看不了,也无法修改。但是有一个新的问题:假如拥有B公钥的C公司偷换了A放在B公司的A的公钥,换成自己的C的公钥,然后模拟A发送信息,这样一样会让B不知道是A发起的交易!引入新的概念:数字证书。A的公钥经过了公证,这就可以保证B使用公钥解开的数字签名肯定是A的数字签名。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号