加密

来源:https://www.cnblogs.com/shenxm/archive/2018/02/14/8448611.html
-Advertisement-
Play Games

對稱加密 非對稱加密 單向加密 ...


對稱加密

    1.對稱加密:
        加密和解密使用同一個密鑰,其安全性依賴於密鑰而非演算法。

    2.對稱加密的演算法:
        DES(Data Encryption Standard):數據加密標準,速度較快,適用於加密大量數據的場合,是56bits加密。
        3DES(Triple DES):是基於DES,對一塊數據用三個不同的密鑰進行的三次加密,強度較高。
        AES(Advanced Encrpytion Standard):高級加密標準,是下一代的加密演算法標準,速度快,安全級別高,含有128、192、256bits加密。
        IDEA:這種演算法是在DES演算法的基礎上發展出來的,類似於三重DES,IDEA的密鑰為128位。
        Blowfish 、Twofish、RC6 、CAST5….等

    3.對稱(傳統)加密演算法的優缺點:
        優點:
            演算法公開、計算量小、加密速度快、加密效率高。
        缺點:
            1.交易雙方都用同樣的密鑰,安全性得不到保證。
            2.每對用戶每次使用對稱加密演算法時,都需要使用其他人不知道的唯一密鑰,這會使得發收雙方所擁有的密鑰數量幾何級增長,密鑰管理成為用戶的負擔。對稱加密演算法在分散式網路系統上使用較為困難,主要因為密鑰管理困難,使用成本高。3.數據來源無法確認。
    4.實現對稱加密的工具:
        gpg(有些麻煩)
        openssl enc (常用)

非對稱加密

    1。非對稱加密:
        加密和解密用不同個的密鑰,其安全性依賴於演算法與密鑰。非對稱加密另一個稱呼為公鑰加密。
    
    2。非對稱加密的特點:
        有兩個密鑰,公鑰(publicky)和私鑰(privatekey),一個公鑰有且只有一個與之對應的私鑰。
        加密密鑰和解密密鑰是成對出現的,公鑰公開,私鑰自己留存。
        公鑰是從私鑰中提取而來,用公鑰加密數據,只能使用與之配對的私鑰解密;反之亦然。
        某個用戶用其私鑰解密數據,其他用戶有其公約解密,從而實現了數字簽名的作用。
        公約加密的另一個作用是實現密鑰交換。
        公鑰的密鑰長,加密和解密速度慢。
        
    3。註意:
        1.非對稱加密的演算法運行速度相對慢,所以當需要加密大量數據時,建議採用速度快的對稱加密演算法,提高加解密速度。
        2.實際操作中是配合對稱和非對稱加密的,採用非對稱加密演算法管理對稱加密演算法的密鑰,然後用對稱加密演算法的密鑰來加密和解密數據。

    4。非對稱加密的演算法:
        RSA:由RSA公司發明,是一個支持變長密鑰的公共密鑰演算法,需要加密的文件塊的長度也是可變的。
        DSA(Digital Signature Algoorithm):數字簽名演算法,是一種標準的DSS(數字簽名標準)。
        ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學。
        
    5。實現:
        實現加密:
            接收者:
                生成公鑰/密鑰對:P和S
                公開公鑰P ,保密密鑰S
            發送者:
                使用接收者的公鑰來加密消息M
                將P(M)發送給接收者
            接收者:
                使用密鑰S來解密:M=S(P(M))
        實現數字簽名:
            發送者:
                生成公鑰/密鑰對:P和S
                公開公鑰P,保密密鑰S
                使用密鑰S來加密消息M
                發送給接收者S(M)
            接收者:
                使用發送者的公鑰來解密M=P(S(M))
        結合簽名和加密:
            a用密鑰S來加密消息M1發給b來確認身份,
            b確認身份後,用a公開的密鑰P來加密消息M2發送給a,
            a用密鑰S解密M2。

    6。非對稱加密的工具
        openssl rsautl,openssl genrsa,openssl rsa
        gpg(很少用)

