導航:首頁 > 文檔加密 > md5是常見數據加密演算法

md5是常見數據加密演算法

發布時間:2023-09-15 09:10:25

A. 用於文件加密演算法有哪些,以及它們的原理

MD5全稱"message-digest algorithm 5"(信息-摘要演算法)。

90年代初由MIT計算機科學實驗室和RSA Data Security Inc聯合開發。

MD5演算法採用128位加密方式,即使一台計算機每秒可嘗試10億條明文,要跑出原始明文也要1022年。在802.1X認證中,一直使用此演算法。

加密演算法之二---ELGamal

ELGamal演算法是一種較為常見的加密演算法,他基於1984年提出的公鑰密碼體制和橢圓曲線加密體系。即能用於數據加密,又能用於數字簽名,起安全性依賴於計算有限領域上離散對數這一數學難題。

著名的DSS和Schnorr和美國國家標准X9.30-199X中ELGamal為唯一認可加密方式。並且橢圓曲線密碼加密體系增強了ELGamal演算法的安全性。

ELGamal在加密過程中,生成的密文長度是明文的兩倍。且每次加密後都會在密文中生成一個隨即數K。

加密演算法之三---BlowFish

BlowFish演算法由著名的密碼學專家部魯斯·施耐爾所開發,是一個基於64位分組及可變密鑰長度[32-448位]的分組密碼演算法。

BlowFish演算法的核心加密函數名為BF_En,為一種對稱演算法,加密強度不夠。

加密演算法之四---SHA

SHA(即Secure Hash Algorithm,安全散列演算法)是一種常用的數據加密演算法,由美國國家標准與技術局於1993年做為聯邦信息處理標准公布,先版本SHA-1,SHA-2。

SHA演算法與MD5類似,同樣按2bit數據塊為單位來處理輸入,但它能產生160bit的信息摘要,具有比MD5更強的安全性。

SHA收到一段明文,然後以不可逆方式將它轉為一段密文,該演算法被廣泛運用於數字簽名及電子商務交易的身份認證中。(

B. 加密方式有幾種

加密方式的種類:

1、MD5

一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組)的散列值(hash value),用於確保信息傳輸完整一致。MD5由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,於1992年公開,用以取代MD4演算法。這套演算法的程序在 RFC 1321 標准中被加以規范。

2、對稱加密

對稱加密採用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。

3、非對稱加密

與對稱加密演算法不同,非對稱加密演算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密。

如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種演算法叫作非對稱加密演算法。

(2)md5是常見數據加密演算法擴展閱讀

非對稱加密工作過程

1、乙方生成一對密鑰(公鑰和私鑰)並將公鑰向其它方公開。

2、得到該公鑰的甲方使用該密鑰對機密信息進行加密後再發送給乙方。

3、乙方再用自己保存的另一把專用密鑰(私鑰)對加密後的信息進行解密。乙方只能用其專用密鑰(私鑰)解密由對應的公鑰加密後的信息。

在傳輸過程中,即使攻擊者截獲了傳輸的密文,並得到了乙的公鑰,也無法破解密文,因為只有乙的私鑰才能解密密文。

同樣,如果乙要回復加密信息給甲,那麼需要甲先公布甲的公鑰給乙用於加密,甲自己保存甲的私鑰用於解密。

C. 介紹iOS中MD5加密演算法的使用

前言

軟體開發過程中,對數據進行加密是保證數據安全的重要手段,常見的加密有Base64加密和MD5加密。Base64加密是可逆的,MD5加密目前來說一般是不可逆的。

MD5生成的是固定的128bit,即128個0和1的二進制位,而在實際應用開發中,通常是以16進制輸出的,所以正好就是32位的16進制,說白了也就是32個16進制的數字。

MD5主要特點是 不可逆,相同數據的MD5值肯定一樣,不同數據的MD5值不一樣(也不是絕對的,但基本是不能一樣的)。

MD5演算法還具有以下性質:

1、壓縮性:任意長度的數據,算出的MD5值長度都是固定的。

2、容易計算:從原數據計算出MD5值很容易。

3、抗修改性:對原數據進行任何改動,哪怕只修改1個位元組,所得到的MD5值都有很大區別。

4、弱抗碰撞:已知含氏原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。

5、強抗碰撞:想緩顫找到兩個不同的數據,使它們具有相同的MD5值,是非常困難的。

6、MD5加密是不可解密的,但是網上有一些解析MD5的,那個相當於一個大型的資料庫,通過匹配MD5去找到原密碼。所以,只要在要加密的字元串前面加上一些字母數字元號或者多次MD5加密,這樣出來的結果一般是解析不出來的。

MD5的應用:

由於MD5加密演算法具有較好的安全性,而且免費,因此該加密演算法被廣泛使用

