当前位置: 首页 > news >正文

南京网站制作价格上海大型网站建设公司

南京网站制作价格,上海大型网站建设公司,我的网站不做推广 百度能搜索到我网站吗,免费linux网站空间最近客户在做安全等保#xff0c;需要后台登录密码采用加密方式#xff0c;原来用个base64变形一下就算了#xff0c;现在不行#xff0c;一定要加密加key加盐~~ 前端使用Cypto-JS加密#xff0c;传输给后端使用PHP解密#xff0c;当然#xff0c;前端虽然有key有盐需要后台登录密码采用加密方式原来用个base64变形一下就算了现在不行一定要加密加key加盐~~ 前端使用Cypto-JS加密传输给后端使用PHP解密当然前端虽然有key有盐但这玩意儿用点心的话也不过是障眼法而已。 更新才发现今年初就已经写好模块用私钥公钥非对称RSA的方式来实现加密登录。。。我去老年痴呆越来越明显了 PHP开发日志 ━━ jsrsasign、jsencrypt、php实现前后端数据的RSA加密和解密 本文更侧重与前端使用纯js实现加密后端使用php解密前后端对称。 HTML(index.html)代码 !DOCTYPE html html langen headmeta charsetUTF-8script src./jquery.min.js/scriptscript src./crypto-js.min.js/script /head body div stylemargin: 0;text-align:center;h2基于PHP和JS的AES相互加密解密方法详解(CryptoJS)/h2 /div div stylemargin:0 18%;h4注意说明/h4ulli1. 首先引入CryptoJS包中的aes.js和pad-zeropadding.js/lili2. 其次引入了jquery.min.js和自己封装的function.js(内容主要是加密解密函数)/lili3. 加密解密过程中的向量和密钥必须保持一致/lili4. 进行加密的数据(字符串类型){username:1001,password:123456,terminal:PC}/lili5. 加密结果是变化的在这不写(变化的原因是因为密钥取得是当前时间)/lili6. 具体详情可读代码(注释完整)/li/ul /divdiv stylemargin:0 18%;h4加密测试/h4ulli进行加密的数据(字符串类型){username:1001,password:123456,terminal:PC}/lili idencrypt_key/lili idencrypt_string/li/ul /div div stylemargin:0 18%;h4解密测试/h4ulli进行解密密的数据(字符串类型、PHP端生成)8bkd/doBOrG3pTEGkRwk9A3ZLrzXtf10E6Nn9CSoHXRXHydM7xt7PllPhUSItuK8ciF5g6UZ7DruCPQCVNZIJzI4ZHyUMJlV2aHyqMhbEoyS3pK6lPs1MsOeU/H7BZ5/lili iddecrypt_key解密的密钥(PHP端生成)/lili iddecrypt_stringJS解密后字符串/li/ul /div script//********************************加密**********************************//获取当前时间戳13位 3位字符var timestamp new Date().getTime().toString() WZH;//加密密钥16位var encrypt_key timestamp;//加密向量16位var iv ZZWBKJ_ZHIHUAWEI;//要加密的数据var encrypt_string {username:1001,password:123456,terminal:PC};//加密后密文加密函数在function.js文件中var encrypted_string encrypt(encrypt_string, encrypt_key, iv);$(#encrypt_key).text(JS加密密钥 encrypt_key);$(#encrypt_string).text(JS加密后字符串 encrypted_string);//********************************结束**********************************//********************************解密**********************************//解密密钥16位(解密向量同上)var decrypt_key 20180227110419WB;//解密密文字符串var decrypt_string 8bkd/doBOrG3pTEGkRwk9A3ZLrzXtf10E6Nn9CSoHXRXHydM7xt7PllPhUSItuK8ciF5g6UZ7DruCPQCVNZIJzI4ZHyUMJlV2aHyqMhbEoyS3pK6lPs1MsOeU/H7BZ5;var decrypted_string decrypt(decrypt_string, decrypt_key, iv);$(#decrypt_key).text(解密的密钥(PHP端生成) decrypt_key);$(#decrypt_string).text(JS解密后字符串 decrypted_string);//********************************结束********************************** /script /body /html界面效果 JS(funciton.js)代码 /*** 接口数据加密函数* param str string 需加密的json字符串* param key string 加密key(16位)* param iv string 加密向量(16位)* return string 加密密文字符串*/ function encrypt(str, key, iv) {//密钥16位var key CryptoJS.enc.Utf8.parse(key);//加密向量16位var iv CryptoJS.enc.Utf8.parse(iv);var encrypted CryptoJS.AES.encrypt(str, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.ZeroPadding});return encrypted; }/*** 接口数据解密函数* param str string 已加密密文* param key string 加密key(16位)* param iv string 加密向量(16位)* returns {*|string} 解密之后的json字符串*/ function decrypt(str, key, iv) {//密钥16位var key CryptoJS.enc.Utf8.parse(key);//加密向量16位var iv CryptoJS.enc.Utf8.parse(iv);var decrypted CryptoJS.AES.decrypt(str, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.ZeroPadding});return decrypted.toString(CryptoJS.enc.Utf8); }PHP5或PHP8(index.php)代码 ?php header(Content-type:text/html;charsetutf-8);//加密向量16位 $iv ZZWBKJ_ZHIHUAWEI; //********************************解密********************************** //js加密秘钥16位 $decrypt_key 1519699179001WZH; //js加密密文字符串 $decrypt_data ngX3VuJb2dBmfMEk4Q8eVGNnWeidwMZltHn78g4b8sn1i7Di8LPeNnQNQmY525LxADvJKIEpv2Vzs0w9fdlw; $decrypted decrypt($decrypt_data, $decrypt_key, $iv); //解密结果 var_dump($decrypted); //exit; //********************************结束********************************** //********************************加密********************************** //PHP加密秘钥16位 $encrypt_key date(YmdHis) . WB; //PHP加密数据 $arr array(username 1001, password 123456, terminal PC); //转换成json字符串 $encrypt_data json_encode($arr); $encrypted encrypt($encrypt_data, $encrypt_key, $iv); //加密结果 var_dump($encrypted); exit; //********************************结束**********************************//******************************集成函数******************************** /*** 加密字符串* param string $data 字符串* param string $key 加密key* param string $iv 加密向量* return string*/ function encrypt($data, $key, $iv) {//支持php5//$encrypted mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv);//支持php8//$decrypted openssl_encrypt($data, AES-128-CBC, $key,2, $iv);$encrypted openssl_encrypt($data, AES-128-CBC, $key, true, $iv);return base64_encode($encrypted); }/*** 解密字符串* param string $data 字符串* param string $key 加密key* param string $iv 加密向量* return object*/ function decrypt($data, $key, $iv) {//支持php5//$decrypted mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($data), MCRYPT_MODE_CBC, $iv);//支持php8//$decrypted openssl_decrypt($data, AES-128-CBC, $key,2, $iv);$decrypted openssl_decrypt(base64_decode($data), AES-128-CBC, $key, true, $iv);$json_str rtrim($decrypted, \0);return json_decode($json_str); }其它 另一篇文章中的代码测试基本一致 var message 1_2_3_4_5_6_7_8_9_0;//utf8字符串待加密var iv CryptoJS.lib.WordArray.random(128 / 8).toString(CryptoJS.enc.Hex);//随机生成长度为32的16进制字符串。IV称为初始向量不同的IV加密后的字符串是不同的加密和解密需要相同的IV。var key 0321ebeba1f75de2d3cd3471af7418a4;//秘钥。长度32的16进制字符串。 var cryptkey CryptoJS.enc.Hex.parse(key);//将16进制字符串转换为 WordArray对象 //或者 //var key qwertyuiopasdfgh;//长度16的utf8字符串 //var cryptkey CryptoJS.enc.Utf8.parse(key);//将utf8字符串转换为 WordArray对象 //重点是 key要转换为WordArray对象加密时要用。//测试 var ciphertext aesEncrypt(message,cryptkey,iv);//加密 var decryptedMessage aesDecrypt(ciphertext,cryptkey,iv);//解密 console.log(decryptedMessage);//1_2_3_4_5_6_7_8_9_0 // jQuery(#a).val(ciphertext.toString()); // jQuery(#b).val(CryptoJS.enc.Hex.parse(iv).toString()); //** 加密 ** //var ciphertext CryptoJS.AES.encrypt(message, key, cfg); //params: 注意参数key为WordArray对象 //return: 密码对象 或者 密码对象Base64字符串 function aesEncrypt(message,key,iv){var ciphertext CryptoJS.AES.encrypt(message, key, { iv: CryptoJS.enc.Hex.parse(iv),mode: CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7 });return ciphertext;//密码对象(Obejct类型非WordArray类型)Base64编码。//return ciphertext.toString();//密码对象的Base64字符串}//** 解密 ** //var plaintext CryptoJS.AES.decrypt(ciphertext, key, cfg); //params: 注意参数ciphertext 必须为 Base64编码的对象或者字符串。 function aesDecrypt(ciphertext,key,iv){var decrypted CryptoJS.AES.decrypt(ciphertext,key,{ iv: CryptoJS.enc.Hex.parse(iv),mode: CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7 });return decrypted.toString(CryptoJS.enc.Utf8);//WordArray对象转utf8字符串 }文章来源 基于PHP和JS的AES相互加密解密方法详解(CryptoJS)基于PHP7和JS的AES相互加密解密方法详解2(CryptoJS)phpaes加密使用mcrypt_decrypt能解开openssl_decrypt却解不开whatCryptoJS中AES256(CBC)加密算法简单使用HTML使用 crypto-js-AES 加密
http://www.pierceye.com/news/770891/

