中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

springboot~configserver里對重要信息(xi)進(jin)行RSA加(jia)密

簡介

參考:
RSA非對(dui)稱加(jia)密(mi)(mi)(mi)有著非常強大的(de)安全(quan)性(xing),HTTPS的(de)SSL加(jia)密(mi)(mi)(mi)就(jiu)是使用(yong)這種方(fang)法(fa)進(jin)(jin)行(xing)(xing)HTTPS請求加(jia)密(mi)(mi)(mi)傳(chuan)輸的(de)。因(yin)為(wei)(wei)(wei)RSA算法(fa)會(hui)涉及Private Key和(he)Public Key分別(bie)用(yong)來加(jia)密(mi)(mi)(mi)和(he)解(jie)(jie)密(mi)(mi)(mi),所以(yi)稱為(wei)(wei)(wei)非對(dui)稱加(jia)密(mi)(mi)(mi)。Private Key和(he)Public Key有互操作性(xing),即用(yong)private key加(jia)密(mi)(mi)(mi)的(de)可(ke)以(yi)用(yong)public key解(jie)(jie)密(mi)(mi)(mi),用(yong)public key加(jia)密(mi)(mi)(mi)的(de)可(ke)以(yi)用(yong)private key解(jie)(jie)密(mi)(mi)(mi)。傳(chuan)統的(de)單向(xiang)認(ren)證則只用(yong)public key進(jin)(jin)行(xing)(xing)加(jia)密(mi)(mi)(mi),有private key的(de)一(yi)方(fang)才可(ke)進(jin)(jin)行(xing)(xing)解(jie)(jie)密(mi)(mi)(mi)。例(li)如,一(yi)個web服(fu)務(wu)(wu)(wu)器(qi)(qi)會(hui)有一(yi)對(dui)private key和(he)public key。瀏覽器(qi)(qi)客戶(hu)端(duan)保存著服(fu)務(wu)(wu)(wu)器(qi)(qi)的(de)public key。當客戶(hu)端(duan)需要向(xiang)服(fu)務(wu)(wu)(wu)器(qi)(qi)發(fa)送數據(ju)(ju)時,就(jiu)用(yong)服(fu)務(wu)(wu)(wu)器(qi)(qi)的(de)public key進(jin)(jin)行(xing)(xing)加(jia)密(mi)(mi)(mi),然(ran)后服(fu)務(wu)(wu)(wu)器(qi)(qi)收到(dao)數據(ju)(ju)時,再用(yong)private key進(jin)(jin)行(xing)(xing)解(jie)(jie)密(mi)(mi)(mi)。客戶(hu)端(duan)驗(yan)證服(fu)務(wu)(wu)(wu)器(qi)(qi)是否為(wei)(wei)(wei)真實(shi)的(de)服(fu)務(wu)(wu)(wu)器(qi)(qi)時,會(hui)根據(ju)(ju)服(fu)務(wu)(wu)(wu)器(qi)(qi)提(ti)供的(de)public key和(he)自己(ji)本地保存的(de)public key作比較(jiao),一(yi)致的(de)話才能驗(yan)證服(fu)務(wu)(wu)(wu)器(qi)(qi)的(de)真實(shi)性(xing)。

在我們的(de)config server中,一些(xie)對加密要求比較(jiao)高的(de)可以采(cai)用RSA算法(fa)進行數據的(de)加密和解密

生成測試Keystore

我們需要使用(yong)jdk自帶的keytool工具(ju)生成一個keystore,里邊保存(cun)了private key的信(xin)息,使用(yong)如下命令(ling)行:

keytool -genkeypair -alias config-server-key -keyalg RSA -dname "CN=Config Server,OU=Xuqian,O=My Own Company,L=Beijing,S=Beijing,C=CN" -keypass changeit -keystore server.jks -storepass changeit
  • genkeypair 參數即產生一對public key和private key。
  • alias 指定key的別名,用于區分同一keystore中不同的key。
  • keyalg 指定生成key的算法,這里使用默認的RSA
  • dname 指定common name,即CN,用以驗證key的身份。其中各項皆為自定義參數,OU為單位名稱,O為組織名稱,L為城市,S為省份/州,C為國家
  • keypass 為key的密碼
  • keystore 為keystore的文件名
  • storepass 訪問keystore的密碼

上述工具將產生的 privte key 保存在了名為server.jks的 key store 中。到目前為止,我們只產生了 private key,Spring Cloud Config Server 會根據我們提供的 key 的信息,每次會用程序生成一個 public key,參考如下源代碼org.springframework.security.rsa.crypto.KeyStoreKeyFactory:
這里(li)使用了(le) Java Security API 來對key進(jin)行(xing)操作。參見注釋。然(ran)后上邊的信息通過 configserver 中的 bootstrap.xml 配(pei)置文件(jian)提(ti)供(gong):

 encrypt:
  #key: Thisismysecretkey
  key-store:
    location: file://${user.home}/development/keys/server.jks
    password: changeit
    alias: config-server-key
    secret: changeit

因為我們不能同時使用對稱加密和非對稱加密,所以我們把 encrypt.key 配(pei)置注釋掉,然后指定非(fei)對稱加密(mi)的參數:

  • location: Keystore 的文件路徑
  • password: keystore 的密碼
  • alias: key 的別名
  • secret: key的密碼

測試

我們繼續(xu)使用 encrypt API加密一項測試數據(ju)

curl //localhost:8888/encrypt -d lind123

返回加密后的字符:

AQAPWOUOh4WVexGgVv+bgtKc5E0d5Aba8VUKnzEXh27HyKSAbW+wyzDwZTbk5QYfXpoCAs413rdeNIdR2ez44nkjT5V+438/VQExySzjZPhP0xYXi9YIaJqA3+Ji+IWK8hrGtJ4dzxIkmItiimCOirLdZzZGDm/yklMUVh7lARSNuMxXGKlpdBPKYWdqHm57ob6Sb0ivm4H4mL1n4d3QUCuE7hh2F4Aw4oln7XueyMkRPTtPy8OpnBEEZhRfmaL/auVZquLU5jjMNJk9JiWOy+DSTscViY/MZ+dypv6F4AfDdVvog89sNmPzcUT+zmB8jXHdjLoKy+63RG326WffY9OPuImW6/kCWZHV6Vws55hHqRy713W6yDBlrQ/gYC3Wils=

然后測試解密

curl //localhost:8888/decrypt -d AQAPWOUOh4+bgtKc5E0d5Aba8VUKnzEXh27HyKSAbW+wyzDwZTbk5QYfXpoCAs413rdeNIdR2ez44nkjT5V+438/VQExySzjZPhP0xYXi9YIaJqA3+Ji+IWK8hrGtJ4dzxIkmItiimCOirLdZzZGDm/yklMUVh7lARSNuMxXGKlpdBPKYWdqHm57ob6Sb0ivm4H4mL1n4d3QUCuE7hh2F4Aw4oln7XueyMkRPTtPy8OpnBEEZhRfmaL/auVZquLU5jjMNJk9JiWOy+DSTscViY/MZ+dypv6F4AfDdVvog89sNmPzcUT+zmB8jXHdjLoKy+63RG326WffY9OPuImW6/kCWZHV6Vws55hHqRy713W6yDBlrQ/gYC3Wils=

會返回

lind123

應用到項目

添加依賴

implementation('org.springframework.security:spring-security-rsa')

bootstrap.yml內容(rong)

user:
  password: '{cipher}AQAPWOUOh4WVexGgVv+bgtKc5E0d5Aba8VUKnzEXh27HyKSAbW+wyzDwZTbk5QYfXpoCAs413rdeNIdR2ez44nkjT5V+438/VQExySzjZPhP0xYXi9YIaJqA3+Ji+IWK8hrGtJ4dzxIkmItiimCOirLdZzZGDm/yklMUVh7lARSNuMxXGKlpdBPKYWdqHm57ob6Sb0ivm4H4mL1n4d3QUCuE7hh2F4Aw4oln7XueyMkRPTtPy8OpnBEEZhRfmaL/auVZquLU5jjMNJk9JiWOy+DSTscViY/MZ+dypv6F4AfDdVvog89sNmPzcUT+zmB8jXHdjLoKy+63RG326WffY9OPuImW6/kCWZHV6Vws55hHqRy713W6yDBlrQ/gYC3Wils='

訪問:

返回內容已經解密了

{

 "user.password": "23456789"

}

posted @ 2018-12-21 11:56  張占嶺  閱讀(2064)  評論(0)    收藏  舉報