大多數的'登錄功能向後台提交密碼時都會使用到這種演算法

注意點:

(1)一定要和後台開發人員約定好,MD5加密的位數是16位還是32位(大多數都是32位的),16位的可以通過32位的轉換得到。

(2)MD5加密區分 大小寫,使用時要和後台約定好。

MD5解密:

解密網站:http://www.cmd5.com/

為了讓MD5碼更加安全 涌現了很多其他方法 如加鹽。 鹽要足夠長足夠亂 得到的MD5碼就很難查到。

終端代碼:$ echo -n abc|openssl md5 給字元串abc加密、

蘋果包裝了MD5加密的擾老敗方法,使用起來十分的方便。

#import@interface MD5Encrypt : NSObject// MD5加密/**由於MD5加密是不可逆的,多用來進行驗證*/// 32位小寫+(NSString *)MD5ForLower32Bate:(NSString *)str;// 32位大寫+(NSString *)MD5ForUpper32Bate:(NSString *)str;// 16為大寫+(NSString *)MD5ForUpper16Bate:(NSString *)str;// 16位小寫+(NSString *)MD5ForLower16Bate:(NSString *)str;@end

#import "MD5Encrypt.h"#import@implementation MD5Encrypt#pragma mark - 32位 小寫+(NSString *)MD5ForLower32Bate:(NSString *)str{ //要進行UTF8的轉碼 const char* input = [str UTF8String]; unsigned char result[CC_MD5_DIGEST_LENGTH]; CC_MD5(input, (CC_LONG)strlen(input), result); NSMutableString *digest = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; for (NSInteger i = 0; i < CC_MD5_DIGEST_LENGTH; i++) { [digest appendFormat:@"%02x", result[i]]; } return digest;}#pragma mark - 32位 大寫+(NSString *)MD5ForUpper32Bate:(NSString *)str{ //要進行UTF8的轉碼 const char* input = [str UTF8String]; unsigned char result[CC_MD5_DIGEST_LENGTH]; CC_MD5(input, (CC_LONG)strlen(input), result); NSMutableString *digest = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; for (NSInteger i = 0; i < CC_MD5_DIGEST_LENGTH; i++) { [digest appendFormat:@"%02X", result[i]]; } return digest;}#pragma mark - 16位 大寫+(NSString *)MD5ForUpper16Bate:(NSString *)str{ NSString *md5Str = [self MD5ForUpper32Bate:str]; NSString *string; for (int i=0; i<24; i++) { string=[md5Str substringWithRange:NSMakeRange(8, 16)]; } return string;}#pragma mark - 16位 小寫+(NSString *)MD5ForLower16Bate:(NSString *)str{ NSString *md5Str = [self MD5ForLower32Bate:str]; NSString *string; for (int i=0; i<24; i++) { string=[md5Str substringWithRange:NSMakeRange(8, 16)]; } return string;}@end

D. android 常見的數據加密方式有哪些 是否可逆 用什麼加密數據

一、MD5加密演算法。 MD5是個不可逆的演算法 沒有解密的演算法。
二、DES加密。可逆。
三、RSA加密。可逆。

E. md5是什麼

MD5信息摘要演算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組)的散列值(hash value),用於確保信息傳輸完整一致。

MD5由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,於1992年公開,用以取代MD4演算法。這套演算法的程序在 RFC 1321 標准中被加以規范。

1996年後該演算法被證實存在弱點,可以被加以破解,對於需要高度安全性的數據,專家一般建議改用其他演算法,如SHA-2。2004年,證實MD5演算法無法防止碰撞(collision),因此不適用於安全性認證,如SSL公開密鑰認證或是數字簽名等用途。

用於密碼管理

當我們需要保存某些密碼信息以用於身份確認時,如果直接將密碼信息以明碼方式保存在資料庫中,不使用任何保密措施,系統管理員就很容易能得到原來的密碼信息,這些信息一旦泄露, 密碼也很容易被破譯。

為了增加安全性,有必要對資料庫中需要保密的信息進行加密,這樣,即使有人得到了整個資料庫,如果沒有解密演算法,也不能得到原來的密碼信息。MD5演算法可以很好地解決這個問題,因為它可以將任意長度的輸入串經過計算得到固定長度的輸出,而且只有在明文相同的情況下。

才能等到相同的密文,並且這個演算法是不可逆的,即便得到了加密以後的密文,也不可能通過解密演算法反算出明文。

F. md 5是常用的數據加密演算法對不對

