PHP开发        1500141817_242949.png       029fb7e6cf029f422610f4353e9b016e.png



前端加密(rsa)密码,php解密

JS前端RSA加密需要用到第三方的加密组件JSENCRYPT:https://github.com/travist/jsencrypt 具体的大家可以到github上看下。


在开始之前,我们先要使用OpenSSL生成一对公钥、私钥,为了方便讲述,飘易还是直接提供一对生成好的公钥、私钥,至于如何生成,网上资料很多了。支付宝那里也有关于RSA密钥生成的文档:https://doc.open.alipay.com/doc2/detail?treeId=58&articleId=103242&docType=1,支付宝提供了一键生成工具


JS前端的加密方法:

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": $("#password").val()}));

$('#input').val(encrypted);

<script src="https://passport.cnblogs.com/scripts/jsencrypt.min.js"></script>

<script src="http://cdn.bootcss.com/jquery/3.0.0/jquery.min.js></script>


然后后端收到前端提交的数据,利用RSA私钥进行解密,我们以PHP举例来说:

<?php

//rsa 私钥

$private_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-----';


//从前端拿到的RSA加密数据

$es='CP51TfQsTXrkVeDxkkDJcO9YF6gHmIJfHX6GBLguYCXKl3A7SCn1zhXXUSwmj+MuIOh4HtsKLre3ukUOehU5V5cPYpkajCCQ5mRZfxdbOUEBNW/mT66RYmQ08WO4NGvIRriLx5LsGtS4VF4uE+8aM+mUvab6jOVUUFotqPTUyu4=';

//私钥解密 

openssl_private_decrypt(base64_decode($es),$decrypted,$private_key); 

echo $decrypted;  

$encrypt_exist=false;

if(!empty($decrypted)) {

$arr = json_decode($decrypted, true);

if(array_key_exists("encrypt",$arr)) {

if($arr['encrypt']=="yes") $encrypt_exist=true;

}

}

if(!$encrypt_exist) die("抱歉!数据提交错误!");

//继续后续处理

var_dump($arr);

?>

  PHP , JQUERY

Aplum

作者  :  Aplum

我依然是我,但不是从前的那个我



评论


关于我

关于我

我不想成为一个庸俗的人。十年百年后,当我们死去,质疑我们的人同样死去,后人看到的是裹足不前、原地打转的你,还是一直奔跑、走到远方的我?

广告

微信图片_20190519095335.jpg