ScurityEncrypt 常用加密算法(对称和非对称)案例实现 对称加密: 1.采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。 2.在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。 缺点: 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其实如果一方的秘钥被泄露, 那么加密信息也就不安全了。另外每个用户每次使用的对称加密算法时,都需要使用其他人都不知道的唯一秘钥,这会使得收发双方所拥有的钥匙 数量巨大,秘钥管理成为双方负担 非对称加密: 1.需要两个秘钥来进行加密和解密,两个秘钥是公开秘钥和私有秘钥, 2.过程(引用维基百科): 2.1:爱丽丝与鲍伯事先互不认识,也没有可靠安全的沟通渠道,但爱丽丝现在却要透过不安全的互联网向鲍伯发送信息 2.2:爱丽丝撰写好原文,原文在未加密的状态下称之为明文 x 2.3:鲍伯使用密码学安全伪随机数生成器产生一对密钥,其中一个作为公钥为 c,另一个作为私钥 d 2.4:鲍伯可以用任何方法发送公钥 c 给爱丽丝,即使伊夫在中间窃听到 c 也没问题 2.5:爱丽丝用公钥 c 把明文 x 进行加密,得到密文 c(x) 2.6:爱丽丝可以用任何方法传输密文 c(x) 给鲍伯,即使伊夫在中间窃听到密文 c(x) 也没问题 2.7:鲍伯收到密文,用私钥 d 对密文进行解密 d(c(x))},得到爱丽丝撰写的明文 x 2.8:由于伊夫没有得到鲍伯的私钥 d,所以无法得知明文 x 2.9:如果爱丽丝丢失了她自己撰写的原文 x,在没有得到鲍伯的私钥 d 的情况下,她的处境将等同伊夫,即无法透过鲍伯的公钥 c 和密文 c(x) 重新得到原文 x 3.常见算法实现:RSA、Elgamal、背包算法、Rabin、D-H、ECC等 缺点: 加密和解密花费时间长、速度慢,只适合对少量数据进行加密。 以上算法重点介绍HD算法(Diffie-Hellman) 1:甲方根据一个公开的秘钥对产生自己公钥和私钥对 2:乙方根据甲方的公钥生成自己的公钥和私钥对 3:乙方加密数据发送出去,根据乙方的私钥和甲方的公钥得到一个本地秘钥 4:甲方解密数据,根据自己的私钥和乙方的公钥得到一个本地的秘钥 5:实质甲乙得到的本地秘钥是相同的,然后通过事先预定的某种对称加密加密数据,本地秘钥解密 6:作为对称加密体制向非对称加密体制的一种过渡,DH算法仅仅比一般的对称加密算法多了密钥对的构建和本地密钥的构建这两项操作,而真正的数据加密/解密操作仍由对称加密算法完成。 7:该算法是对公钥进行保密处理的一个延伸,犹豫对称加密对秘钥的安全性要求极高,一旦秘钥泄露,数据加密就失去了原有意义,DH算法,是对公钥进行处理,私钥一直在本地保存无需传递给其他任务人,在安全级别更高; 8:因为最近使用到该算法,遇到了一些问题,该算法因为不在不同版本的JKD可能存在 找不到指定的加密算法的错误(java.security.NoSuchAlgorithmException: Unsupported secret key algorithm: DES),在该项目中已有注释说明,网上相关文档不是很好找,查看了java官方给出的文档 http://www.oracle.com/technetwork/java/javase/8u161-relnotes-4021379.html 得以解决,以供大家参考,如有不当,请多指教!