整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          JavaScript獲取json中key所對應的va

          JavaScript獲取json中key所對應的value值的簡單方法

          不多說直接上代碼

          <script type="text/javascript">

          getJson('age');

          function getJson(key){

          var jsonObj={"name":"傅紅雪","age":"24","profession":"刺客"};

          //1、使用eval方法

          var eValue=eval('jsonObj.'+key);

          alert(eValue);

          //2、遍歷Json串獲取其屬性

          for(var item in jsonObj){

          if(item==key){ //item 表示Json串中的屬性,如'name'

          var jValue=jsonObj[item];//key所對應的value

          alert(jValue);

          }

          }

          //3、直接獲取

          alert(jsonObj[''+key+'']);

          }

          </script>

          以上就是我的分享,覺得有收獲的朋友們可以點個關注轉發收藏一下哦,感謝各位大佬們的支持!

          們在實際開發中常常會遇到使用字面量方式定義對象時,它的‘key’不是一個字符串,那么這樣的情況如何處理呢?



          1,如果變量是字符串或者數字:

          //可以使用‘方括號語法’
          let obj={}; 
          let key='key'; 
          
          obj[key]='value'; 
          
          //打印出value
          console.log(obj); 

          2,如果變量是一個對象(數組也可以看做是特殊的對象)

          //可以使用ES6提供的Map數據結構
          var key={ val: '我是對象 作為key' }; 
          
          // 初始化一個 m 類(Map類)
          var m=new Map(); 
          m.set(key, '被keyy映射的(作為值')); 
          
          //打印 '被keyy映射的(作為值'
          console.log(m.get(key));

          ES6 提供的 Map 數據結構。它類似于對象,也是鍵值對的集合,但是“鍵”的范圍不限于字符串,各種類型的值(包括對象)都可以當作鍵。

          區別在于:Object 結構提供了“字符串—值”的對應,Map 結構提供了“值—值”的對應,如果你需要“鍵值對”的數據結構,Map 比 Object 更合適。兼容性也夠好,畢竟在實際開發中新定義‘鍵值對’的中的‘鍵’的類型是較為不可控的。

          瀏覽器不支持ES6中的Map結構?

          您也可以使用‘變種’寫法:如果是對象或者數組作為‘鍵’,您可以先使用JSON.stringify()方法將其序列化一個JSON字符串,也可以使用toString()方法轉化為字符串類型。

          let obj={
           test: 'test'
          }
          //或者let objToArr=obj.toString;或let objToArr=obj.toString();
          let objToArr=JSON.stringify(obj);
          let testObj={
           objToArr: '使用stringifg轉換'
          }
          //均會正常打印出:使用stringifg轉換
          console.log(testObj.objToArr);
          //數組轉換類似。

          這樣就可以近似模擬Map存儲方式(但內部存儲原理可不相同)。



          就這樣,不論對象的‘key’是什么類型,我們都可以輕松應對了!

          書生成#

          keytool 簡介#

          Keytool是一個Java數據證書的管理工具, Keytool將密鑰(key)和證書(certificates)存在一個稱為keystore的文件中。
          在keystore里,包含兩種數據:

          • 密鑰實體(Key entity)——密鑰(secret key)又或者是私鑰和配對公鑰(采用非對稱加密)
          • 可信任的證書實體(trusted certificate entries)——只包含公鑰

          我們常說的證書就是就是上面的公鑰,公鑰是公開給其它人使用的

          • 證書后綴解釋jks 是Java的keytool證書工具支持的證書私鑰格式;pfx 是微軟支持的私鑰格式(p12是pfx的新格式);cer / crt 是證書的公鑰格式(cer是crt證書的微軟形式)csr 數字證書簽名請求文件(Cerificate Signing Request)

          Tips:

          • .der .cer : 此證書文件是二進制格式,只含有證書信息,不包含私鑰。
          • .crt : 此證書文件是二進制格式或文本格式,一般為文本格式,功能與 .der.cer 證書文件相同。
          • .pem : 此證書文件一般是文本格式,可以存放證書或私鑰,或者兩者都包含。 .pem 文件如果只包含私鑰,一般用 .key 文件代替。
          • .pfx .p12 : 此證書文件是二進制格式,同時包含證書和私鑰,且一般有密碼保護。
          • .keystore .truststore : 兩者本質都是keystore,都是儲存密鑰的容器:不過兩者存放的密鑰所有者不同,keystore是存儲自己的公鑰和私鑰而,truststore是存儲自己信任對象的公鑰。約定通過文件名稱區分類型以及用途truststore 是必須的,如果我們沒有顯式的指定,那么java會默認指定為 $JAVA_HOME/lib/security/cacerts 這個文件java 在jdk 中已經默認在 $JAVA_HOME/lib/security/cacerts 這個文件中預置了常用的證書
          • 不同語言需要的證書格式并不一致,比如說Java采用jks,.Net采用pfx和cer,Php則采用pem和cer;
          • 區別證書的不是后綴名,而是文件的格式和內容。



          keytool 命令詳解#

          • 密鑰和證書管理工具
          • -certreq 生成證書請求 -changealias 更改條目的別名 -delete 刪除條目 -exportcert 導出證書(簡寫 export) -genkeypair 生成密鑰對(簡寫 genkey) -genseckey 生成密鑰 -gencert 根據證書請求生成證書 -importcert 導入證書或證書鏈(簡寫 import) -importpass 導入口令 -importkeystore 從其他密鑰庫導入一個或所有條目 -keypasswd 更改條目的密鑰口令 -list 列出密鑰庫中的條目 -printcert 打印證書內容 -printcertreq 打印證書請求的內容 -printcrl 打印 CRL 文件的內容 -storepasswd 更改密鑰庫的存儲口令

          Tips:

          • 使用 ketytool --help 獲取所有可用命令
          • 使用 keytool -command_name -help 來獲取 command_name 的用法
          • 常用參數
          • -genkey 產生密鑰對(genkeypair 簡寫);表示要創建一個新的密鑰;alias和keystore缺省時,在用戶主目錄中創建一個”.keystore”文件,且別名為mykey,包含用戶的公鑰、私鑰證書 -alias 產生證書別名,和keystore關聯的唯一別名,不區分大小寫(默認 `mykey`) -keystore 指定密鑰庫文件的名稱(默認在用戶主目錄創建證書庫) -keyalg 指定密鑰的算法(可選擇密鑰算法:`RSA`、`DSA`、`EC`,默認`DSA`) -keysize 指定密鑰長度(與keyalg默認對應關系:`RSA=2048`、`DSA=2048`、`EC=256`) -sigalg 指定簽名算法(MD5和 SHA1的簽名算法已經不安全) -validity 指定證書有效期天數(默認 `90`天) -storepass 指定密鑰庫口令,推薦與keypass一致(獲取keystore信息所需的密碼) -storetype 指定密鑰庫的類型,可用類型為:JKS、PKCS12等。(jdk9以前,默認為JKS。自jdk9開始,默認為PKCS12) -keypass 指定別名條目口令(私鑰的密碼) -dname 指定證書發行者信息(其中 CN 要和服務器的域名相同,本地測試則使用localhost,其他的可以不填) -list 顯示密鑰庫中的證書信息 -v 詳細輸出,顯示密鑰庫中的證書詳細信息 -file 指定導出或導出的文件名 -export 將別名指定的證書導出到文件(exportcert 簡寫) -import 將已簽名數字證書導入密鑰庫(importcert 簡寫) -printcert 查看導出的證書信息 -delete 刪除密鑰庫中某條目 -keypasswd 修改密鑰庫中指定條目口令 -storepasswd 修改keystore口令 -ext X.509 擴展
          • 所有密碼長度必須大于或等于 6 位
          • keyalg 指定加密算法;可以選擇的密鑰算法有:RSA、DSA(默認)、EC。
          • sigalg 指定簽名算法(MD5和 SHA1的簽名算法已經不安全):
            • keyalg=RSA 時,簽名算法有:MD5withRSA、SHA1withRSA、SHA256withRSA(默認)、SHA384withRSA、SHA512withRSA
            • keyalg=DSA 時,簽名算法有:SHA1withDSA、SHA256withDSA(默認)
          • dname 表明了密鑰的發行者身份(Distinguished Names)
            • CN=域名或IP(Common Name) 注:生成服務器證書時,CN要和服務器的域名相同,本地測試則使用localhost,其他的可以不填(客戶端證書無要求)
            • OU=組織單位名稱(Organization Unit)
            • O=組織名稱(Organization Name)
            • L=城市或區域名稱(Locality Name)
            • ST=州或省份名稱(State Name)
            • C=國家的簡寫(Country,CN 代表中國)



          創建證書#

          創建秘鑰庫(keystore),秘鑰庫是存儲一個或多個密鑰條目的文件,每個密鑰條目應該以一個別名標識,它包含密鑰和證書相關信息。

          • Usage:
          • keytool -genkey -alias <alias> -keyalg RSA [-sigalg SHA256withRSA] [-keysize 2048] -keypass <keypasswd> -keystore <keystore_file> -storetype JKS|PKCS12 -storepass <keystore_passwd> -validity 3650 -dname "CN=github.com,OU=github.com,Inc.,O=Github, Inc.,L=San Francisco,ST=California,C=US" -ext SAN=dns:github.com,dns:www.github.com,ip:127.0.0.1
          • Options:
          • -genkey 產生密鑰對(genkeypair 簡寫) -alias 證書別名;和keystore關聯的唯一別名,這個alias通常不區分大小寫(默認`mykey`) -keyalg 指定加密算法,RSA:非對稱加密(默認`DSA`) -sigalg 指定簽名算法,可選; -keysize 指定密鑰長度,可選; -keypass 指定別名條目口令(私鑰的密碼) -storetype 生成證書類型,可用的證書庫類型為:JKS、PKCS12等。 -keystore 指定產生的密鑰庫的位置; -storepass 指定密鑰庫的存取口令,推薦與keypass一致 -validity 證書有效期天數;(默認為 90天) -dname 表明了密鑰的發行者身份(Distinguished Names)生成證書時,其中 CN 要和服務器的域名相同,本地測試則使用localhost,其他的可以不填 -ext X.509 擴展

          Tips:

          • 此處需要注意:MD5和SHA1的簽名算法已經不安全;
          • 如果Tomcat所在服務器的域名不是“localhost”時,瀏覽器會彈出警告窗口,提示用戶證書與所在域不匹配。服務器證書 dname的 CN應改為對應的域名,如“www.github.com”;在本地做開發測試時,CN應填入“localhost”;客戶端證書 dname的 CN可以是任意值,且不用使用 -ext擴展。

          創建證書栗子#

          1. 生成服務器證書
          2. keytool -genkey -alias server -keyalg RSA -keypass 123456 -keystore ~/ssl/tomcat.jks [-storetype JKS] -storepass 123456 -validity 3650 -dname "CN=localhost" -ext SAN=ip:127.0.0.1
          3. 生成客戶端證書,以便讓服務器來驗證它。為了能將證書順利導入至IE和Firefox,證書格式應該是PKCS12(客戶端的CN可以是任意值)
          4. keytool -genkey -alias client -keyalg RSA -keypass 123456 -keystore ~/ssl/client.p12 -storetype PKCS12 -storepass 123456 -validity 3650 -dname "CN=client"



          導出證書信息#

          此證書文件不包含私鑰;分為自簽名證書和認證證書,下面分別介紹了兩中證書的生成方式

          • 認證證書與導出的服務器自簽名證書作用一致,使用時取其中一種證書即可。兩者主要區別為是否經證書機構認證;
          • 使用自簽名證書則無需生成證書簽名請求(CSR),使用認證證書則無需導出服務器自簽名證書;
          • 大部分認證證書都是收費的;

          導出自簽名證書#

          自簽名證書沒有經過證書認證機構進行認證,但并不影響使用,我們可以使用相應的命令對證書進行導出;

          • Usage:
          • keytool -export -alias <alias> -keystore <keystore_file> -storepass <keystore_passwd> -file <file_cer> [-rfc]
          • Options:
          • -export 執行證書導出操作(exportcert 簡寫) -alias 密鑰庫中的證書條目別名(jks里可以存儲多對公私鑰文件,通過別名指定導出的公鑰證書) -keystore 指定密鑰庫文件 -storepass 密鑰庫口令 -file 導出文件的輸出路徑 -rfc 使用Base64格式輸出(輸出pem編碼格式的證書,文本格式),不適用則導出的證書為DER編碼格式

          導出證書栗子

          1. 導出服務器證書
          2. 此處為服務器的自簽名證書導出, 如果需要使用認證證書,則生成證書簽名請求
          3. keytool -export -alias server -keystore ~/ssl/tomcat.jks -storepass 123456 -file ~/ssl/server.cer
          4. 導出客戶端證書
          5. 雙向認證: 服務端信任客戶端,由于不能直接將PKCS12格式的證書庫導入,所以必須先把客戶端證書導出為一個單獨的CER文件
          6. keytool -export -alias client -keystore ~/ssl/client.p12 -storepass 123456 -file ~/ssl/client.cer -rfc

          獲取認證證書(生成證書簽名請求)#

          如果想得到證書認證機構的認證,則不使用上述的自簽名證書,需要使用步驟導出數字證書并簽發申請(Cerificate Signing Request),經證書認證機構認證并頒發后,再將認證后的證書導入本地密鑰庫與信任庫。

          • Usage:
          • keytool -certreq -alias <alias> -keystore <keystore_file> -storepass <keystore_passwd> -file <file_csr>
          • Options:
          • -certreq 執行證書簽發申請導出操作 -alias 密鑰庫中的證書條目別名 -keystore 密鑰庫文件名稱 -storepass 密鑰庫口令 -file 輸出的csr文件路徑

          生成證書簽名請求栗子

          1. 生成證書簽名請求(CSR)
          2. keytool -certreq -alias server -keystore ~/ssl/tomcat.jks -storepass 123456 -file ~/ssl/certreq.csr
          3. 查看生成的CSR證書請求
          4. keytool -printcertreq -file certreq.csr



          導入證書庫#

          雙向認證: 將各自的公鑰證書分別導入對方的信任庫,使客戶端和服務端相互信任。

          • Usage:
          • keytool -import [-trustcacerts] -alias <alias_cer> -keystore <keystore_file> -storepass <keystore_passwd> -file <file_cer>
          • Options:
          • -import 執行證書導入操作(importcert 簡寫) -alias 指定導入密鑰庫中的證書別名(指定的條目別名不能與密鑰庫中已存在的條目別名重復(導入簽發證書除外)) -trustcacerts 將證書導入信任庫(信任來自 cacerts 的證書) -keystore 密鑰庫名稱 -storepass 密鑰庫口令 -file 輸入文件名

          導入證書栗子#

          1. 安裝服務器證書(將服務器公鑰證書導入客戶端)
          2. 雙向認證: 客戶端信任服務端: 在客戶機器上雙擊證書文件完成導入操作(window中導入)
          3. 將服務器公鑰證書 server.cer 發往客戶端機器 >> 雙擊該證書進入“證書信息”頁 >> 點擊【安裝證書】進入“證書導入向導”首頁 >> 點擊【下一步】>> 選中【將所有的證書都放入下列存儲】,然后單擊【瀏覽】 >> 選擇【受信任的根證書頒發機構】b并點擊【確定】 >> 點擊【下一步】 >> 點擊【完成】。然后彈出提示【導入完成】。
          4. 將客戶端證書 client.p12 發往客戶端機器 >> 雙擊該證書進入“證書導入向導”首頁 >> 點擊【下一步】>> 點擊【下一步】>> 輸入證書密碼(keystore密碼)并點擊【下一步】 >> 點擊【下一步】 >> 點擊【完成】。然后彈出提示【導入完成】。
          5. 證書導入信任庫(將客戶端公鑰證書導入信任庫)
          6. 雙向認證: 服務端信任客戶端:
          7. keytool -import -alias clientCert -keystore ~/ssl/truststore.jks -storepass 123456 -file ~/ssl/client.cer
          8. 此步驟會生成信任證書 truststore.jks文件, 文件存放需要信任的公鑰證書,如客戶端證書(也可以將 keystore值改為服務器密鑰庫,即tomcat.jks。此時的tomcat.jks 就同時是服務的密鑰庫和信任庫)



          查看證書#

          • Usage:
          • # 查看單個證書(cer | crt) keytool -printcert -file <cert_file> [-v|-rfc] # 查看密鑰庫中的證書條目 keytool -list [-alias <alias_name>] -keystore <keystore_file> -storepass <keystore_passwd> [-v|-rfc] # 查看生成的CSR證書請求 keytool -printcertreq -file <certreq_file>
          • Options:
          • -alias 密鑰庫中的證書條目別名; -keystore 指定密鑰庫文件; -storepass 密鑰庫口令; -printcert 執行證書打印命令; -list 缺省情況下,命令打印證書的 MD5 指紋。 而如果指定了 -v 選項,將以可讀格式打印證書, 如果指定了 -rfc 選項,將以可打印的編碼格式輸出證書。

          查看栗子證書#

          1. 查看證書信息
          2. keytool -printcert -file ~/ssl/client.cer [-v|-rfc]
          3. 查看密鑰庫
          4. keytool -list -keystore ~/ssl/tomcat.jks -storepass 123456 -v
          5. 查看base64的內容(即PEM編碼)
          6. keytool -list -keystore ~/ssl/tomcat.jks -storepass 123456 -rfc



          其他keytool命令#

          # 刪除keystore里面指定證書條目
          keytool -delete -alias <alias> -keystore <keystore_file> -storepass <keystore_passwd>
          
          # 修改條目別名
          keytool -changealias -keystore <keystore_file> -alias <old_alias> -destalias <new_alias>
          
          # 修改條目密碼
          keytool -keypasswd -alias <alias> -keypass <old_keypasswd> -new <new_keypasswd> -keystore <keystore_file> -storepass <keystore_passwd>
          
          # 修改keysore密碼
          keytool -storepasswd -new <new_storepasswd> -keystore <keystore_file> -storepass <old_storepasswd>
          
          
          # 列出信任的CA證書(查看 JVM的信任庫中的證書,storepass 默認為changeit)
          ## 該證書文件存在于JAVA_HOME\jre\lib\security目錄下,是Java系統的CA證書倉庫,可以用 'alias' 來查看證書是否真的導入到JVM中
          keytool -list -v [-alias clientCer] -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
          
          # 導入新的CA到信任證書,導入到 JRE的信任證書庫
          ## 常出現的異常:“未找到可信任的證書”  -- 主要原因為在客戶端未將服務器下發的證書導入到JVM中。
          keytool -import -trustcacerts -alias clientCer -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -file ~/ssl/client.cer
          



          Tomcat服務認證配置#

          打開Tomcat_HOME/conf/server.xml,找到如下原注釋內容,并修改如下:

          <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
              maxThreads="150" scheme="https" secure="true"
              clientAuth="true" sslProtocol="TLS"
              keystoreFile="~/ssl/tomcat.jks" keystorePass="123456"
              truststoreFile="~/ssl/truststore.jks" truststorePass="123456"
          />
          

          Tips:

          • 其中 clientAuth 指定是否需要驗證客戶端證書
          • false : 表示單向SSL驗證,即服務端認證;
          • true : 表示強制雙向SSL驗證,必須驗證客戶端證書;
          • want : 表示可以驗證客戶端證書,但如果客戶端沒有有效證書,也不強制驗證。
          • 如果設置了clientAuth="true",則需要強制驗證客戶端證書。可通過雙擊 p12 文件將證書導入至瀏覽器;
          • 瀏覽器的HTTP缺省端口為 80 , HTTPS缺省端口為 443
          • keystoreFile /keystorePass : 服務器證書文件和密碼;
          • truststoreFile /truststorePass : 信任證書文件和密碼;用來驗證客戶端的。

          SSL單向證書認證配置#

          1. 創建服務器證書
          2. 導出服務器公鑰證書
          3. 將服務器公鑰證書導入客戶端(客戶端信任服務器)
          4. 配置 Tomcat
            打開Tomcat_HOME/conf/server.xml,找到如下原注釋內容,并修改如下:
          <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
              maxThreads="150" scheme="https" secure="true"
              clientAuth="false" sslProtocol="TLS"
              keystoreFile="~/ssl/tomcat.jks" keystorePass="123456"()
          />
          

          SSL雙向證書認證配置#

          1. 創建服務器證書,創建客戶端證書
          2. 導出服務器公鑰證書,導出客戶端公鑰證書
          3. 將服務器公鑰證書導入客戶端(客戶端信任服務器)
          4. 將客戶端公鑰證書導入信任庫(服務器信任客戶端)
          5. 配置 Tomcat,并開啟雙向認證():
            打開Tomcat_HOME/conf/server.xml,找到如下原注釋內容,并修改如下:
          6. <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="true" sslProtocol="TLS" keystoreFile="~/ssl/tomcat.jks" keystorePass="123456" truststoreFile="~/ssl/truststore.jks" truststorePass="123456" />

          配置Tomcat服務 HTTP自動跳轉到 HTTPS(按需選配)#

          打開Tomcat_HOME/conf/web.xml,在 與 加入如下代碼:

          <login-config> 
              <!-- Authorization setting for SSL --> 
              <auth-method>CLIENT-CERT</auth-method> 
              <realm-name>Client Cert Users-only Area</realm-name> 
          </login-config> 
          <security-constraint> 
              <!-- Authorization setting for SSL --> 
              <web-resource-collection > 
                  <web-resource-name >SSL</web-resource-name> 
                  <url-pattern>/*</url-pattern> 
              </web-resource-collection> 
              <user-data-constraint> 
                  <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
              </user-data-constraint> 
          </security-constraint> 
          



          測試#

          1. 啟動 Tomcat項目
          2. 訪問 項目地址,本地配置如: https://localhost:8443/
          3. 如果遇到“不安全”的提示,可能是客戶端未安裝服務器證書



          常見問題#

          瀏覽器訪問時提示:

          1. 此服務器無法證實它是“192.168..” - 您計算機的操作系統不信任其安全證書 。。。
            --客戶端未導入服務器證書
          2. 此服務器無法證實它就是“192.168..” - 它的安全證書沒有指定主題備用名稱 。。。
            --生成服務器證書庫未使用 -ext參數
          3. “192.168..”不接受您的登錄證書,或者您可能沒有提供登錄證書。。。
            --Tomcat配置未指定信任證書庫(truststore)




          Reference

          • https://www.cnblogs.com/molao-doing/articles/9687445.html
          • https://yoloz.github.io/2020/04/17/security/keytool命令詳解/
          • https://blog.csdn.net/qq_26708427/article/details/68491201

          來源:https://www.cnblogs.com/librarookie/p/16364384.html


          主站蜘蛛池模板: 亚洲综合一区无码精品| 亚洲视频一区网站| 久久精品无码一区二区无码| 亚洲国产成人久久一区二区三区 | 精品国产一区二区三区久| 亲子乱av一区二区三区| 无码少妇丰满熟妇一区二区| 久久精品一区二区三区日韩| 波多野结衣在线观看一区| 一区二区福利视频| 亚洲va乱码一区二区三区| 国产精品一区二区久久精品无码| 亚洲性无码一区二区三区| 国产在线一区二区综合免费视频| 国产成人高清亚洲一区久久| 麻豆高清免费国产一区| 久久国产免费一区| 韩国福利一区二区三区高清视频 | 久久久久久免费一区二区三区| 视频在线观看一区二区三区| 亚洲日韩AV一区二区三区四区 | 国产精品视频第一区二区三区| 成人在线一区二区| 国产在线观看精品一区二区三区91| 国产精品一区二区不卡| 亚洲天堂一区二区三区| 文中字幕一区二区三区视频播放 | 国产福利一区二区三区| 日韩在线不卡免费视频一区| 日本成人一区二区| 夜夜添无码一区二区三区| 中文字幕一区二区三区有限公司 | 亚洲国产av一区二区三区| 国产精品538一区二区在线| 国精产品一区一区三区有限公司| 欧美人妻一区黄a片| 极品少妇一区二区三区四区| 成人久久精品一区二区三区| 在线观看视频一区二区| 国产精品一区二区电影| 日本精品少妇一区二区三区|