在前后端开发的时候,我们常常会选择加密的方式,来确保数据交互的安全性,除了签名的做法之外,我们还常常选择非对称加密,今天要提到的这个前端的加密插件,使用比较方便,又可以支持多段加密,日常需求完美解决!
非对称加密
加密方式就是通过公钥和私钥的配合实现的,公钥加密后只能通过其对应的私钥才能解密。怎么来理解,A公司要给B公司发送商业机密,怕被人拦截知道,这时B公司只要把们的公钥发给A公司,A公司加密后再发给你B公司,B公司解密下就知道内容了,其他获取到后,没有私钥是解不开的。
配置密钥对
在操作之前,你得自己生成一套密钥对,保存备用
文件引入
前端html文件引入,加密js文件jsencrypt.js
scriptsrc=jsencrypt.js/script
使用说明
调用方法很简单,只要传入公钥,调用函数就可以了。
varencrypt=newJSEncrypt();encrypt.setPublicKey(pubkey);//pubkey公钥
varencryptData=encrypt.encryptLong(JSON.stringify(textValue));//textValue加密串
写了个demo
demo单独引用了jquery文件,便于测试
htmlheadmetacharset=UTF-8title加密测试/titlescriptsrc=jquery.js/scriptscriptsrc=jsencrypt.js/scriptstylelabel{width:50%;display:block;margin-bottom:5px;}button{width:8%;margin-right:90%;margin-top:15px;margin-bottom:5px;height:35px;}textarea{width:px;height:px;padding:10px;margin-bottom:10px;overflow:auto;}/style/headbodyh1加密测试/h1label测试公钥/labeltextareaid=pubkeyplaceholder=请输入公钥/textarealabel测试私钥/labeltextareaid=prikeyplaceholder=请输入私钥/textarealabel内容/labeltextareaid=textValueplaceholder=请输入私钥/textareabuttonid=inOut加密/buttonlabel加密结果/labeltextareaid=inTextplaceholder=请输入私钥/textarealabel解密内容/labeltextareaid=rtextValueplaceholder=请输入密串/textareabuttonid=outIn解密/buttonlabel解密结果/labeltextareaid=outTextplaceholder=请输入私钥/textareascript(function(){//公钥varpubkey=(#pubkey).val();//私钥varprikey=(#prikey).val();//加密(#inOut).click(function(){//待加密串vartextValue=(#textValue).val();varencrypt=newJSEncrypt();encrypt.setPublicKey(pubkey);varencryptData=encrypt.encryptLong(JSON.stringify(textValue));(#inText).val(encryptData);(#rtextValue).val(encryptData);});//解密(#outIn).click(function(){//待解密串varrtextValue=(#rtextValue).val();varencrypt=newJSEncrypt();encrypt.setPrivateKey(prikey);vardecryptData=encrypt.decryptLong(rtextValue);(#outText).val(decryptData);});});/script/body/html
补充
为了便于测试,我们把私钥解密的方法都写进函数里去了,实际线上测试可以删除解密方法。