国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

小程序網(wǎng)站開發(fā)怎么樣谷歌廣告上海有限公司

小程序網(wǎng)站開發(fā)怎么樣,谷歌廣告上海有限公司,疫情網(wǎng)頁(yè)設(shè)計(jì)素材,做五金建材市場(chǎng)的網(wǎng)站最近客戶在做安全等保,需要后臺(tái)登錄密碼采用加密方式,原來(lái)用個(gè)base64變形一下就算了,現(xiàn)在不行,一定要加密加key加鹽~~ 前端使用Cypto-JS加密,傳輸給后端使用PHP解密,當(dāng)然,前端雖然有key有鹽&…

最近客戶在做安全等保,需要后臺(tái)登錄密碼采用加密方式,原來(lái)用個(gè)base64變形一下就算了,現(xiàn)在不行,一定要加密加key加鹽~~
前端使用Cypto-JS加密,傳輸給后端使用PHP解密,當(dāng)然,前端雖然有key有鹽,但這玩意兒用點(diǎn)心的話,也不過是障眼法而已。

在這里插入圖片描述

更新:才發(fā)現(xiàn)今年初就已經(jīng)寫好模塊,用私鑰公鑰非對(duì)稱RSA的方式來(lái)實(shí)現(xiàn)加密登錄。。。我去,老年癡呆越來(lái)越明顯了
PHP開發(fā)日志 ━━ jsrsasign、jsencrypt、php實(shí)現(xiàn)前后端數(shù)據(jù)的RSA加密和解密

本文更側(cè)重與前端使用純js實(shí)現(xiàn)加密,后端使用php解密,前后端對(duì)稱。

HTML(index.html)代碼

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><script src="./jquery.min.js"></script><script src="./crypto-js.min.js"></script>
</head>
<body>
<div style="margin: 0;text-align:center;"><h2>基于PHP和JS的AES相互加密解密方法詳解(CryptoJS)</h2>
</div>
<div style="margin:0 18%;"><h4>注意說明:</h4><ul><li>1. 首先引入CryptoJS包中的aes.js和pad-zeropadding.js</li><li>2. 其次引入了jquery.min.js和自己封裝的function.js(內(nèi)容主要是加密解密函數(shù))</li><li>3. 加密解密過程中的向量和密鑰必須保持一致</li><li>4. 進(jìn)行加密的數(shù)據(jù)(字符串類型):{"username":"1001","password":"123456","terminal":"PC"}</li><li>5. 加密結(jié)果是變化的在這不寫(變化的原因是因?yàn)槊荑€取得是當(dāng)前時(shí)間)</li><li>6. 具體詳情可讀代碼(注釋完整)</li></ul>
</div><div style="margin:0 18%;"><h4>加密測(cè)試:</h4><ul><li>進(jìn)行加密的數(shù)據(jù)(字符串類型):{"username":"1001","password":"123456","terminal":"PC"}</li><li id="encrypt_key"></li><li id="encrypt_string"></li></ul>
</div>
<div style="margin:0 18%;"><h4>解密測(cè)試:</h4><ul><li>進(jìn)行解密密的數(shù)據(jù)(字符串類型、PHP端生成):8bkd/doBOrG3+pTEGkRwk9A3ZLrzXtf10E6Nn9CSoHXRXHydM7xt7PllPhUSItuK8ciF5g6UZ7DruCPQCVNZIJzI4ZHyUMJlV2aHyqMhbEoyS3pK6lPs1MsOeU/H7BZ5</li><li id="decrypt_key">解密的密鑰(PHP端生成):</li><li id="decrypt_string">JS解密后字符串:</li></ul>
</div>
<script>//********************************加密**********************************//獲取當(dāng)前時(shí)間戳13位 + 3位字符var timestamp = new Date().getTime().toString() + "WZH";//加密密鑰16位var encrypt_key = timestamp;//加密向量16位var iv = 'ZZWBKJ_ZHIHUAWEI';//要加密的數(shù)據(jù)var encrypt_string = '{"username":"1001","password":"123456","terminal":"PC"}';//加密后密文(加密函數(shù)在function.js文件中)var encrypted_string = encrypt(encrypt_string, encrypt_key, iv);$("#encrypt_key").text("JS加密密鑰:" + encrypt_key);$("#encrypt_string").text("JS加密后字符串:" + encrypted_string);//********************************結(jié)束**********************************//********************************解密**********************************//解密密鑰16位(解密向量同上)var decrypt_key = '20180227110419WB';//解密密文字符串var decrypt_string = "8bkd/doBOrG3+pTEGkRwk9A3ZLrzXtf10E6Nn9CSoHXRXHydM7xt7PllPhUSItuK8ciF5g6UZ7DruCPQCVNZIJzI4ZHyUMJlV2aHyqMhbEoyS3pK6lPs1MsOeU/H7BZ5";var decrypted_string = decrypt(decrypt_string, decrypt_key, iv);$("#decrypt_key").text("解密的密鑰(PHP端生成):" + decrypt_key);$("#decrypt_string").text("JS解密后字符串:" + decrypted_string);//********************************結(jié)束**********************************
</script>
</body>
</html>

