加密算法概念2

DES
    DES - Data Encryption Standard, 即数据加密算法。是 IBM 公司于 1975 年研究成功并公开发表的。DES 算法的入口参数有三个:Key、Data、Mode。其中 Key 为 8 个字节共 64 位, 是 DES 算法的工作密钥; Data 也为 8 个字节 64 位, 是要被加密或被解密的数据;Mode 为DES 的工作方式,有两种:加密或解密。
DES 算法把 64 位的明文输入块变为 64 位的密文输出块, 它所使用的密钥也是 64 位。
DES 有很多同胞兄弟,如 DESede(TripleDES,就是 3DES)、AES、Blowfish、RC2、RC4(ARCFOUR)。大同小异,只要换掉 ALGORITHM 换成对应的值,同时做一个代码替换 SecretKey secretKey = new SecretKeySpec(key, ALGORITHM); 就可以了,此外就是密钥长度不同了。
 DES           key size must be equal to 56
 DESede(TripleDES) key size must be equal to 112 or 168
 AES           key size must be equal to 128, 192 or 256,but 192 and 256 bits may not be available
 Blowfish     key size must be multiple of 8, and can only range from 32 to 448 (inclusive)
 RC2         key size must be between 40 and 1024 bits
 RC4(ARCFOUR) key size must be between 40 and 1024 bits
注意:
DES: 密钥是 64 位, 有效密钥 56 位, 8 位用来校验
DESede: 密钥是 64 * 2 = 128 位, 有效密钥 56 * 2 = 112 位
Blowfish: 密钥是 40 -- 448 位

PBE
    PBE - Password-based encryption(基于密码加密)。其特点在于口令由用户自己掌管,不借助任何物理媒体;采用随机数(这里我们叫做盐)杂凑多重加密等方法保证数据的安全性。是一种简便的加密方式。

RSA
    这种算法 1978 年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和 Leonard Adleman。
    这种加密算法的特点主要是密钥的变化,上文我们看到 DES 只有一个密钥。相当于只有一把钥匙,如果这把钥匙丢了,数据也就不安全了。RSA 同时有两把钥匙,公钥与私钥。同时支持数字签名。数字签名的意义在于,对传输过来的数据进行校验。确保数据在传输工程中不被修改。
流程分析:
1. 甲方构建密钥对,将公钥公布给乙方,将私钥保留。
2. 甲方使用私钥加密数据,然后用私钥对加密后的数据签名,发送加密数据以及签名给乙方;乙方使用公钥、签名来验证待解密数据是否有效,如果有效使用公钥对数据解密。
3. 乙方使用公钥加密数据,发送加密数据给甲方;甲方获得加密数据,通过私钥解密。
总结:
    使用公钥加密、私钥解密,完成了乙方到甲方的一次数据传递,通过私钥加密、公钥解密,同时通过私钥签名、公钥验证签名,完成了一次甲方到乙方的数据传递与验证,两次数据传递完成一整套的数据交互!

DH(一种适合基于密钥一致协议的加密算法)
    Diffie-Hellman 算法(D-H 算法),密钥一致协议。是由公开密钥密码体制的奠基人 Diffie 和 Hellman 所提出的一种思想。简单的说就是允许两名用户在公开媒体上交换信息以生成"一致"的、可以共享的密钥。换句话说,就是由甲方产出一对密钥(公钥、私钥),乙方依照甲方公钥产生乙方密钥对(公钥、私钥)。以此为基线,作为数据传输保密基础,同时双方使用同一种对称加密算法构建本地密钥(SecretKey)对数据加密。这样,在互通了本地密钥(SecretKey)算法后,甲乙双方公开自己的公钥,使用对方的公钥和刚才产生的私钥加密数据,同时可以使用对方的公钥和自己的私钥对数据解密。不单单是甲乙双方两方,可以扩展为多方共享数据通讯,这样就完成了网络交互数据的安全通讯!该算法源于中国的同余定理——中国馀数定理。
流程分析:
1.甲方构建密钥对,将公钥公布给乙方,将私钥保留;双方约定数据加密算法;乙方通过甲方公钥构建密钥对,将公钥公布给甲方,将私钥保留。
2.甲方使用私钥、乙方公钥、约定数据加密算法构建本地密钥,然后通过本地密钥加密数据,发送给乙方加密后的数据;乙方使用私钥、甲方公钥、约定数据加密算法构建本地密钥,然后通过本地密钥对数据解密。
3.乙方使用私钥、甲方公钥、约定数据加密算法构建本地密钥,然后通过本地密钥加密数据,发送给甲方加密后的数据;甲方使用私钥、乙方公钥、约定数据加密算法构建本地密钥,然后通过本地密钥对数据解密。
总结:
    甲乙双方在获得对方公钥后可以对发送给对方的数据加密,同时也能对接收到的数据解密,达到了数据安全通信的目的!

DSA
    DSA - Digital Signature Algorithm 是 Schnorr 和 ElGamal 签名算法的变种,被美国 NIST 作为 DSS(Digital Signature Standard)。简单的说,这是一种更高级的验证方式,用作数字签名。不单单只有公钥、私钥,还有数字签名。私钥加密生成数字签名,公钥验证数据及签名。如果数据和签名不匹配则认为验证失败!数字签名的作用就是校验数据在传输过程中不被修改。数字签名,是单向加密的升级!

ECC
    ECC - Elliptic Curves Cryptography,椭圆曲线密码编码学,是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制。在软件注册保护方面起到很大的作用,一般的序列号通常由该算法产生。
    关于 Java 实现 ECC 算法的资料实在是太少了,无论是国内还是国外的资料,无论是官方还是非官方的解释,最终只有一种答案——ECC 算法在 JDK1.5 后加入支持,目前仅仅只能完成密钥的生成与解析。
    Chipher 不支持 ECC 算法,Chipher、Signature、KeyPairGenerator、KeyAgreement、SecretKey 均不支持 ECC 算法。
    JDK1.5 后引入了 ECC 算法,仅仅在 sun.security.ec 下这个类,不需要单独引入其他 jar。但是想要实现 ECC 算法,目前可能只有 javacard 支持完整的算法实现,J2SE 中没有相应的加密解密支持,仅仅完成密钥的生成与解析。由于 ECC 算法复杂,加密解密时间较长通常由硬件完成。可能也因为如此,J2SE 才没有完全的支持。

转载于:https://my.oschina.net/wellben/blog/26223

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值