不對,這只是一種信息摘要演算法,就是從一段數據(不管其大小)中通過計算提取出摘要信息組成一個128位(16位元組)的散列值,也就是說不管數據有多少,產生的都是一個固定長度的字串,所以不可能用於數據加密,主要用於驗證數據傳輸的正確性(比如數據從A地傳輸前先計算其MD5值,傳輸到B地後再計算MD5值,兩個值相同即表示傳輸是完全准確的),也可以用作密碼數據的加密儲存(但這里所謂的「加密」與通常理解的數據「加密」不是同一概念)。通俗來講,MD5更像是指紋,通過在不同場合提取指紋進行比對,就可以知道兩個人是否為同一個人。

G. MD5演算法。

介紹MD5加密演算法基本情況MD5的全稱是Message-Digest Algorithm 5,在90年代初由MIT的計算機科學實驗室和RSA Data Security Inc發明,經MD2、MD3和MD4發展而來。
Message-Digest泛指位元組串(Message)的Hash變換,就是把一個任意長度的位元組串變換成一定長的大整數。請注意我使用了"位元組串"而不是"字元串"這個詞,是因為這種變換只與位元組的值有關,與字元集或編碼方式無關。

MD5將任意長度的"位元組串"變換成一個128bit的大整數,並且它是一個不可逆的字元串變換演算法,換句話說就是,即使你看到源程序和演算法描述,也無法將一個MD5的值變換回原始的字元串,從數學原理上說,是因為原始的字元串有無窮多個,這有點象不存在反函數的數學函數。

MD5的典型應用是對一段Message(位元組串)產生fingerprint(指紋),以防止被"篡改"。舉個例子,你將一段話寫在一個叫readme.txt文件中,並對這個readme.txt產生一個MD5的值並記錄在案,然後你可以傳播這個文件給別人,別人如果修改了文件中的任何內容,你對這個文件重新計算MD5時就會發現。如果再有一個第三方的認證機構,用MD5還可以防止文件作者的"抵賴",這就是所謂的數字簽名應用。

MD5還廣泛用於加密和解密技術上,在很多操作系統中,用戶的密碼是以MD5值(或類似的其它演算法)的方式保存的,用戶Login的時候,系統是把用戶輸入的密碼計算成MD5值,然後再去和系統中保存的MD5值進行比較,而系統並不"知道"用戶的密碼是什麼。

一些黑客破獲這種密碼的方法是一種被稱為"跑字典"的方法。有兩種方法得到字典,一種是日常搜集的用做密碼的字元串表,另一種是用排列組合方法生成的,先用MD5程序計算出這些字典項的MD5值,然後再用目標的MD5值在這個字典中檢索。

即使假設密碼的最大長度為8,同時密碼只能是字母和數字,共26+26+10=62個字元,排列組合出的字典的項數則是P(62,1)+P(62,2)....+P(62,8),那也已經是一個很天文的數字了,存儲這個字典就需要TB級的磁碟組,而且這種方法還有一個前提,就是能獲得目標賬戶的密碼MD5值的情況下才可以。

在很多電子商務和社區應用中,管理用戶的Account是一種最常用的基本功能,盡管很多Application Server提供了這些基本組件,但很多應用開發者為了管理的更大的靈活性還是喜歡採用關系資料庫來管理用戶,懶惰的做法是用戶的密碼往往使用明文或簡單的變換後直接保存在資料庫中,因此這些用戶的密碼對軟體開發者或系統管理員來說可以說毫無保密可言,本文的目的是介紹MD5的Java Bean的實現,同時給出用MD5來處理用戶的Account密碼的例子,這種方法使得管理員和程序設計者都無法看到用戶的密碼,盡管他們可以初始化它們。但重要的一點是對於用戶密碼設置習慣的保護
是否可以解決您的問題?

閱讀全文

與md5是常見數據加密演算法相關的資料

熱點內容
江蘇螺桿壓縮機 瀏覽:973
android底部彈出對話框 瀏覽:492
怎麼查伺服器同行fc號 瀏覽:991
什麼伺服器雲鳥最便宜 瀏覽:214
vs編譯器反匯編 瀏覽:562
程序員直播做項目創業 瀏覽:396
linux下samba配置 瀏覽:795
程序員面試銀行崗位會有編制嗎 瀏覽:412
ex表怎麼加密碼保護 瀏覽:170
小孩上編程課用哪款好 瀏覽:556
如何製作伺服器商店 瀏覽:734
壓縮氣管閥門 瀏覽:464
pdf推文 瀏覽:358
69程序員 瀏覽:581
阿里雲伺服器鏡像如何遷移到騰訊 瀏覽:989
安卓如何顯示日期在狀態欄 瀏覽:805
cadsplt這個命令用不了 瀏覽:467
安卓誇克怎麼取消監管 瀏覽:664
pdf怎麼裁剪圖片 瀏覽:440
黑上宏命令 瀏覽:646