單向加密

    1。單向加密:
        單向加密,不能解密,因為解密過程是一個二次加密的過程,主要是提取數據的特征碼。
        單向加密演算法又稱摘要演算法或散列演算法,也稱散列或散列值。
        散列就是通過把一個叫做散列演算法的單向數學函數應用於數據,將任意長度的一塊數據轉換位一個定長的、不可逆轉的數字,其長度在128-256位之間。
        由於散列值足夠長,因此找到兩塊相同散列值的數據的機會很小。
        
    2。單向加密的特性:
        只要源文本不同,計算得到的結果必然不同,或者說相同的機會很少。
        無法從結果反退出源數據。
        任何輸入信息的變化,哪怕僅僅一位,都將導致結果的明顯變化,也就是說具有雪崩效應。
        定長輸出且不可逆。
        
    3。單向加密的作用:
        確保數據的完整性
        
    4。單向加密的演算法有:
        MD5(Message Digest Algorithm 5)(信息-摘要演算法):是一種單向散列演算法,可以用來把不同長度的數據塊進行暗碼運算成一個固定位的數值(通常為128位);其作用是讓大容量信息在用數字簽名軟體簽署私人密鑰前被“壓縮”成一種保密的格式。
        SHA(Secure Hash Algorithm):安全散列演算法,該演算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段通常更小的密文,也可以簡單的理解為取一段輸入碼(稱為預映射或信息),並把它們轉換為長度較短、位數固定的輸出序列即散列值(也稱為信息摘要或信息認證代碼)的過程。
        MAC(Message Authentication Code):消息認證代碼,是一種使用密鑰的單向函數,可以用它們在系統上或用戶之間認證文件或消息,常見的是HMAC(用於消息認證的密鑰散列演算法)。MAC是單向加密的一種延伸應用,用於實現網路通信中保證所傳輸數據的完整性機制。
        CRC(Cyclic Redundancy Check):迴圈冗餘校驗碼,CRC校驗由於實現簡單,檢錯能力強,被廣泛使用在各種數據校驗應用中,占用系統資源少,用軟硬體都可實現,是進行數據傳輸差錯檢測地一種很好的手段。

    5。單向加密工具:
        md5sum
        sha1sum,shaNsum...
        openssl dgst

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 之前在想如何降低API的延遲,這些API里有幾個比較耗時的操作且是串列執行,那通過非同步執行的方式理論上可以降低運行的時間,如下圖所示: 具體的實現比較簡單,例如這樣: 用java8引入的 即可。 這裡不再贅述。 主要講一下這樣實踐遇到的坑和一些自己的理解。 性能測試 優化後的代碼需要和未修改(基準) ...
  • 上面的代碼不管是在傳統的ASP.NET還是新一代ASP.NET Core中都是為了驗證模型的狀態是否合法,如果IsValid屬性的值為True,則驗證成功。這樣的代碼一般我們會寫在Action方法中的最開始處,如果在每個Action中都寫這樣的判斷就會增加我們的工作量和以及存在重覆性,在這篇文章中將 ...
  • 這裡的unity指的是完成依賴註入的unity而不是游戲引擎。 原本項目完成依賴註入用的是spring.net,但是spring.net已經很久沒人維護了,所以微軟官方推出的Unity成為了替代spring.net的最佳候選之一。 簡單控制台demo: 首先新建控制台應用,nuget搜索unity並 ...
  • Citus是基於PsotgreSQL的擴展,用於切分PsotgreSQL的數據,非常簡單地實現數據“切片(sharp)”。如果不使用Citus,則需要開發者自己實現分散式數據訪問層(DDAL),實現路由和結果彙總等邏輯,藉助Citus可簡化開發,是開發者把精力集中在具體的業務邏輯上。 對於多租戶程式 ...
  • 本文基於上次嘗試之後的進一步嘗試,加入Docker容器、編寫Dockerfile,並且jexus結合Docker的使用,總結下自己的個人感想。 一、環境介紹 當前的場景有兩種方式將Demo實現運行,一種是我將Asp.Net Core項目通過自偵聽方式啟動,然後外網正常訪問,第二種通過功能強大的jex ...
  • Sql2012資料庫還原(通過.bak資料庫備份文件) 昨天系統掛了,那叫一個悲慘,重裝了系統,但是sql2012的數據沒有備份,同事幫忙發來備份文件(.bak),開始還原數據。 步驟:1 自己新建一個資料庫,這個資料庫就是最終還原的資料庫。(圖1) 圖一 2 右擊“shu ju huan yuan ...
  • 將游標移動到要匹配的單詞處: ~~~~ "g + d" :高亮顯示所有相同的單詞 shift + " " :向下查找相同單詞並高亮顯示 shift + " " :向上查找相同單詞並高亮顯示 命令行模式下輸出:“noh” 命令取消高亮顯示 ~~~~ ...
  • gpg openssl ssh scp rsync sftp Pssh、pslurp、pscp.pssh工具 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...