JAVA加密签名JCA

/**
 * JCAJava加密框架):DigestSignatureKeyCertAlogorithm, 不论是DigestSignatureKeyCert,都要使用到算法Algorithm*
 *
 1MessageDigest:对消息进行hash算法生成固定长度消息摘要(digest)。由一个单向Hash加密函数对消息进行作用而产生
 消息摘要服务其实就是使用hash算法将一段消息(可以是字符串、文件内容、html等)进行计算生成的一个byte[]。常用加密算法MD5SHASHA-1其实都是hash算法。
 消息摘要有两个基本属性:两个不同的报文难以生成相同的摘要,难以对指定的摘要生成一个报文,而由该报文反推算出该指定的摘要(不可逆)
消息摘要算法包括MD(Message Digest,消息摘要算法)SHA(Secure Hash Algorithm,安全散列算法)MAC(Message AuthenticationCode,消息认证码算法)3大系列
2Signature:数字签名算法是"非对称加密算法""消息摘要算法"的结合体。
 是信息发送者(就是只有信息的发送者才能产生的别人无法伪造的一段数字串)将用其私钥对明文信息的特征数据(或称消息摘要)进行 RSA 算法操作生成Sign+明文信息一起发送给收件人,
 作用:以保证发信人无法抵赖曾发过该信息(即不可抵赖性),同时也确保信息报文在经签名后末被篡改(即完整性)。
 当信息接收者收到报文后,就可以用发送者的公钥对数字签名进行验证。
3KeyPairGenerator:根据指定的非对称算法生成配对的公钥、私钥。
4KeyGenerator 根据指定的对称算法生成秘钥
5KeyFactory:根据Key说明(KeySpec)生成公钥或者私钥。
6KeyStorekeystore是一个keys的数据库。Keystore中的私钥会有一个相关联的证书链,《证书用于鉴定对应的公钥》。一个keystore也包含其它的信任的实体。 一个KeyStore是一个keycert的库,里面存储了PrivateKey, Aliases, Certs.
 7SecretKeySpec 秘钥描述规格说明书
8Padding    数据长度:AESDESECB或者CBC模式下,要加密的数据必须是分组长度的整数倍,如果不是那么就需要填充(pad)。
    密钥长度:密钥长度是固定的。AES有三种:128192256bit
    pad的方式有很多种:PKCS7Padding:用十六进制0x07来填充7;Public Key Cryptography Standard
填充方式:用等于填充字节数量的值作为填充值进行填充。
9SecureRandom:用于生成随机数或者伪随机数。
*/
/**
 * 通信明文加密传输API”常用的流程:
* 1.先用对称加密秘钥明文文件进行加密(对称算法加密速度快,明文文件比较大);
* 2.非对称publicKey”对称加密秘钥进行加密;(非对称算法加密速度慢,对称秘钥文件小)
* 3.非对称PrivateKey”对称加密秘钥进行解密;
 * 4.对称加密秘钥明文文件进行解密。
*/
/**
 * 通信API数据安全验证常用的做法:
* 1.先用RSA生成公钥私钥对,私钥保留,公钥分发
* 2.RSA私钥+消息摘要算法(eg:MD5WithRSA)生成Sign
 * 3.Sign+明文发送给接受者(明文需要加密可参考上)
* 4.接受者对SignRSA公钥解密生成原消息摘要A”,用明文生成新的消息摘要B”
 * 5.AB进行对比
*/
/**
 * 公司APP相关API验证方式
* 1.对每个APP生成appKey+appSecret,必将这两个数据发送给API调用方。
* 2.我方用appKey + appSecret + APIData进行MD5,并截取8-24位作为signA
 * 3.明文+signA,一起传输
* 4.调用发用同样的方式,生成signB,验证接口正确性
*
 */

猜你喜欢

转载自renjieguixiong5.iteye.com/blog/2412286
JCA