最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring mvc rest 接口選擇性加密解密詳情

 更新時間:2022年07月26日 14:48:15   作者:qq5963a5404b339???????  
這篇文章主要介紹了spring mvc rest 接口選擇性加密解密詳情,spring mvc rest接口以前是采用https加密的,但是現(xiàn)在需要更加安全的加密。而且不是對所有的接口進行加密,是對部分接口進行加密,接口返回值進行解密

1.需求

spring mvc rest接口以前是采用https加密的,但是現(xiàn)在需要更加安全的加密。
而且不是對所有的接口進行加密,是對部分接口進行加密,接口返回值進行解密。

2.分析

實現(xiàn)方式有兩種:

  • 1.Aspect + Annotation
  • 2.interceptor + requestParameter

第一種方式是最靈活的:自定義注解,然后在Aspect中對注解的方法進行處理。

第二種方法也能實現(xiàn):自定義攔截器加請求參數(shù)與返回參數(shù),即參數(shù)中有一個參數(shù)控制是否加密解密。

第二種方式很明顯參數(shù)冗余,管理不變,使用麻煩。
第一種參數(shù)就很好了,擴展容易,使用容易,提倡使用。

3.實現(xiàn)

3.1注解方式

3.1.1定義注解

package com.annotation;

import java.lang.annotation.*;

@Target(ElementType.METHOD)
//使用在方法級別上
@Retention(RetentionPolicy.RUNTIME)
//運行時有效
@Documented
//生成文檔
public @interface Encryption {
}

3.1.2定義注解Aspect切面

package com.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Aspect
//Aspect注解
@Component
//spring bean的自動注解
//aop切面
public class EncryptionAspect {
/**
* 加密切點
*/
@Pointcut("@annotation(com.startimes.selfserviceApp.annotation.Encryption)")
public void encryptionPointcut(){
}

/**
* 前置通知--解密
* @param joinPoint
*/
@Before("encryptionPointcut()")
public void doBefore(JoinPoint joinPoint){
System.out.println("encryptionPointcut");
}

/**
* 后置通知--加密
* @param joinPoint
*/
@After("encryptionPointcut()")
public void doAfter(JoinPoint joinPoint){
System.out.println("encryptionPointcutAfter");
}
}

3.1.3使用

在方法前面加入注解:
@Encryption

3.2攔截器

3.2.1定義攔截器

package com.interceptor;

import org.springframework.ui.ModelMap;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.context.request.WebRequestInterceptor;
public class EncryptionInterceptor implements WebRequestInterceptor {
@Override
public void preHandle(WebRequest request) throws Exception {
//TODO:自定義代碼
System.out.println("preHandle");
}
@Override
public void postHandle(WebRequest request, ModelMap model) throws Exception {
//TODO:自定義代碼
System.out.println("postHandle");
}
@Override
public void afterCompletion(WebRequest request, Exception ex) throws Exception {
//TODO:自定義代碼
System.out.println("afterCompletion");
}
}

3.2.2配置攔截器

3.2.3使用

不使用參數(shù),如果使用參數(shù)就在攔截器里判斷參數(shù),然后進行相應的處理。

4.加密

4.1對稱加密

對于無需加密的接口采用數(shù)字簽名加密,即https
對于需要加密的接口采用將MD5(session)作為密鑰的對稱加密
缺點:需要服務器與客戶端有相同的session

4.2非對稱加密

對于無需加密的接口采用非對稱加密,即https+雙向認證+自定義證書
對于需要加密的接口采用非對稱加密。

5.加密算法

5.1MD5算法

MD5 用的是 哈希函數(shù),它的典型應用是對一段信息產(chǎn)生 信息摘要,以 防止被篡改。嚴格來說,MD5 不是一種 加密算法 而是 摘要算法。無論是多長的輸入,MD5 都會輸出長度為 128bits 的一個串 (通常用 16 進制 表示為 32 個字符)。

5.2SHA1算法

SHA1 是和 MD5 一樣流行的 消息摘要算法,然而 SHA1 比 MD5 的 安全性更強。對于長度小于 2 ^ 64 位的消息,SHA1 會產(chǎn)生一個 160 位的 消息摘要?;?MD5、SHA1 的信息摘要特性以及 不可逆 (一般而言),可以被應用在檢查 文件完整性 以及 數(shù)字簽名 等場景。

5.3HMAC算法

HMAC 是密鑰相關的 哈希運算消息認證碼(Hash-based Message Authentication Code),HMAC 運算利用 哈希算法 (MD5、SHA1 等),以 一個密鑰 和 一個消息 為輸入,生成一個 消息摘要 作為 輸出。
HMAC 發(fā)送方 和 接收方 都有的 key 進行計算,而沒有這把 key 的第三方,則是 無法計算 出正確的 散列值的,這樣就可以 防止數(shù)據(jù)被篡改。

5.4AES/DES/3DES算法

AES、DES、3DES 都是 對稱 的 塊加密算法,加解密 的過程是 可逆的。常用的有 AES128、AES192、AES256 (默認安裝的 JDK 尚不支持 AES256,需要安裝對應的 jce 補丁進行升級 jce1.7,jce1.8)。

5.5DES算法

DES 加密算法是一種 分組密碼,以 64 位為 分組對數(shù)據(jù) 加密,它的 密鑰長度 是 56 位,加密解密 用 同一算法。
DES 加密算法是對 密鑰 進行保密,而 公開算法,包括加密和解密算法。這樣,只有掌握了和發(fā)送方 相同密鑰 的人才能解讀由 DES加密算法加密的密文數(shù)據(jù)。因此,破譯 DES 加密算法實際上就是 搜索密鑰的編碼。對于 56 位長度的 密鑰 來說,如果用 窮舉法 來進行搜索的話,其運算次數(shù)為 2 ^ 56 次。

