JavaMD5和SHA256等常用加密算法
我們在做java項(xiàng)目開發(fā)的時(shí)候,在前后端接口分離模式下,接口信息需要加密處理,做簽名認(rèn)證,還有在用戶登錄信息密碼等也都需要數(shù)據(jù)加密。信息加密是現(xiàn)在幾乎所有項(xiàng)目都需要用到的技術(shù),身份認(rèn)證、單點(diǎn)登陸、信息通訊、支付交易等場景中經(jīng)常會(huì)需要用到加密算法,所謂加密算法,就是將原本的明文通過一系列算法操作變成密文。
BASE嚴(yán)格地說,屬于編碼格式,而非加密算法MD(MessageDigestalgorithm,信息摘要算法)SHA(SecureHashAlgorithm,安全散列算法)HMAC(HashMessageAuthenticationCode,散列消息鑒別碼)
加密算法中SHA1、SHA-224、SHA-256、SHA-384,和SHA-512,其中SHA-224、SHA-256、SHA-384,和SHA-512我們可以統(tǒng)稱為SHA2加密算法
SHA加密算法的安全性要比MD5更高,而SHA2加密算法比SHA1的要高。其中SHA后面的數(shù)字表示的是加密后的字符串長度,SHA1默認(rèn)會(huì)產(chǎn)生一個(gè)160位的信息摘要。
MD5MD5信息摘要算法(英語:MD5Message-DigestAlgorithm),一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個(gè)128位(16字節(jié))的散列值(hashvalue),用于確保信息傳輸完整一致。
MD5算法有以下特點(diǎn):
壓縮性:無論數(shù)據(jù)長度是多少,計(jì)算出來的MD5值長度相同
容易計(jì)算性:由原數(shù)據(jù)容易計(jì)算出MD5值
抗修改性:即便修改一個(gè)字節(jié),計(jì)算出來的MD5值也會(huì)巨大差異
抗碰撞性:知道數(shù)據(jù)和MD5值,很小概率找到相同MD5值相同的原數(shù)據(jù)
準(zhǔn)確來講,MD5不是一種加密算法,而是一種摘要算法,MD5能將明文輸出為128bits的字符串,這個(gè)字符串是無法再被轉(zhuǎn)換成明文的。網(wǎng)上一些MD5解密網(wǎng)站也只是保存了一些字符串對(duì)應(yīng)的md5串,通過已經(jīng)記錄的md5串來找出原文。
我做過的幾個(gè)項(xiàng)目中經(jīng)常見到MD5用在加密上的場景。比如對(duì)密碼的加密,生成一個(gè)密碼后,使用MD5生成一個(gè)128位字符串保存在數(shù)據(jù)庫中,用戶輸入密碼后也先生成MD5串,再去數(shù)據(jù)庫里比較。因此我們在找回密碼時(shí)是無法得到原來的密碼的,因?yàn)槊魑拿艽a根本不會(huì)被保存。
SHA系列安全散列算法(英語:SecureHashAlgorithm,縮寫為SHA)是一個(gè)密碼散列函數(shù)家族,是FIPS所認(rèn)證的安全散列算法。能計(jì)算出一個(gè)數(shù)字消息所對(duì)應(yīng)到的,長度固定的字符串(又稱消息摘要)的算法。且若輸入的消息不同,它們對(duì)應(yīng)到不同字符串的機(jī)率很高。
2005年8月17日的CRYPTO會(huì)議尾聲中王小云、姚期智、姚儲(chǔ)楓再度發(fā)表更有效率的SHA-1攻擊法,能在2的63次方個(gè)計(jì)算復(fù)雜度內(nèi)找到碰撞。
也就是說SHA-1加密算法有碰撞的可能性,雖然很小。
HMACHMAC是密鑰相關(guān)的哈希運(yùn)算消息認(rèn)證碼(Hash-basedMessageAuthenticationCode)的縮寫,由H.Krawezyk,M.Bellare,R.Canetti于1996年提出的一種基于Hash函數(shù)和密鑰進(jìn)行消息認(rèn)證的方法,并于1997年作為RFC2104被公布,并在IPSec和其他網(wǎng)絡(luò)協(xié)議(如SSL)中得以廣泛應(yīng)用,現(xiàn)在已經(jīng)成為事實(shí)上的Internet安全標(biāo)準(zhǔn)。它可以與任何迭代散列函數(shù)捆綁使用。
HMAC算法更像是一種加密算法,它引入了密鑰,其安全性已經(jīng)不完全依賴于所使用的Hash算法
如果要使用加密,推薦使用SHA256、SHA384、SHA512以及HMAC-SHA256、HMAC-SHA384、HMAC-SHA512這幾種算法。
對(duì)稱加密算法對(duì)稱加密算法是應(yīng)用比較早的算法,在數(shù)據(jù)加密和解密的時(shí)用的都是同一個(gè)密鑰,這就造成了密鑰管理困難的問題。常見的對(duì)稱加密算法有DES、3DES、AES128、AES192、AES256(默認(rèn)安裝的JDK尚不支持AES256,需要安裝對(duì)應(yīng)的jce補(bǔ)丁進(jìn)行升級(jí)jce1.7,jce1.8)。其中AES后面的數(shù)字代表的是密鑰長度。對(duì)稱加密算法的安全性相對(duì)較低,比較適用的場景就是內(nèi)網(wǎng)環(huán)境中的加解密。
所謂對(duì)稱加密,就是通過密鑰加密后可以再通過密鑰解密。我接觸過的某個(gè)國企現(xiàn)在內(nèi)部就是采用AES的方式實(shí)現(xiàn)集成登陸。第三方系統(tǒng)提供一個(gè)接收用戶信息的接口,該國企將用戶信息AES加密后通過這個(gè)接口傳遞給第三方系統(tǒng),第三方系統(tǒng)自行實(shí)現(xiàn)登陸操作。這里需要注意的是密鑰十分重要,如果密鑰丟失,就有信息泄漏的風(fēng)險(xiǎn)。
加密鹽加密鹽也是比較常聽到的一個(gè)概念,鹽就是一個(gè)隨機(jī)字符串用來和我們的加密串拼接后進(jìn)行加密。
加鹽主要是為了提供加密字符串的安全性。假如有一個(gè)加鹽后的加密串,黑客通過一定手段這個(gè)加密串,他拿到的明文,并不是我們加密前的字符串,而是加密前的字符串和鹽組合的字符串,這樣相對(duì)來說又增加了字符串的安全性。
在線加密網(wǎng)站站長工具
在線加密
總結(jié)比較推薦的幾個(gè)加密算法有:
不可逆加密:SHA256、SHA384、SHA512以及HMAC-SHA256、HMAC-SHA384、HMAC-SHA512
對(duì)稱加密算法:AES、3DES
非對(duì)稱加密算法:RSA
參考常用的加密算法
淺析五種最常用的Java加密算法
https://juejin.cn/post/6844903638117122056#heading-3
MD5、sha1、sha256分別輸出多少位?
MD5 SHA1 SHA256 這3種本質(zhì)都是摘要函數(shù),它們的長度 MD5 是 128 位,SHA1 是 160 位 ,SHA256 是 256 位。MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個(gè)32位子分組,經(jīng)過了一系列的處理后,算法的輸出由四個(gè)32位分組組成,將這四個(gè)32位分組級(jí)聯(lián)后將生成一個(gè)128位散列值...
MD5 SHA1 SHA256 等哈希(hash)校驗(yàn)碼簡介及文件哈希值獲取工具介紹_百 ...
當(dāng)我們下載軟件時(shí),官方通常會(huì)在下載鏈接旁附上 MD5、SHA1、SHA256 等哈希校驗(yàn)碼,這些代碼的作用在于確保下載的軟件原版無篡改。哈希,即散列,是通過特定算法對(duì)文件內(nèi)容計(jì)算生成固定長度字符串的過程,其結(jié)果通常為32或64位的十六進(jìn)制。哈希算法是單向的,不能從密文反推明文,這使得任何微小的數(shù)據(jù)變化都...
pgp簽名和md5,sha1,sha256等校驗(yàn)算法比有什么優(yōu)勢?
相比之下,MD5、SHA1、SHA256等哈希算法專注于數(shù)據(jù)完整性保護(hù)。它們在數(shù)據(jù)傳輸過程中確保數(shù)據(jù)不被篡改,但不提供加密功能。MD5是一種較早的哈希算法,但已被發(fā)現(xiàn)存在安全漏洞,不建議用于關(guān)鍵應(yīng)用。SHA1提供更安全的哈希值,但同樣存在被攻破的風(fēng)險(xiǎn)。SHA256是更安全的哈希算法,具有更高的抗碰撞能力,...
十大常見密碼加密方式
其實(shí)之前公司也是采用的這種MD5加密方式。4. PBKDF2算法 該算法原理大致相當(dāng)于在HASH算法基礎(chǔ)上增加隨機(jī)鹽,并進(jìn)行多次HASH運(yùn)算,隨機(jī)鹽使得彩虹表的建表難度大幅增加,而多次HASH也使得建表和破解的難度都大幅增加。在使用PBKDF2算法時(shí),HASH一般會(huì)選用sha1或者sha256,隨機(jī)鹽的長度一般不能少于8字節(jié),HASH...
在Linux\/Ubuntu\/Debian中計(jì)算MD5,SHA256的方法
在Linux\/Ubuntu\/Debian系統(tǒng)中,MD5和SHA-256是常用的哈希算法,它們用于生成數(shù)據(jù)的固定大小摘要。MD5曾被廣泛應(yīng)用,但因安全漏洞不再推薦用于敏感場景。相比之下,SHA-256因其更強(qiáng)的安全性,常用于加密任務(wù)。當(dāng)你需要計(jì)算這些哈希值時(shí),應(yīng)基于實(shí)際需求選擇,參考當(dāng)前安全實(shí)踐。以下是具體計(jì)算方法的概述:1....
MD5,sha1,sha256分別輸出多少位啊?
MD5輸出128位、SHA1輸出160位、SHA256輸出256位。1、MD5消息摘要算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個(gè)128位(16字節(jié))的散列值(hash value),用于確保信息傳輸完整一致。2、SHA1安全哈希算法(Secure Hash Algorithm)主要適用于數(shù)字簽名標(biāo)準(zhǔn) 里面...
SHA256算法描述
正如大家所知,MD5,SHA1,SHA2等是常用的Hash算法,該文章描述SHA256算法的概念性知識(shí)、原理和實(shí)現(xiàn)上一些比較重要的細(xì)節(jié):SHA (Secure Hash Algorithms)1 SHA1 vs SHA2 關(guān)于SHA1和SHA2的對(duì)比介紹,從其他網(wǎng)站搬過來的資料:有幾點(diǎn)需要提出來講一下:2 SHA256計(jì)算原理 SHA的算法都比較接近,最大的...
...種常見的數(shù)據(jù)摘要算法(MD5、CRC32、SHA1和SHA256)
MD2、MD4與MD5同屬于一個(gè)算法系列,由Ron Rivest于1992年提出,用于數(shù)據(jù)完整性校驗(yàn)與加密。MD5以其128位的摘要值和廣泛應(yīng)用而知名。互聯(lián)網(wǎng)中大文件傳輸廣泛采用MD5生成匹配的文本文件(md5值),確保傳輸?shù)奈募暾浴9ぞ哂蠾inMD5支持此功能。SHA家族(SHA、SHA256、SHA384、SHA512)由美國國家標(biāo)準(zhǔn)技術(shù)...
md5、 sha1、 sha256分別是什么意思?
MD5輸出128bit、SHA1輸出160bit、SHA256輸出256bit MD5釋義:即Message-Digest Algorithm 5(信息-摘要算法5),用于確保信息傳輸完整一致。是計(jì)算機(jī)廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言普遍已有MD5實(shí)現(xiàn)。將數(shù)據(jù)(如漢字)運(yùn)算為另一固定長度值,是雜湊算法的基礎(chǔ)原理,MD5的前身...
區(qū)塊鏈技術(shù)有哪些?區(qū)塊鏈核心技術(shù)介紹
常使用的哈希算法包括MD5、SHA-1、SHA-256、SHA-384及SHA-512等。以SHA256算法為例,將任何一串?dāng)?shù)據(jù)輸入到SHA256將得到一個(gè)256位的Hash值(散列值)。其特點(diǎn):相同的數(shù)據(jù)輸入將得到相同的結(jié)果。輸入數(shù)據(jù)只要稍有變化(比如一個(gè)1變成了0)則將得到一個(gè)完全不同的結(jié)果,且結(jié)果無法事先預(yù)知。正向計(jì)算(由數(shù)據(jù)計(jì)算其對(duì)應(yīng)...
相關(guān)評(píng)說:
東寶區(qū)往復(fù): ______ SHA-256算法
東寶區(qū)往復(fù): ______ c#自帶的類庫實(shí)現(xiàn)sha265會(huì)返回一個(gè)byte[] 數(shù)組 這個(gè)數(shù)組的長度是32,js的sha265是64,是把每個(gè)byte直接轉(zhuǎn)換成了2個(gè)hex字符串. c#中加密后是44位是因?yàn)榘堰@個(gè)數(shù)組用base64編碼成了字符串.
東寶區(qū)往復(fù): ______ 答案是DPGP使用的散列函數(shù)包括:SHA-2(256bit)、SHA-2(384bit)、SHA-2(512bit)、SHA-1(160bit)、RIPEMD(128bit)、MD-5(128bit)等
東寶區(qū)往復(fù): ______ 本類最近更新軟件 · · · · · · · Program Lock Pro V2.17更新時(shí)間:2005-10-12 16:38:00 授權(quán)方式:共享版 ProgramLock可以鎖定任意指定程序,沒有正確密碼將無法運(yùn)行....· 反盜版衛(wèi)士 V2.7 普及版更新時(shí)間:2005-10-10 9:14:00 ...
東寶區(qū)往復(fù): ______ 考慮一下中文字符問題.兩邊使用的編碼是不是一樣的.保持一樣就可以了.建議使用UTF8編碼 JAVA代碼如下(在你給同的代碼上只做了少量修改):public class Security { public static void main(String[] args) { try { System.out.println(MD5("中國...
東寶區(qū)往復(fù): ______ 為了考慮瀏覽器兼容性,通常使用以下算法:加密算法:RSA 哈希簽名算法:SHA256 加密位數(shù):2048 最近ECC算法也比較普遍,主要有點(diǎn)是讀取速度快了,但相反瀏覽器支持率降低了,首先IE7、IE6是肯定不支持的,甚至IE8也不支持.
東寶區(qū)往復(fù): ______ nt main(void) 4{ 5 unsigned char array[4] = {"0x0","0x0","0x02","0xe7"}; 6 unsigned long num; 7 num...
東寶區(qū)往復(fù): ______ 有沒有可能是編碼方式不同,Java 3des加密和.net 的結(jié)果也不相同,改了編碼方式就相同了
東寶區(qū)往復(fù): ______ 我的電腦點(diǎn)右鍵,選擇“屬性”,選擇“高級(jí)”標(biāo)簽,進(jìn)入環(huán)境變量設(shè)置,分別設(shè)置如下三個(gè)環(huán)境變量:設(shè)置JAVA_HOME:一是為了方便引用,比如,JDK安裝在C:\jdk1.6.0目錄里,則設(shè)置JAVA_HOME為該目錄路徑, 那么以后要使用這個(gè)路...
東寶區(qū)往復(fù): ______ 系統(tǒng)完整校驗(yàn)工具fsum與文件校驗(yàn)工具h(yuǎn)ashcalc2007-11-07 20:10SlavaSoft出品,小巧強(qiáng)大,向作者致敬.“支持 md2,md4,md5,sha1,sha256,sha384,sha512,rmd,tiger,panama,adler,crc32,edonkey 共13種方式的校驗(yàn)其校驗(yàn)速度也是相當(dāng)~~~~地...