首先要明白的是數字證書簽名跟常說的加密演算法是兩回事。關於數字證書,概念請參照其他部落格。
概念介紹部落格:
(1)md5
md5
用的是雜湊函式,它的典型應用是對一段資訊產生資訊摘要,以防止被篡改。嚴格來說,md5
不是一種加密演算法而是摘要演算法。無論是多長的輸入,md5
都會輸出長度為128bits
的乙個串 (通常用16
進製表示為32
位 128/4=32, 4位二進位制數用16進製表示為1位)。
md5加鹽:為了防止黑客通過彩虹表根據雜湊值反推原始口令,在計算雜湊的時候,不能僅針對原始輸入計算,需要增加乙個salt來使得相同的輸入也能得到不同的雜湊,這樣,大大增加了黑客破解的難度。
如果salt是我們自己隨機生成的,通常我們計算md5時採用md5(message + salt)
。但實際上,把salt看做乙個「口令」,加salt的雜湊就是:計算一段message的雜湊時,根據不同口令計算出不同的雜湊。要驗證雜湊值,必須同時提供正確的口令。
(2) sha-1
sha1 是和 md5 一樣流行的 訊息摘要演算法,然而 sha1 比 md5 的 安全性更強。對於長度小於 2 ^ 64 位的訊息,sha1 會產生乙個 160 位的 訊息摘要。基於 md5、sha1 的資訊摘要特性以及 不可逆 (一般而言),可以被應用在檢查 檔案完整性 以及 數字簽名 等場景。
(3) hmac
(4)sm3
sm3 訊息摘要。可以用md5作為對比理解。該演算法已公開。校驗結果為256位。
2.加密演算法
(1)對稱加密
我想把一些答案總結成一篇文章。 首先,不要將md5雜湊視為字串,而是將其視為十六進製制數。因此,每個數字都是十六進製制數字(0-15或0-f),表示四位,而不是八位。 進一步地,乙個位元組或八個位元由兩個十六進製制數字表示,例如, b'1111 1111
'=0xff
=255
。 md5雜湊長度為128位,通常由32個十六進製制數字表示。 sha-1雜湊長度為160位,通常用40個十六進製制數字表示。 對於sha-2系列,我認為雜湊長度可以是預先確定的集合之一。因此sha-512可以用128個十六進製制數字表示。 同樣,這篇文章僅基於之前的答案。
常用加密演算法概述
題外話 最近某人在參加ctf比賽,為了尋找共同話題,並督促很久沒動過腦的我學習,也給我講解了幾道題。經過考慮,加密方面的題和我的專業相符些,所以決定先攻破這方面的一些習題,權作打發時間了。在此總結一些作題過程中涉及的演算法,加深記憶。1.base64 概述 把明文對應成64個字元的加密演算法。方法 ...
加密演算法概述
在程式設計中我覺的最重要的有三個部分程式語言,演算法和資料結構。如果失掉了演算法和資料結構那但留下程式語言也就沒有存在的必要了。因為前幾天工作中前端人員寫好了加密演算法,我在後端進行解析,同時把返回前端的資料也進行加密。我根據這種情況來介紹一下。本篇文章主要講一下加密的一些概念。在密碼學中有幾個重要...
加密演算法簡單概述
基本過程就是對原來為明文的檔案或資料按某種演算法進行處理,使其成為不可讀的一段 通常稱為 密 文 使其只能在輸入相應的金鑰之後才能顯示出本來內容,通過這樣的途徑來達到保護資料不被非法人竊取 閱讀 的目的。該過程的逆過程為解密,即將該編碼資訊轉化為其原來資料的過程。功能 對稱 symmetric 演算...