當前位置:首頁 » 密碼管理 » spring加密解密

spring加密解密

發布時間: 2024-07-26 17:39:47

① SpringBoot 請求消息體解密(通信加密解密)

在一些安全性要求較高的項目中,我們希望客戶端請求數據可以做到數據加密,伺服器端進行解密。(單純的HTTPS仍難以滿足安全需要。)

本文基於SpringBoot針對消息體進行解密,目前僅支持請求消息解密。(響應消息過大情況下,加密會帶來嚴重的性能問題。)

流程如下:
使用DES cbc模式對稱加密請求體。要求客戶端請求前加對消息體進行加密,伺服器端通過SpringMVC Advice攔截請求解密後,傳給controller的方法。

@ControllerAdvice註解可以掃描針對Controller層的擴展組件。通過@Sort註解可以使其支持順序載入。
RequestBodyAdviceAdapter是RequestBodyAdvice適配器類,可以方便的擴展所需要的方法。

RequestBodyAdvice功能如下:
允許在請求消息體在被讀取及調用convert轉換成實體之前做一些個人化操作,作用於含有@RequestBody註解的請求。實現此介面的類,需要在RequestMappingHandlerAdapter中配置或通過@ControllerAdvice註解配置。

原文如下:

使用以下註解即可快速開啟全部請求的伺服器端消息體解密功能。

使用scan-annotation可開啟註解所標注的Conrtoller的類或其方法的解密功能。將要解密的方法或類上添加@SecretBody註解。並開啟以下配置:

可以使用annotation-class配置自己的自定義註解:

作用於整個類:

作用於方法:

默認密鑰如下,可以自行修改

前端調用時,需先將要請求的消息體通過DEScbc模式加密消息體(如json字元串)後傳輸。一般在http工具的請求攔截器中進行處理。如為json,仍然需要指定content-type為application/json。
postman請求示例如下:

② 【參數加密】前後端分離請求參數加密與響應結果加密處理

編輯更改過濾器的注冊
因注冊到spring security 組件上無法攔截ignoing 的請求,更改為spring boot 方式注冊,注意點為order 排序的設置,響應最簡單設置為最大就好。關鍵點是請求filter的位置非常重要。這里要放在 spring security 內置過濾器前,spring CorsFilter 之後,此處多次測試猜的數為-100,暫未找到更科學方法。

JsonUtils 工具類

java結束

上訴把程序以及思路提供,可以根據自己需要的加密解密方式進行處理,以下兩種方式我進行了嘗試最終選擇了第二種。

③ java開發人事系統,需要對敏感數據進行加密存儲,為了不影響統計分析和查詢功能,大家有好的實現方案嗎

沒錯,資料庫中存的ID項加密。查詢匹配時使用js或後台將用戶輸入的內容加密後去資料庫匹配。查詢到加密的資料庫數據後在後台解密在發送到前台。如果對於安全要求較高就不要在js中解密。最後,類似於ID的數據加密模式和敏感信息的加密模式要不一致,這樣可以保護你需要保護的敏感信息,即使有人通過js破解了你的ID等數據的加密,也無法獲取真正的敏感信息。

④ SpringBoot Starter自定義註解 - 介面加解密

目標

本章我們將編寫一個starter,目標如下:

1、對外提供 @OpenAPI 註解,使用此註解它會對接收的請求數據進行解密,對要返回的數據進行加密。

2、完成服務端使用示例

3、完成前端調用示例

加密規則

1、對業務數據進行AES加密,示意代碼:encryptData=AES("業務數據", aesKey)

2、對AES的key進行公鑰加密,示意代碼:encryptKey=RSA(aesKey, 公鑰)

3、簽名sign=md5(encryptData+encryptKey)

加密後請求示例

Content-Type: application/x-www-form-urlencoded;charset=UTF-8

請求參數

服務端返回示例


pom.xml

定義註解

配置公私鑰

具體代搜行碼邏輯

定義切面和自動殲巧裝配

spring.factories


服務端修改

在業氏漏鍵務項目中引入jar 包

配置公私鑰

改動的地方很少,只需要在原介面增加@OpenAPI註解即可

前端修改

修改前代碼

修改後要先對參數加密,然後對返回數據解密


安裝兩個加密庫

封裝RSA、AES和Base64加解密

