目录:
Base64
消息摘要算法
MD
SHA
MAC
对称加密算法
DES
3DES
AES
PBE
非对称加密算法
DH
RSA
ElGamal
数字签名算法
RSA
DSA
ECDSA
其它算法
IDEA
CRC
Base64
|
|
消息摘要算法
消息摘要算法 - MD
算法:
MD2 实现方:JDK
MD4 实现方:BouncyCastle 简称BC
MD5 实现方:JDK
|
|
消息摘要算法 - SHA
安全散列算法
固定长度摘要信息
SHA-1 SHA-2(SHA-224,SHA-256,SHA-384,SHA-512)
算法:
SHA-1 实现方:JDK
SHA-224 实现方:BC
SHA-256 实现方:JDK
SHA-384 实现方:JDK
SHA-512 实现方:JDK
|
|
消息摘要算法 - MAC
MAC(Message Authentication Code)
HMAC(keyed-Hash Message Authentication Code),含有密钥的散列函数算法
任何MD,SHA
-MD系列:HmacMD2 , HmacMD4 , HmacMD5
-SHA系列: HmacSHA1, HmacSHA224,HmacSHA256,HmacSHA384,HmacSHA512
算法:
HmacMD2 实现方:BC
HmacMD4 实现方:BC
HmacMD5 实现方:JDK
HamcSHA1 实现方:JKD
HmacSHA224 实现方:BC
HmacSHA256 实现方:JKD
HmacSHA384 实现方:JKD
HmacSHA512 实现方:JKD
其它消息摘要算法
RipeMD
Tiger
Whirlpool
GOST3411
Bouncy Castle实现
|
|
对称加密算法
对称加密算法 - DEC - 3DEC
初等
DES
-3DES
AES
PBE
IDEA
DES(Data Encryptiong Standard) 数据加密标准
对称加密元老.
密钥长度56 默认56 工作模式:ECB,CBC,PCBC,CTR,CTS,CFB,CFB8,到128,OFB,OFB8到128
实现方:JDK 填充方式:NoPadding,PKCS5Padding,ISO10126Padding,
实现方:BC 填充方式:PKCS7Padding,ISO10126d2Padding,X932Padding,ISO7816d4Pading,ZeroBytePading
3DES(Triple DES或者DESede)
密钥长度112,168 默认168
密钥长度128,192 默认168
|
|
对称加密算法 - AES
DES替代者
密钥长度:128,192,256 默认128 工作模式:ECB,CBC,PCBC,CTR,CTS,CFB,CFB8到128,OFB,OFB8到128
填充方式:NoPadding,PKCS5Padding,ISO10126Padding 实现方:JDK(256位密钥需要获得无政策限制权限文件)
填充方式:PKCS7Padding,ZeroBytePadding 实现方:BC
无政策限制权限文件是指,因为某些国家的进口管制限制,Java发布的远行环境包中的加解密有一定的限制
|
|
对称加密算法 - PBE
PBE(Password Based Encryption)基于口令加密
算法 密钥长度 默认 工作模式 填充方式 实现
PBEWithMD5AndDES 64 64 CBC PKCS5Padding BC
PBEWithMd5AndRC2 112 128 PKCS7Padding
PBEWithSHA1AndDES 6 64 ISO10126Padding
PBEWithSHAAndIDEA-CBC 128 128
PBEWithSHAAnd2-KeyTripleDES-CBC 128 128
PBEWithSHAAnd3-KeyTripleDES-CBC 192 192
|
|
非对称加密算法
非对称加密算法 - DH
高级
双保险
公钥,私钥
DH(Diffie-Hellman)密钥交换算法
RSA-基于因子分解 ElGamal - 基于离散对数
ECC(Elliptical Curve Cryptography) - 椭圆曲线加密
DH 密钥长度: 512~1024(64倍数) 默认1024 实现方:JDK
|
|
非对称加密算法 - 数字签名算法 - RSA
经典算法
MD,SHA两类
算法:
MD2withRSA 实现方: JDK
MD5withRSA 实现方: JDK
SHA1withRSA 实现方: JDK
SHA224withRSA 实现方: BC
SHA256withRSA 实现方: BC
SHA384withRSA 实现方: BC
SHA512withRSA 实现方: BC
RIPEMD128withRSA 实现方: BC
RIPEMD160withRSA 实现方: BC
非对称加密算法-RSA
唯一广泛接受并实现
数据加密&数字签名
公钥加密,私钥解密
私钥加密,公钥解密
JDK 密钥长度:512~65536(64整数倍) 工作模式:ECB 默认长度:1024 填充方式:
NoPadding
PKCS1Padding
OAEPWITHMD5AndMGF1Pading
OAEPWITHSHA1AndMGF1Pading
OAEPWITHSHA256AndMGF1Pading
OAEPWITHSHA384AndMGF1Pading
OAEPWITHSHA512AndMGF1Pading
BC 密钥长度:512~65536(64整数倍) 工作模式:NONE 默认长度:2048 填充方式:
NoPadding
PKCS1Padding
OAEPWITHMD5AndMGF1Pading
OAEPWITHSHA1AndMGF1Pading
OAEPWITHSHA224AndMGF1Pading
OAEPWITHSHA256AndMGF1Pading
OAEPWITHSHA384AndMGF1Pading
OAEPWITHSHA512AndMGF1Pading
ISO9796-1Padding
|
|
非对称加密算法 - ElGamal
公钥加密算法
实现方:BC 密钥长度:160~16384(8的整数倍) , 默认:1024 工作模式:ECB,NONE
填充方式:
NoPadding , PKCS1Padding
OAEPWITHMD5AndMGF1Pading
OAEPWITSHA1AndMGF1Pading
OAEPWITSHA224AndMGF1Pading
OAEPWITSHA256AndMGF1Pading
OAEPWITSHA384AndMGF1Pading
OAEPWITSHA512AndMGF1Pading
ISO9796-1Padding
|
|
数字签名算法
数字签名算法 - DSA
DSS (Digital Signature Standard)数字签名标准
DSA(Digital Signature Algorithm)数字签名算法
DSA仅包含数字签名
算法:
SHA1withDSA 实现方:JDK
SHA224withDSA 实现方:BC
SHA256withDSA 实现方:BC
SHA384withDSA 实现方:BC
SHA512withDSA 实现方:BC
|
|
数字签名算法 - ECDSA
微软
Elliptic Curve Digital Signature Algorithm , 椭圆曲线数字签名算法
速度快,强度高,签名短.
算法:
NNONEwithECDSA 实现方:JDK/BC 签名长度:128
RIPEMD160withECDSA 实现方:BC 签名长度:160
SHA1withECDSA 实现方:JDK/BC 签名长度:160
SHA224withECDSA 实现方:BC 签名长度:224
SHA256withECDSA 实现方:JDK/BC 签名长度:256
SHA384withECDSA 实现方:JDK/BC 签名长度:384
SHA512withECDSA 实现方:JDK/BC 签名长度:512
jdk版本1.7以上
|
|
其它算法
IDEA
这种算法是在DES算法的基础上发展出来的,类似于三重DES。
发展IDEA也是因为感到DES具有密钥太短等缺点。IDEA的密钥为128位,这么长的密钥在今后若干年内应该是安全的。
|
|
CRC
|
|
运行
|
|
案例引用如下三个jar包:
bcprov-ext-jdk15on-149.jar
bcprov-jdk15on-149.jar
commons-codec-1.10.jar
代码引用包详情见原代码: