在不同服务器或系统之间进行交互时我们往往需要进行身份的认证,以满足安全上的防抵赖和防篡改。
要实现以上要求使用非对称加密算法是目前最理想的方案。
以下是具体的实现:
1. 生成RSA算法私钥和公钥对,用openssl(openssl的安装网上有很多资料,可以自行查看)
生成RSA私钥
openssl>genrsa -out rsa_private_key.pem 1024
生成RSA公钥
openssl>rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
将RSA私钥转换成PKCS8格式
openssl>pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
2. 私钥由请求方系统妥善保管,不能泄漏;公钥交由系统的响应方用于验证签名
3. 请求方使用私钥对发送的请求进行签名,具体的实现方法如下(JAVA)
importjava.security.KeyFactory;importjava.security.PrivateKey;importjava.security.PublicKey;importjava.security.Signature;importjava.security.spec.PKCS8EncodedKeySpec;importjava.security.spec.X509EncodedKeySpec;importorg.apache.commons.codec.binary.Base64;publicString sign(String data, String privateKey) {
String result= "";byte[] ke