JavaSE系列学习1.3-JavaSecurity(JCA)和密码学

来源:互联网 发布:mac os sierra dmg u盘 编辑:程序博客网 时间:2024/05/20 20:58

密码学概述及基本概念:

1.密码(cipher): 
通常密码学中的密码指的是密码算法,是用于加密和解密的数学函数(一般情况下加密和解密有两种不同的密码算法)。有别于我们日常生活中所说的密码,我们说的密码是一种用于身份认证的口令(password)。

2.密钥(key): 
密钥是在在密码算法运行需要输入的参数,分为对称密钥和非对称密钥。 
相同明文相同加密算法的情况下,使用不同的密钥会得到不同的密文结果。 
密钥越长越安全,但是密钥过长算法运行速度会很慢。

3.对称密钥: 
对称密钥用于对称加密算法中。 
在对称加密算法中,加密和解密过程使用的密钥是相同的。 
对称加密算法的安全性取决于密钥的保密性。

4.非对称密钥: 
用于非对称加密算法中,分为公钥和私钥。 
公共密钥是公开的,而私有密钥必须保密。 
公钥和私钥的其中一把用于加密时,则另一把就用于解密。 
用公钥加密的文件只能用私钥解密,而私钥加密的文件只能用公钥解密。 
为发送一份保密报文,发送者必须使用接收者的公共密钥对数据进行加密,一旦加密,只有接收方用其私人密钥才能加以解密。 
有时候也存在用私钥加密用公钥解密的情况,如数字签名。

常见加密算法: 
通常把加密算法分为三类:对称加密算法(传统加密算法)非对称加密算法(公钥加密算法)哈希算法

1.对称加密算法: 
指加密和解密使用相同密钥的加密算法。

优点:运行速度快; 
缺点:需要在服务端和客户端之间共享密钥,然而难以做到在公开的计算机网络上安全地传送和保管密钥。且由于双方都使用相同的密钥,无法实现数数字签名等功能,无法保证信息的不可否认性。

常见的对称加密算法: 
分组密码 :DES、3DES、

AES、

流密码:RC2、RC4、RC5、

IDEA、

TDEA、

Blowfish、

SKIPJACK

2.非对称加密算法 
加密和解密使用不同的密钥–公钥和私钥来进行。

非对称加密的过程: 
1.服务端生成配对的公钥和私钥 
2.私钥保存在服务端,公钥发送给客户端 
3.客户端使用公钥加密明文传输给服务端 
4.服务端使用私钥解密密文得到明文

优点:由于非对称加密无需在客户端和服务端之间共享密钥,只要私钥不发给任何用户,即使公钥在网上被截获,也无法进行解密。安全性得到了很大的提升; 
缺点:加解密速度远远慢于对称加密算法。

常见的非对称加密算法: 
RSA、

Elgamal、

背包算法、

Rabin、

D-H、

ECC(椭圆曲线加密算法)

3.哈希散列算法 
散列函数H是一个公开的函数,它可将任意长度的报文M变换成固定长度的散列码h,散列函数表示为h=H(M),它生成报文所独有的“指纹”(摘要)。

散列函数的特征: 
1. 对于不同报文不能产生相同散列码(事实上哈希碰撞的概率是很小的),改变原始报文中任意一位数值将产生完全不同的散列码 
2. 对任意一个报文无法预知散列码 
3. 无法根据散列码倒推报文 
4. 散列算法是公开的,其安全性来自于单向散列的能力 
5. 散列码长度固定,与报文长度无关

常见的哈希算法: 
MD4、MD5、SHA1


原创粉丝点击