⑤ springmvc spring mybatis 框架搭建的MAVEN項目,怎麼加密解密啊,有源碼

不知道你說的加密解密是指項目中對某個欄位加密解密,還是 要多源碼進行加密解密,如果是對某個欄位加密解密,比如密碼,可以自己手寫一個工具類(網上也可以找到),將傳過去的字元串用MD5或者sha1加密後返回的方式,需要加密就調用這個方法,如果你要對整個項目的源碼加密,那應該是沒辦法,因為不管怎麼加密運行的時候都需要轉化為位元組碼。位元組碼.class都是可以反編譯過來的

⑥ 「青鋒愛分享」Springboot+python之RSA加解密方案(RSA深入)二

本篇並缺文章要結合上一節文章一起看。

青鋒愛分享-RSA-Springboot+Python整合

碼雲搜索: 青鋒 會有驚喜哦哦。

通過python生成的公鑰私鑰 格式PKCS1 。

生成pem格式如下:

私鑰頭(-----BEGIN RSA PRIVATE KEY-----)

私鑰尾(-----END RSA PRIVATE KEY-----)

我需要將此私鑰轉換為DER編碼的PKCS8未加密格式,以便絕戚辯與java伺服器代碼一起使用,特別是PKCS8EncodedKeySpec。我已經試過使用rsa和pkcs8命令的OpenSSL,如果有更簡單的辦法,沒有特別需要使仔迅用openssl。

RSA私鑰格式PKCS1和PKCS8相互轉換

RSA公鑰格式PKCS1和PKCS8相互轉換

以下轉換基於openssl命令的操作;

執行:openssl genrsa -out private.pem 1024

-----BEGIN RSA PRIVATE KEY-----

MIICXQIBAAKBgQDlLm5++/wwSfq5KfY

H8q1AO/

Uo4OMcmoSz3IAp/7//ewIDAQAB

AoGBAJkMdvF+i9Kzc6YqMC0rfQJ3Zs+vFOtsbmQVAMnQ8JWBCJ1O8d/c60wRQgyb

lFCyO7VXOmoIJqX/Jr2aER8bFtG+

lOdOay7TkE45X/Wc7K9iZs2uuB7sylIvK/HVxxit6FGePa4RAkEA9e+VoAbxBv78

HyxRcStW+

n0UxgT55MPXWGdMRXUUOCNnMilaw/

HvK0IW3zpOgf/+/W565ROI/fjkR1qCD

rZJeHgqMWDlIUuR9+BdBAkAI8+

puQxMonRWTN+

-----END RSA PRIVATE KEY-----


執行:openssl pkcs8 -topk8 -inform PEM -in private.pem -outform pem -nocrypt -out pkcs8.pem


-----BEGIN PRIVATE KEY-----

+n

yHOOfV+XbBPsC7aWblIS3Pqv7/DBJ+/T

uaDSVA4K8Tmx22YC8PZ7HfAJ5/yVaaB2HmpSjg4xyahLPcgCn/v8WcxqDUh6VJ92

/

Q3fic/

+

nt0qVQJAOmMZ67caK+YHZ0M3Rp3adQgF+

//6OHlRQIElgect4wb

CbtfXWu9AfXNbTlXH39bnrlE4j9+

Yt1Zx5df0+

HLU0VEwSQa7rvmY=

-----END PRIVATE KEY-----


執行:openssl rsa -in pkcs8.pem -out pkcs1.pem


-----BEGIN RSA PRIVATE KEY-----

MIICXQIBAAKBgQDlLm5++/wwSfq5KfY

H8q1AO/

Uo4OMcmoSz3IAp/7//ewIDAQAB

AoGBAJkMdvF+i9Kzc6YqMC0rfQJ3Zs+vFOtsbmQVAMnQ8JWBCJ1O8d/c60wRQgyb

lFCyO7VXOmoIJqX/Jr2aER8bFtG+

lOdOay7TkE45X/Wc7K9iZs2uuB7sylIvK/HVxxit6FGePa4RAkEA9e+VoAbxBv78

HyxRcStW+

n0UxgT55MPXWGdMRXUUOCNnMilaw/

HvK0IW3zpOgf/+/W565ROI/fjkR1qCD

rZJeHgqMWDlIUuR9+BdBAkAI8+

puQxMonRWTN+

