Java 常用的两种加密原理

栏目: Java · 发布时间: 8年前

内容简介:Java 常用的两种加密原理

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带来经济损失。所以新的问题出现了:身份认证和信息完整性必须验证!

Java 常用的两种加密原理

A:将被发送文件用SHA编码加密产生128bit的数字摘要,用自己的私用密钥对摘要再加密,这就形成了数字签名。然后将使用B公钥加密的密文和加密的摘要同时传给B。

B:用A公共密钥对数字签名解密(这里保证了只有A的身份),同时对收到的密文使用自己的私钥解密,在用SHA编码加密产生又一摘要。将解密后的摘要和用SHA编码加密产生的又一摘要相互对比。如两者一致,则说明传送过程中信息没有被破坏或篡改过(这里保证了数据的完整性)。

至此,AB互有一对公私钥,这样就保证了信息都是对方加密的密文,别人看不了,也无法修改。但是有一个新的问题:假如拥有B公钥的C公司偷换了A放在B公司的A的公钥,换成自己的C的公钥,然后模拟A发送信息,这样一样会让B不知道是A发起的交易!引入新的概念:数字证书。A的公钥经过了公证,这就可以保证B使用公钥解开的数字签名肯定是A的数字签名。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Coding the Matrix

Coding the Matrix

Philip N. Klein / Newtonian Press / 2013-7-26 / $35.00

An engaging introduction to vectors and matrices and the algorithms that operate on them, intended for the student who knows how to program. Mathematical concepts and computational problems are motiva......一起来看看 《Coding the Matrix》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具