在開發中,前端向後臺傳輸一些敏感數據時,若是不作一些數據的加密等,會以明文的形式進行傳輸,這樣就把一些信息暴露到外面,下面要是一下經過RSA加密的方式進行傳輸:
1.首先前端加密須要用到js插件:jsencrypt.js
下載地址php
前端部分代碼以下:【RSA公鑰祕鑰可經過在線工具得到】前端
//公鑰 var pubkey = '-----BEGIN PUBLIC KEY-----'; pubkey += 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAbfx4VggVVpcfCjzQ+nEiJ2DL'; pubkey += 'nRg3e2QdDf/m/qMvtqXi4xhwvbpHfaX46CzQznU8l9NJtF28pTSZSKnE/791MJfV'; pubkey += 'nucVcJcxRAEcpPprb8X3hfdxKEEYjOPAuVseewmO5cM+x7zi9FWbZ89uOp5sxjMn'; pubkey += 'lVjDaIczKTRx+7vn2wIDAQAB'; pubkey += '-----END PUBLIC KEY-----'; //公鑰加密 var encrypt = new JSEncrypt(); encrypt.setPublicKey(pubkey); var encrypted = encrypt.encrypt(JSON.stringify({"encrypt": "yes", "password": '123456'})); console.log(encrypted);
Jsweb
Copy後端
2.php後端祕鑰解密,部分代碼以下:工具
//私密 $pra_key = '-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDAbfx4VggVVpcfCjzQ+nEiJ2DLnRg3e2QdDf/m/qMvtqXi4xhw vbpHfaX46CzQznU8l9NJtF28pTSZSKnE/791MJfVnucVcJcxRAEcpPprb8X3hfdx KEEYjOPAuVseewmO5cM+x7zi9FWbZ89uOp5sxjMnlVjDaIczKTRx+7vn2wIDAQAB AoGAZzUWajxKTZeJqh5FjBgmwZi5M7voFynZAjRWAkCkqZye0FfY7e70kA92C1AL aVqySnNr4WYZuGorEeOFGqHIv1XSowTLgfLkVBZ/SXiep2QYJrR0YevjysvLnTfb mrdWCqWSj+0AlQg+AvDA/qtvBVMxKymbpo+4bj5H2pPPZ1ECQQDi1PwJQJBYPbpL vGmP3AmWg467tCeQ+aJGgtQTOK5BH+p0BWFVDX583R437vllkKI8EXgZfqQfsQcj 7XUAXyZVAkEA2SyFbO8roH9JLrEoxxKGeiGZvhPfNl9nXLhX0OFS0ywQaVBJno39 9W5bX5iP5Jzeb3UWsZ/TxzhGc/b4WjAlbwJBAOFuIn1feRT5Y+hY++BJIg4/+N57 EMd4ENpas0HXFvcKLQvZPP42Rvr5FksoaRuTPmjMQ7uyrJICccI3AAy6g3ECQQDE AyH9+zRmLNxRj0advsOvUcpgu7DYc21oS12/Qs+tl3TMiNGZkNDphwxjkOA217sP 4B92fCn6AnncSslHJXNzAkBo6ujxqIfrZMOG3ON9nXxkWlq39GFS6CzXWscHA3Xz FMVT1WWU3FR2Kf2QSKiMGv02YcI2xfowim3JnT6600N0 -----END RSA PRIVATE KEY-----'; //獲取加密後的密文 $cryptograph = $_POST['cryptograph']; //私鑰解密 openssl_private_decrypt(base64_decode($cryptograph),$decrypted,$pra_key); var_dump($decrypted);
PHP加密
Copy.net