5.63DES算法

是基于 DES 的 對稱算法,對 一塊數(shù)據(jù) 用 三個不同的密鑰 進行 三次加密,強度更高。

5.7AES算法

AES 加密算法是密碼學中的 高級加密標準,該加密算法采用 對稱分組密碼體制,密鑰長度的最少支持為 128 位、 192 位、256 位,分組長度 128 位,算法應易于各種硬件和軟件實現(xiàn)。這種加密算法是美國聯(lián)邦政府采用的 區(qū)塊加密標準。
AES 本身就是為了取代 DES 的,AES 具有更好的 安全性、效率 和 靈活性。

5.8RSA算法

RSA 加密算法是目前最有影響力的 公鑰加密算法,并且被普遍認為是目前 最優(yōu)秀的公鑰方案 之一。RSA 是第一個能同時用于 加密 和 數(shù)字簽名 的算法,它能夠 抵抗 到目前為止已知的 所有密碼攻擊,已被 ISO 推薦為公鑰數(shù)據(jù)加密標準。
RSA 加密算法 基于一個十分簡單的數(shù)論事實:將兩個大 素數(shù) 相乘十分容易,但想要對其乘積進行 因式分解 卻極其困難,因此可以將 乘積 公開作為 加密密鑰。

5.9ECC算法

ECC 也是一種 非對稱加密算法,主要優(yōu)勢是在某些情況下,它比其他的方法使用 更小的密鑰,比如 RSA 加密算法,提供 相當?shù)幕蚋叩燃?的安全級別。不過一個缺點是 加密和解密操作 的實現(xiàn)比其他機制 時間長 (相比 RSA 算法,該算法對 CPU 消耗嚴重)。

6.加密算法比較

6.1散列算法

名稱

安全性

速度

SHA-1

MD5

6.2對稱加密算法

名稱

密鑰長度

運行速度

安全性

資源消耗

DES

56

較快

3DES

112、168

AES

128、192、256

6.3非對稱加密算法比較

名稱

成熟度

安全性

運算速度

資源消耗

RSA

ECC

到此這篇關于spring mvc rest 接口選擇性加密解密詳情的文章就介紹到這了,更多相關spring mvc rest 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 關于同一個service調(diào)用service本身的方法

    關于同一個service調(diào)用service本身的方法

    這篇文章主要介紹了關于同一個service調(diào)用service本身的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • mybatis.type-aliases-package的作用及用法說明

    mybatis.type-aliases-package的作用及用法說明

    這篇文章主要介紹了mybatis.type-aliases-package的作用及用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring中Properties的配置方式

    Spring中Properties的配置方式

    這篇文章主要介紹了Spring中Properties的配置方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Java在PowerPoint幻燈片中創(chuàng)建散點圖的方法

    Java在PowerPoint幻燈片中創(chuàng)建散點圖的方法

    散點圖是通過兩組數(shù)據(jù)構成多個坐標點,考察坐標點的分布,判斷兩變量之間是否存在某種關聯(lián)或總結坐標點的分布模式,這篇文章主要介紹了Java如何在PowerPoint幻燈片中創(chuàng)建散點圖,需要的朋友可以參考下
    2023-04-04
  • MyBatis-Plus中更新操作的兩種實現(xiàn)

    MyBatis-Plus中更新操作的兩種實現(xiàn)

    本文主要介紹了MyBatis-Plus中更新操作的兩種實現(xiàn),主要是通過id更新和條件更新,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • 解決本機安裝的JDK8,啟動IDEA2019沒反應的問題(開發(fā)工具)

    解決本機安裝的JDK8,啟動IDEA2019沒反應的問題(開發(fā)工具)

    這篇文章主要介紹了解決本機安裝的JDK8啟動IDEA2019沒反應的問題(開發(fā)工具),非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • Spring事務aftercommit原理及實踐

    Spring事務aftercommit原理及實踐

    這篇文章主要為大家介紹了Spring事務aftercommit原理及實踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • SpringCloud Gateway的熔斷限流配置實現(xiàn)方法

    SpringCloud Gateway的熔斷限流配置實現(xiàn)方法

    Spring Cloud Gateway支持通過配置熔斷和限流機制來保證服務的穩(wěn)定性和可用性,可通過Hystrix和Resilience4j兩種方式實現(xiàn)。Hystrix通過注解和配置文件實現(xiàn)熔斷限流,Resilience4j通過編程式配置實現(xiàn)
    2023-04-04
  • Mybatis使用@Select注解sql中使用in問題

    Mybatis使用@Select注解sql中使用in問題

    這篇文章主要介紹了Mybatis使用@Select注解sql中使用in問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Maven多模塊及version修改的實現(xiàn)方法

    Maven多模塊及version修改的實現(xiàn)方法

    這篇文章主要介紹了Maven多模塊及version修改的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06

最新評論

巫山县| 中牟县| 武川县| 从江县| 铁岭市| 海安县| 万荣县| 澎湖县| 张掖市| 桦南县| 时尚| 沾益县| 江口县| 盈江县| 禹城市| 宜春市| 清河县| 武威市| 连平县| 抚顺市| 靖远县| 陆丰市| 河北区| 梁山县| 吴忠市| 秦皇岛市| 辛集市| 辉县市| 柯坪县| 浑源县| 保康县| 南江县| 呼图壁县| 永丰县| 桃源县| 彰化市| 广灵县| 浦江县| 石门县| 西畴县| 深泽县|