相关文章:

  • 个人网站 域名舞阳专业做网站
  • 做国外购物网站凤山网站seo
  • 苏州制作网站的有几家WordPress文章编辑链接
  • 免费看电视剧的网站2021网站建设坂田
  • 网站建设中 目录怎么做更好wordpress最好用的虚拟主机
  • 网站百度网盘南京市建设局网站
  • 让别人做网站多久开始注册域名公司注册地址提供
  • 手机网站 设计趋势建设银行暑期招聘网站
  • 兰山做网站专业深圳网站定制开发
  • 做与食品安全有关的网站徐州企业网站设计
  • 番禺网站建设策划江阴市建设局官网站
  • 建设网站模块需要哪些内容石家庄城乡建设厅网站
  • 公司网站后台管理网络公司名字大全三字
  • 广西住房建设厅网站广州seo工作
  • 做分销商城网站的wordpress 知更鸟 网格
  • 推销商务网站的途径有哪些爱网站查询挖掘工具
  • 苏州现代建设公司网站备案的域名做电影网站
  • 长沙seo网站优化公司wordpress5.1下载
  • 七星彩网投网站建设鹤壁公司做网站
  • 多语言企业网站建设费用怎么自己做购物网站
  • 中国网站排名前100线上网站开发相关书籍
  • 网站制作图书网站建设指南
  • 网站备案简单吗优化关键词排名软件
  • 泉山网站开发安徽建设工程造价信息网
  • 如何使用电子商务网站做seo需要用到什么软件
  • 新乡商城网站建设哪家专业潮汕学院网站开发
  • 西安响应式网站开发网站空间多少钱一年
  • 做电子相册的大网站怎样提高网站的权重
  • seo网站设计外包去哪个网站有客户找做标书的
  • 微商招商网站源码互联网营销推广方案