RSA 是一种非对称加密算法,简单概括,就是加密和解密时使用不同的密钥进行。
常用情况在用户进行登录,敏感字段如密码,在传输过程往往不希望明文传输,所以需要用到类似于rsa这种非对称加密进行处理。
1.想要使用RSA,需要得到一对公私密钥,网上有很多在线生成的,如:http://web.chacuo.net/netrsakeypair
2.使用示例如下:
前端:
<!DOCTYPE html>
<html>
<head>
<title>rsa加密测试</title>
</head>
<body>
</body>
<script src="http://www.xxxxx.cn/static/index/js/jquery-1.9.1.min.js"></script>
<script src="./jsencrypt.min.js"></script>
<script>
$(function(){
var public_key = "-----BEGIN PUBLIC KEY-----";
public_key += "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTzgAg/36eMNRsXMYvr19XZNqb";
public_key += "HIZKw0DPGvJLiUz/ciIu+ls3l3jUd+5MEB5XrEMeslNLIeCHIv0CZkWRCMpq0tHL";
public_key += "MPCqmjr8ru/53JM9qGnUz6CdefwCraIBUh1A3Uu4mK63oigsMNO97VRNGcbd5xd2";
public_key += "i/DQ6qCw66V/b5IawQIDAQAB";
public_key += "-----END PUBLIC KEY-----";
// 利用公钥加密
var encrypt = new JSEncrypt();
encrypt.setPublicKey(public_key);
var encrypted = encrypt.encrypt('test');
console.log(encrypted);
});
</script>
</html>
后端:
//rsa加解密测试
public function rsa_test(){
$private_key = '-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANPOACD/fp4w1Gxc
xi+vX1dk2pschkrDQM8a8kuJTP9yIi76WzeXeNR37kwQHlesQx6yU0sh4Ici/QJm
RZEIymrS0csw8KqaOvyu7/nckz2oadTPoJ15/AKtogFSHUDdS7iYrreiKCww073t
VE0Zxt3nF3aL8NDqoLDrpX9vkhrBAgMBAAECgYAEPyMdhkHhphT8PzfyCNAejnUb
mwzOPu/ztxSYkx4qGP26d2aQzMata+IpQEF7fIaz/NtSrFE2JGtyOt62M7jrNgg8
f2gcacR+GrTMoN5qgzgif1jg9ce9xSvaSR5/PejWZtrQLp0suMjPXyRoXGuHBQVA
eVmbGVG6S9LYXdKpYQJBAPci8TIL1i5q1Mm0vOqprfeOLiy0Xi8+eGFz0Q1xkZc8
CWOorHI3NWM8drIuEMP6rZ/ZZMPAGZ6K1akCimcMMj0CQQDbZqm/pukYpCZ+MBFe
a9Mr3HxD+EQ6oMsw+niNxbiLywudNoxF4xDq5+fGr+D+7WsCOLZ8lSiBTm4+6Ece
iGbVAkA2VPBB2GhV/Bab4ahGztb4PcHZAi5SpKFCi3vCQN2JKiHGTybaVVjfYEOY
GJiG/W1+XwTQJEN9n3gpl+1likDhAkEA2T0G2PAwnyhxwMJhgEdtOWHAXSCmlhJ9
/ooS8fWTbD9oyYqoS86wApgK461kL6bvLKzw69xY1efNu1YMjUvr3QJBALuCp8vp
Z4ATUhTyWIox9A3gfVZuK7nLs/NHsY5cCozzUdQiIA53Vx4jWnzHSZoCYGKkWcJB
SW+qn0f3y3Gr0B4=
-----END PRIVATE KEY-----
';
$str = 'grUsFQWfDIo5T9Foz2ufRH1T2I9vf46Hv8CmuDc+ks0KEBIemtMini1K9IHV8uldCYYRNDBZMQnf5HSgLbKA+F+WzvxETLCsxQX8neI3wxAJOXwuDEliKQyW+nI1kFnJuMsiz1VXlSLNX3Dqw4y/Q2WF+ouV1lI6s+zFdnwM47A=';
//私钥解密
openssl_private_decrypt(base64_decode($str),$decrypted,$private_key);
var_dump($decrypted);
}
注:秘钥对不要复制上面的