一、对称加密算法
加密过程:
使用相同秘钥,将明文分成N个组,然后对各个组进行加密,形成各自的密文,最后把所有的分组密文进行合并,形成最终的密文。
优点:
算法公开、计算量小、加密速度快、加密效率高
缺点:
交易双方都使用同样钥匙,安全性得不到保证
常见算法:
MD5、AES、DES
二、对称加密算法
加密过程:
非对称算法有一个公钥和一个私钥,公钥与私钥是一对的。
乙方生成两把密钥(公钥和私钥)甲方获取乙方的公钥,然后用它对信息加密。乙方得到加密后的信息,用私钥解密,乙方也可用私钥加密字符串,甲方获取乙方私钥加密数据,用公钥解密
优点:
更安全,密钥越长,它就越难破解
缺点:
加密速度慢
常见算法:
RSA
RSA具体流程:
1.甲方构建密钥对儿,将公钥公布给乙方,将私钥保留。
2.甲方使用私钥加密数据,然后用私钥对加密后的数据签名,发送给乙方签名以及加密后的数据;乙方使用公钥、签名来验证待解密数据是否有效,如果有效使用公钥对数据解密。
3.乙方使用公钥加密数据,向甲方发送经过加密后的数据;甲方获得加密数据,通过私钥解密。一般公司这样做的。
甲乙公司各有自己的一套公钥私钥。
甲用乙公布的公钥加密,信息传递到乙,乙用自己的私钥解密。 — 这一套是乙方的公私钥。
乙用甲公布的公钥加密,信息传递到甲,甲用自己的私钥解密。 — 这一套是甲方的公私钥。
注:公钥长度远远小于私钥,公钥长度比较短,便于公钥保存。
三、使用的类和相关的参数
KeyPairGenerator:密钥对生成器
KeyPair:密钥对
PublixKey:公钥
PrivateKey :私钥
KeyFactory:作用是生成密钥(包括公钥和私钥)generatePublic()方法用来生成公钥
generatePrivate()方法用来生成私钥X509EncodedKeySpec:继承EncodedKeySpec类 ,以编码格式来表示公钥
PKCS8EncodedKeySpec:继承EncodedKeySpec类,以编码格式来表示私钥
DHPublicKey:是PublicKey的某种具体的形式
DHParameterSpec:随从着DH算法来使用的参数的集合
KeyAgreement:该类提供密钥一致性(或者密钥交换)协议的功能
SecretKey:构建的本地秘钥
Cipher:提供加解密的功能