JAVA密码算法

1:对称性加密

这种加密方法加密解密都只用一个密匙,加解密速度快,它要求发送方和接收方在安全通信之
前,商定一个密钥,这种加密算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他
们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。

常用的对称性加密算法有:DES、3DES、Blowfish、RC2、AES以及国密的SM4,国密SM4是
为了保障商用密码安全,国家商用密码管理办公室制定了一系列密码标准。

2:非对称性加密

这种加密算法把密匙分成了两个,一个自己持有的叫私钥,另一个给对方,叫公钥,公钥加密
的数据只有私钥能解开,私钥加密的数据公钥能解开。

非堆成加密是使用公钥加密,私钥解密。

非对称算法加密有RSA,Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)以
及国家商用密码SM2算法。

3:数字签名、信息摘要

数字签名是使用非对称性加密,对来方的消息进行确认是消息发送方发出的,防止消息伪造和
验证消息是否被篡改过。

数字签名:
    是发送方使用私钥加密,接收方使用公钥解密,算法有:

    RSA:RSA数字签名算法主要包括MD和SHA两类,有加解密,基于大整数分解问题。

    DSA:仅包含数字签名,使用DSA这种算法的证书是没法进行加密通信的,基于离散
    对数问题,算法速度很快。

    ECDSA:椭圆曲线数字签名算法,是ECC与DSA的结合,与传统的数字签名算法相比,速
    度快,强度高,签名短。

信息摘要:
    单向散列函数得到一个固定长度的散列值,是一个不可逆过程,常用的信息摘要算
    法有:

    MD算法: Message Digest Algorithm ,目前主流的是MD5算法,为第五版算法,
    之前有MD2、MD3、MD4算法。

    SHA算法:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准
    (Digital Signature Standard DSS)里面定义的数字签名算法(Digital 
    Signature Algorithm DSA);

    MAC算法:带有密码信息的信息摘要算法,是对MD和SHA算法的演变和改进,包括
    HmacMD2、HmacMD4、HmacMD5、HmacSHA-256等。


要达到防止伪造和验证数据是否被篡改的目的,可以将整个信息进行签名,但是一般信
息过长,加密太慢,可以对信息的唯一摘要进行加密,就要使用到摘要算法(HASH算
法),将明文信息生成一个较短的固定长度的值,比如使用MD5将文档加密得到一个固定
长度的值,然后将签名后的摘要和信息和发送给接收方,接收方首先对发过来的信息进
行解密,解密得到一个摘要(MD5),然后再对接收的信息进行md5加密,得到的md5结果
匹配解密后的摘要,如果匹配成功的话证明没有修改过,签名方式使用Signature。

4:加密和加签的区别

加密:公钥放在客户端,并使用公钥对数据进行加密,服务端拿到数据后用私钥进行解密;
加签:私钥放在客户端,并使用私钥对数据进行加签,服务端拿到数据后用公钥进行验签。

加密完全为了加密;加签主要是为了防恶意攻击,防止别人模拟我们的客户端对我们的服务器
进行攻击,导致服务器瘫痪。

你可能感兴趣的:(密码算法)