中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

spring?mvc?rest接口選擇性加密解密實例分析

發布時間:2022-07-26 17:48:25 來源:億速云 閱讀:199 作者:iii 欄目:開發技術

這篇文章主要介紹了spring mvc rest接口選擇性加密解密實例分析的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇spring mvc rest接口選擇性加密解密實例分析文章都會有所收獲,下面我們一起來看看吧。

    1.需求

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

    2.分析

    實現方式有兩種:

    • 1.Aspect + Annotation

    • 2.interceptor + requestParameter

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

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

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

    3.實現

    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

    spring?mvc?rest接口選擇性加密解密實例分析

    spring?mvc?rest接口選擇性加密解密實例分析

    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配置攔截器

    spring?mvc?rest接口選擇性加密解密實例分析

    3.2.3使用

    spring?mvc?rest接口選擇性加密解密實例分析

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

    4.加密

    4.1對稱加密

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

    4.2非對稱加密

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

    5.加密算法

    5.1MD5算法

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

    5.2SHA1算法

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

    5.3HMAC算法

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

    5.4AES/DES/3DES算法

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

    5.5DES算法

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

    5.63DES算法

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

    5.7AES算法

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

    5.8RSA算法

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

    5.9ECC算法

    ECC 也是一種 非對稱加密算法,主要優勢是在某些情況下,它比其他的方法使用 更小的密鑰,比如 RSA 加密算法,提供 相當的或更高等級 的安全級別。不過一個缺點是 加密和解密操作 的實現比其他機制 時間長 (相比 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接口選擇性加密解密實例分析”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    鹿邑县| 九龙坡区| 南通市| 陆良县| 台北县| 通渭县| 灵武市| 措美县| 进贤县| 台东市| 临武县| 时尚| 怀宁县| 罗江县| 阿克苏市| 都昌县| 城口县| 泾川县| 汉中市| 根河市| 寿阳县| 井冈山市| 儋州市| 宜君县| 沧源| 娄烦县| 香河县| 新巴尔虎左旗| 大英县| 全州县| 长乐市| 无棣县| 长兴县| 三原县| 利津县| 广平县| 左贡县| 蚌埠市| 留坝县| 安福县| 永川市|