界面效果

在這里插入圖片描述

JS(funciton.js)代碼

/*** 接口數(shù)據(jù)加密函數(shù)* @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;
}/*** 接口數(shù)據(jù)解密函數(shù)* @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;charset=utf-8");//加密向量16位
$iv = "ZZWBKJ_ZHIHUAWEI";
//********************************解密**********************************
//js加密秘鑰16位
$decrypt_key = "1519699179001WZH";
//js加密密文字符串
$decrypt_data = "ngX3VuJ+b2dBmfMEk4+Q8eVGNnWeidwMZltHn78g4b8sn1i7Di8LPeNnQNQmY525LxADvJKIEpv2Vzs0w9fdlw==";
$decrypted = decrypt($decrypt_data, $decrypt_key, $iv);
//解密結(jié)果
var_dump($decrypted);
//exit;
//********************************結(jié)束**********************************
//********************************加密**********************************
//PHP加密秘鑰16位
$encrypt_key = date("YmdHis") . "WB";
//PHP加密數(shù)據(jù)
$arr = array('username' => '1001', 'password' => '123456', 'terminal' => 'PC');
//轉(zhuǎn)換成json字符串
$encrypt_data = json_encode($arr);
$encrypted = encrypt($encrypt_data, $encrypt_key, $iv);
//加密結(jié)果
var_dump($encrypted);
exit;
//********************************結(jié)束**********************************//******************************集成函數(shù)********************************
/*** 加密字符串* @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);
}

在這里插入圖片描述

其它

另一篇文章中的代碼測(cè)試,基本一致


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);//隨機(jī)生成長(zhǎng)度為32的16進(jìn)制字符串。IV稱為初始向量,不同的IV加密后的字符串是不同的,加密和解密需要相同的IV。var key = "0321ebeba1f75de2d3cd3471af7418a4";//秘鑰。長(zhǎng)度32的16進(jìn)制字符串。
var cryptkey  = CryptoJS.enc.Hex.parse(key);//將16進(jìn)制字符串轉(zhuǎn)換為 WordArray對(duì)象
//或者 
//var key = "qwertyuiopasdfgh";//長(zhǎng)度16的utf8字符串
//var cryptkey =  CryptoJS.enc.Utf8.parse(key);//將utf8字符串轉(zhuǎn)換為 WordArray對(duì)象
//重點(diǎn)是 key要轉(zhuǎn)換為WordArray對(duì)象,加密時(shí)要用。//測(cè)試
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: 注意參數(shù)key為WordArray對(duì)象
//return: 密碼對(duì)象 或者 密碼對(duì)象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;//密碼對(duì)象(Obejct類型,非WordArray類型),Base64編碼。//return ciphertext.toString();//密碼對(duì)象的Base64字符串}//** 解密 **
//var plaintext  = CryptoJS.AES.decrypt(ciphertext, key, cfg);
//params: 注意參數(shù)ciphertext 必須為 Base64編碼的對(duì)象或者字符串。
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對(duì)象轉(zhuǎn)utf8字符串
}

文章來(lái)源:

  • 基于PHP和JS的AES相互加密解密方法詳解(CryptoJS)
  • 基于PHP7和JS的AES相互加密解密方法詳解2(CryptoJS)
  • php:aes加密使用mcrypt_decrypt能解開,openssl_decrypt卻解不開,what?
  • CryptoJS中AES256(CBC)加密算法簡(jiǎn)單使用
  • HTML使用 crypto-js-AES 加密
http://m.aloenet.com.cn/news/38193.html

相關(guān)文章:

  • 做外貿(mào)怎么打開國(guó)外網(wǎng)站亞馬遜關(guān)鍵詞搜索工具
  • 想自己做點(diǎn)飄紗素材到網(wǎng)站上買鄭州seo服務(wù)技術(shù)
  • 網(wǎng)站自助授權(quán)系統(tǒng)站長(zhǎng)之家網(wǎng)站排名
  • 成立一個(gè)網(wǎng)站平臺(tái)要多少錢關(guān)鍵詞是怎么排名的
  • 品牌網(wǎng)站建設(shè)小科6a蚪湖北網(wǎng)絡(luò)推廣有限公司
  • 做網(wǎng)站要注意哪些長(zhǎng)春網(wǎng)絡(luò)優(yōu)化最好的公司
  • 網(wǎng)站建設(shè)需要多大的空間百度數(shù)據(jù)庫(kù)
  • 網(wǎng)站搜索排名百度seo系統(tǒng)
  • 免費(fèi)看電視劇的網(wǎng)站在線觀看seo免費(fèi)診斷電話
  • 橙子建站落地頁(yè)制作郴州網(wǎng)站建設(shè)
  • 網(wǎng)站app簡(jiǎn)單做軟文怎么寫
  • 北京價(jià)格微網(wǎng)站建設(shè)手機(jī)百度ai入口
  • 中英文網(wǎng)站asp怎么做搜狗搜圖
  • 網(wǎng)站建設(shè)頤高上海街保溫杯軟文營(yíng)銷300字
  • 源代碼做的網(wǎng)站好用么百度開放云平臺(tái)
  • 湖州企業(yè)做網(wǎng)站手機(jī)關(guān)鍵詞seo排名優(yōu)化
  • 游戲推廣網(wǎng)站制作seo的基本步驟包括哪些
  • 團(tuán)購(gòu)網(wǎng)站做攝影如何查詢百度收錄
  • 怎么做網(wǎng)站平臺(tái)教程營(yíng)銷方式和渠道
  • 廣州網(wǎng)站建設(shè)o2o搜索引擎查詢
  • 免費(fèi)二級(jí)域名空間注冊(cè)天津seo博客
  • php學(xué)多久可以做網(wǎng)站南京seo關(guān)鍵詞排名
  • 網(wǎng)站建設(shè)培訓(xùn)ppt上海百度seo點(diǎn)擊軟件
  • 做網(wǎng)站底色怎么選必應(yīng)站長(zhǎng)平臺(tái)
  • 蘿崗營(yíng)銷型網(wǎng)站建設(shè)深圳互聯(lián)網(wǎng)公司50強(qiáng)
  • wordpress手機(jī)建站教程搜索引擎 磁力吧
  • 年輕的兒媳seo技術(shù)培訓(xùn)教程視頻
  • 寧遠(yuǎn)縣做網(wǎng)站的網(wǎng)站如何推廣出去
  • 做仿網(wǎng)站的書谷歌優(yōu)化技巧
  • 做菠菜網(wǎng)站判多久seo關(guān)鍵詞優(yōu)化報(bào)價(jià)價(jià)格