-----END RSA PRIVATE KEY-----


可以看出結果和1是一致的;

執行:openssl rsa -in private.pem -pubout -out public.pem


-----BEGIN PUBLIC KEY-----

+Kosybacfp8hzjn1fl2wT

7Au2lm5SEtz6r+/wwSfq5KfYH8q1AO/

/7/FnMag1IelSfdronPBDxazp6

NUmQZITsYK6CsEl/ewIDAQAB

-----END PUBLIC KEY-----


5. 從pkcs8私鑰中生成pkcs8公鑰
執行:openssl rsa -in pkcs8.pem -pubout -out public_pkcs8.pem


-----BEGIN PUBLIC KEY-----

+Kosybacfp8hzjn1fl2wT

7Au2lm5SEtz6r+/wwSfq5KfYH8q1AO/

/7/FnMag1IelSfdronPBDxazp6

NUmQZITsYK6CsEl/ewIDAQAB

-----END PUBLIC KEY-----


可以看出結果和4是一樣的;

執行:openssl rsa -pubin -in public.pem -RSAPublicKey_out


-----BEGIN RSA PUBLIC KEY-----

MIGJAoGBAOUubn4qizJtpx+nyHOOfV+XbBPsC7aWblIS3Pqv7/DBJ+rkp9gfyrUA

78L3YjASmmU1uupiY5dC7o/TuaDSVA4K8Tmx22YC8PZ7HfAJ5/yVaaB2HmpSjg4x

yahLPcgCn/=

-----END RSA PUBLIC KEY-----



openssl rsa -pubin -in public_pkcs8.pem -RSAPublicKey_out


-----BEGIN RSA PUBLIC KEY-----

MIGJAoGBAOUubn4qizJtpx+nyHOOfV+XbBPsC7aWblIS3Pqv7/DBJ+rkp9gfyrUA

78L3YjASmmU1uupiY5dC7o/TuaDSVA4K8Tmx22YC8PZ7HfAJ5/yVaaB2HmpSjg4x

yahLPcgCn/=

-----END RSA PUBLIC KEY-----


可以看出轉換的結果是一致的;

執行:openssl rsa -RSAPublicKey_in -in pub_pkcs1.pem -pubout


-----BEGIN PUBLIC KEY-----

+Kosybacfp8hzjn1fl2wT

7Au2lm5SEtz6r+/wwSfq5KfYH8q1AO/

/7/FnMag1IelSfdronPBDxazp6

NUmQZITsYK6CsEl/ewIDAQAB

-----END PUBLIC KEY-----


可以看到和上面4,5的結果是一致的;

最後一點:
iOS上用的是pkcs8格式的公鑰
openssl用的是pkcs1格式的公鑰
知道私鑰以後是可以導出公鑰的,所以私鑰一定要保證安全
知道公鑰不可以導出私鑰


解決方案針對是window電腦。

配置:SystemRoot/ System32 環境變數。

1、郵件我的電腦-選擇下【屬性】。

2、選擇高級系統設置

3、選擇【高級】-【環境變數】

4、雙擊打開path,進行編輯

5、 接著我們在這名字後面加【;System32】就可以了。

安裝 Win64 OpenSSL,地址: http://slproweb.com/procts/Win32OpenSSL.html

下載後根據提示一步一步安裝,安裝完成後:

雙擊start.bat 啟動

熱點內容
大數據緩存 發布:2024-11-25 14:29:07 瀏覽:435
存儲體與MAR 發布:2024-11-25 14:23:08 瀏覽:282
電腦瀏覽器怎麼取消配置文件 發布:2024-11-25 14:20:39 瀏覽:163
如何消除伺服器數據傳輸瓶頸 發布:2024-11-25 14:08:48 瀏覽:288
安卓開發程序如何上傳到手機上 發布:2024-11-25 14:08:30 瀏覽:28
訪客qq獲取系統源碼 發布:2024-11-25 14:08:30 瀏覽:17
網站如何上傳資料庫 發布:2024-11-25 14:08:29 瀏覽:794
怎麼操作讓安卓手機假裝黑屏 發布:2024-11-25 14:07:42 瀏覽:163
java內部類訪問許可權 發布:2024-11-25 14:05:59 瀏覽:342
安卓為什麼不分身 發布:2024-11-25 13:54:13 瀏覽:369