Java为我们实现了MD5、RSA两种常用的加密算法,这在我们的开发中也大量使用。
一般是第三方采用公钥加密,服务器采用私钥解密。私钥一般不做加密处理。但是为了数据间的相互通信,服务器怎么发送数据呢,一般采用的是两对公私钥匙。服务器发送数据,也采用第三方的公钥,第三方接收数据后用自己的私钥解密。
总结一句话,服务器保存自己的私钥,第三方的公钥。第三方亦然。
签名:一般采用服务器私钥加密,生成签名,然后客户端公钥解密,验证签名。
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
签名的好处:保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。
总结:既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,
既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要壹对密钥,使用其中壹個加密,则需要用另壹個才能解密。
RSA的算法涉及三个参数,n、e1、e2。
其中,n 是两个大质数 p、q 的积,参数 n 用二进制表示时所占