密码学-加密解密 加签验签
RSA:
1.加签:用私钥加签,对方用公钥验签(防抵赖,私钥只有自己有!)
2.加密:用对方公钥加密,对方用对应私钥解密(加密)
MD5:
1.原文参数treeMap排序
2.传参时需传:
原文,
加签:MD5(原文+私钥)=sign
对方验签:用同样的方式加签验证是否相等。
注:
淘宝、支付公司一般都使用MD5加签,淘宝传的是商户ID,新浪支付传的是秘钥!这样签名只能起到防篡改的作用,并不能起到防抵赖的作用。
国家将信息安全划分为三个等级:核密、普密和商密。其中核密最高,普密次之,商密最低
/** * MD验签字符串 * * @param text * 需要签名的字符串 * @param sign * 签名结果 * @param key * 密钥 * @param input_charset * 编码格式 * @return 签名结果 */ public static boolean verify(String text, String sign, String key, String charset) { text = text + key; String mysign = DigestUtils.md5Hex(getContentBytes(text, charset)); if (mysign.equals(sign)) { return true; } else { return false; } }
1、私钥加密
私钥加密又称为对称加密,因为同一密钥既用于加密又用于解密。私钥加密算法非常快(与公钥算法相比),特别适用于对较大的数据流执行加密转换。
DES
RC2
Rijndael(AES)
3DES
2、公钥加密和数字签名
公钥加密使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的公钥。用公钥加密的数据只能用私钥解密,而用私钥签名的数据只能用公钥验证。公钥可以被任何人使用;该密钥用于加密要发送到私钥持有者的数据。两个密钥对于通信会话都是唯一的。公钥加密算法也称为不对称算法,原因是需要用一个密钥加密数据而需要用另一个密钥来解密数据。
DSA
RSA
3、常用密钥算法
密钥算法用来对敏感数据、摘要、签名等信息进行加密,常用的密钥算法包括:
DES(DataEncryptionStandard):数据加密标准,速度较快,适用于加密大量数据的场合;
3DES(TripleDES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;
RC2和RC4:用变长密钥对大量数据进行加密,比DES快;
IDEA(InternationalDataEncryptionAlgorithm)国际数据加密算法,使用128位密钥提供非常强的安全性;
RSA:由RSA公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件快的长度也是可变的;
DSA(DigitalSignatureAlgorithm):数字签名算法,是一种标准的DSS(数字签名标准);
AES(AdvancedEncryptionStandard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前AES标准的一个实现是Rijndael算法;
BLOWFISH,它使用变长的密钥,长度可达448位,运行速度很快;
其它算法,如ElGamal、Deffie-Hellman、新型椭圆曲线算法ECC等。