Hash,音譯為哈希,也叫散列函數、摘要演算法。它是把任意長度的輸入,通過散列演算法變換成搏沖型固定長度的輸出,該輸出就是散列值。
常用的哈希演算法有:
MD5 信息摘要演算法 (MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組)的散列值,用於確保信息傳輸完整一致。
SHA (Secure Hash Algorithm),即安全散列演算法。散列演算法又稱雜湊演算法或哈希演算法,能將一定長度的消息計算出固定長度的字元串(又稱消息摘要)。SHA包含5個演算法,分別是SHA-1、SHA-224、SHA-256、SHA-384和SHA-512,後四者並稱為SHA-2。
循環冗餘校驗 (Cyclic rendancy check,通稱「 CRC 」)是一種根據網路數據包或電腦文件等數據產生簡短固定位數校驗碼的一種散列函數,主要用來檢測或校驗數據傳輸或者保存後可能出現的錯誤。生成的數字在傳輸或者存儲之前計算出來並且附加到數據後面,然後接收方進行檢驗確定數據是否發生變化。一般來說,循環冗餘校驗的值都是32位的整數。
AES ,高級加密標准(Advanced Encryption Standard),又稱 Rijndael 加密法,是美國聯邦政府採用的一種區塊加密標准。
MAC ,消息認證碼(帶密鑰的 Hash 函判兆數):密碼學中,通信實體雙方使用的一種驗證機制,保證消息數據完整性的一種工具。構造方法由 M.Bellare 提出,安全性依賴於 Hash 函數,故也稱帶密鑰的 Hash 函數。消息認證碼是基於密鑰和消息摘要所獲得的一個值,可用於數據源發認證和完整基猜性校驗。
PBKDF2 (Password-Based Key Derivation Function)是一個用來導出密鑰的函數,常用於生成加密的密碼。它的基本原理是通過一個偽隨機函數(例如 HMAC 函數),把明文和一個鹽值作為輸入參數,然後重復進行運算,並最終產生密鑰。如果重復的次數足夠大,破解的成本就會變得很高。而鹽值的添加也會增加「彩虹表」攻擊的難度。
在需要使用 CryptoSwift 的地方將其 import 進來:
歡迎留言討論,有錯誤請指出,謝謝!
Swift 開發學習交流,聯系我 QQ:3500229193 入群,請備注「Swift 學習」!
B. linux shadow 文件內容 用戶名 密碼 顯示
shadow 是 passwd 的影子文件。
在
linux中,口令文件在/etc/passwd中,早期的這個文件直接存放加密後的密碼,前兩位是"鹽"值,是一個隨機數,後面跟的是加密的密碼。為了
安全,現在的linux都提供了 /etc/shadow這個影子文件,密碼放在這個文件裡面,並且是只有root可讀的。
/etc/passwd文件的每個條目有7個域,分別是名字:密碼:用戶id:組id:用戶信息:主目錄:shell
例如:ynguo:x:509:510::/home/ynguo:/bin/bash
在利用了shadow文件的情況下,密碼用一個x表示,普通用戶看不到任何密碼信息。影子口令文件保存加密的口令;/etc/passwd文件中的密碼全部變成x。Shadow只能是root可讀,從而保證了安全。
/etc/shadow文件每一行的格式如下:用戶名:加密口令:上一次修改的時間(從1970年1月1日起的天數):口令在兩次修改間的最小天數:口令修改之前向用戶發出警告的天數:口令終止後賬號被禁用的天數:從1970年1月1日起賬號被禁用的天數:保留域。
例如:root:$1$t4sFPHBq$JXgSGgvkgBDD/D7FVVBBm0:11037:0:99999:7:-1:-1:1075498172
下面為test用戶設置密碼,執行如下命令
passwd test
[root@localhost etc]# passwd test
Changing password for user test.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost etc]#
然後進入/etc/shadow文件下面可以看到如下信息
gdm:!!:14302:0:99999:7:::
hzmc:$1$JZMjXqxJ$bvRpGQxbuRiEa86KPLhhC1:14302:0:99999:7:::
mysql:!!:14315:0:99999:7:::
chenhua:$1$YBJZNyXJ$BnpKFD58vSgqzsyRO0ZeO1:14316:0:99999:7:::
test:$1$hKjqUA40$OelB9h3UKOgnttKgmRpFr/:14316:0:99999:7:::
可以發現,共有9個欄目
(1):帳號名稱
(2):密碼:這里是加密過的,但高手也可以解密的。要主要安全問題(代!符號標識該帳號不能用
來登錄)
(3):上次修改密碼的日期
(4):密碼不可被變更的天數
(5):密碼需要被重新變更的天數(99999表示不需要變更)
(6):密碼變更前提前幾天警告
(7):帳號失效日期
(8):帳號取消日期
(9):保留條目,目前沒用
Unix
系統最初是用明文保存密碼的,後來由於安全的考慮,採用crypt()演算法加密密碼並存放在/etc/passwd文件。現在,由
於計算機處理能力的提高,使密碼破解變得越來越容易。/etc/passwd文件是所有合法用戶都可訪問的,大家都可互相看到密碼的加密字元串,這給系統
帶來很大的安全威脅。現代的Unix系統使用影子密碼系統,它把密碼從/etc/pa
sswd文件中分離出來,真正的密碼保存在/etc/shadow文件中,shadow文件只能由超級用戶訪問。這樣入侵者就不能獲得加密密碼串,用於破
解。使用shadow密碼文件後,/etc/passwd文件中所有帳戶的password域的內容為"x",如果password域的內容為"*",則
該帳號被停用。使用passwd這個程序可修改用戶的密碼。
C. 化鹽桶的原理
化鹽桶是知明核一種用於處理水質的裝槐缺置,它的工作原理是:將水中的溶解鹽(如氯化鈉)通過電解分解成氯離子和鈉離子,然後將氯搭掘離子通過氣體換熱器轉換成氯氣,最後將氯氣排出,從而達到凈化水質的目的。
D. 十大常見密碼加密方式
一、密鑰散列
採用MD5或者SHA1等散列演算法,對明文進行加密。嚴格來說,MD5不算一種加密演算法,而是一種摘要演算法。無論多長的輸入,MD5都會輸出一個128位(16位元組)的散列值。而SHA1也是流行的消息摘要演算法,它可以生成一個被稱為消息摘要的160位(20位元組)散列值。MD5相對SHA1來說,安全性較低,但是速度快;SHA1和MD5相比安全性高,但是速度慢。
二、對稱加密
採用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密。對稱加密演算法中常用的演算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
三、非對稱加密
非對稱加密演算法是一種密鑰的保密方法,它需要兩個密鑰來進行加密和解密,這兩個密鑰是公開密鑰和私有密鑰。公鑰與私鑰是一對,如果用公鑰對數據進行加密,只有用對應的私鑰才能解密。非對稱加密演算法有:RSA、Elgamal、背包演算法、Rabin、D-H、ECC(橢圓曲線加密演算法)。
四、數字簽名
數字簽名(又稱公鑰數字簽名)是只有信息的發送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明。它是一種類似寫在紙上的普通的物理簽名,但是在使用了公鑰加密領域的技術來實現的,用於鑒別數字信息的方法。
五、直接明文保存
早期很多這樣的做法,比如用戶設置的密碼是「123」,直接就將「123」保存到資料庫中,這種是最簡單的保存方式,也是最不安全的方式。但實際上不少互聯網公司,都可能採取的是這種方式。
六、使用MD5、SHA1等單向HASH演算法保護密碼
使用這些演算法後,無法通過計算還原出原始密碼,而且實現比較簡單,因此很多互聯網公司都採用這種方式保存用戶密碼,曾經這種方式也是比較安全的方式,但隨著彩虹表技術的興起,可以建立彩虹表進行查表破解,目前這種方式已經很不安全了。
七、特殊的單向HASH演算法
由於單向HASH演算法在保護密碼方面不再安全,於是有些公司在單向HASH演算法基礎上進行了加鹽、多次HASH等擴展,這些方式可以在一定程度上增加破解難度,對於加了「固定鹽」的HASH演算法,需要保護「鹽」不能泄露,這就會遇到「保護對稱密鑰」一樣的問題,一旦「鹽」泄露,根據「鹽」重新建立彩虹表可以進行破解,對於多次HASH,也只是增加了破解的時間,並沒有本質上的提升。
八、PBKDF2
該演算法原理大致相當於在HASH演算法基礎上增加隨機鹽,並進行多次HASH運算,隨機鹽使得彩虹表的建表難度大幅增加,而多次HASH也使得建表和破解的難度都大幅增加。
九、BCrypt
BCrypt 在1999年就產生了,並且在對抗 GPU/ASIC 方面要優於 PBKDF2,但是我還是不建議你在新系統中使用它,因為它在離線破解的威脅模型分析中表現並不突出。
十、SCrypt
SCrypt 在如今是一個更好的選擇:比 BCrypt設計得更好(尤其是關於內存方面)並且已經在該領域工作了 10 年。另一方面,它也被用於許多加密貨幣,並且我們有一些硬體(包括 FPGA 和 ASIC)能實現它。 盡管它們專門用於采礦,也可以將其重新用於破解。
E. 500g文件怎麼存儲
力破解之SHA-512破解(轉載)
2023/1/23 9:31:35
原文來自:linux密碼暴力破解之SHA-512破解
由於MD5加密已經發展了很多年,現在市面歲旅上已經積累了大量的MD5數據,這樣,MD5的安全性也就受到了威脅,所以,從centos6.x版本開始,系統密碼開始採用SHA-512加密,與MD5加密相比,SHA-512加密後長度更長,也就意味著數念SHA-512相比MD5更加安全.
密碼加密原理
在我們進行密碼破解前,我們首先需要了解linux系統密碼加密的原理:密文由3部分組成,以」$」分隔,第一部分為ID,第二部分為鹽值,第三部分為加密密文
什麼是ID?
ID用來表示加密的方法.
如下圖,
1表示加密方法使用MD5,
6表示加密方法使用SHA-512
密文示例:
$6$D0xsORq3b7GGsbYv$7L8myKFcJf1FqnvtzD.Zcbx9PeHnwGH1YJm/
$id$salt$encrypted
採用方法 鹽值 加密密文
——————————————
ID 加密方法
1 MD5
5 SHA-256
6 SHA-512
——————————————
什麼是鹽值(salt)?
鹽值就是使用隨機字元碼混合密碼加密演算法所產生的密碼,作用就是即使是同一個密碼,使用同一種加密方式,所產生的密文值也不同
如上面提到的密文示例:
$6$D0xsORq3b7GGsbYv #這一段就是鹽值,在加密的時候連同前面的ID一起加密
什麼是密文?
這個我就不多介紹了,同上面的密文示例
7L8myKFcJf1FqnvtzD.Zcbx9PeHnwGH1YJm/ #這一段就是密文了
了解了原理,我們就可以使用工具來進行密碼的暴力破解了
這里採用是利用python進行破解.
需要用到python下的 crypt 這個庫,這個庫下的.crypt方法可以根據猜想的密碼原文和鹽值薯雀困來生成加密後的完整密文。
簡單的講一下思路:
1.獲取到鹽值
2.將獲取的鹽值和猜想的密碼通過crypt.crypt()加密
F. 單點登陸TOKEN的處理
API介面的安全性主要是為了保證數據不會被篡改和重復調用,實現方案主要圍繞Token、時間戳和Sign三個機制展開設計。
1. Token授權機制
用戶使用用戶名密碼登錄後伺服器給客戶端返回一個Token(必須要保證唯一,可以結合UUID和本地設備標示),並將Token-UserId以鍵滑瞎伏值對的形式存放在緩存伺服器中(我們是使用Redis),並要設置失效時間。服務端接收到請求後進行Token驗證,如果Token不存在,說明請求無效。Token是客戶端訪問服務端信攜的憑證。
2. 時間戳超時機制
用戶每次請求都帶上當前時間的時間戳timestamp,服務端接收到timestamp後跟當前時間進行比對,如果時間差大於一定時間(比如30秒),則認為該請求失效。時間戳超時機制是防禦重復調用和爬取數據的有效手段。
當然這里需要注意的地方是保證客戶端和服務端的「當前時間」是一致的,我們採取的對齊方式是客戶端第一次連接服務端時請求一個介面獲取服務端的當前時間A1,再和客戶端的當前時間B1做一個差異化計算(A1-B1=AB),得出差異值AB,客戶端再後面的請求中都是傳B1+AB給到服務端。
3. API簽名機制
將「請求的API參數」+「時間戳」+「鹽」進行MD5演算法加密,加密後的數據就是本次請求的簽名signature,服務端接收到請求後以同樣的演算法得到簽名,並跟當前的簽名進行比對,如果不一樣,說神嫌明參數被更改過,直接返回錯誤標識。簽名機制保證了數據不會被篡改。
4. 注意事項
5. 安全保障總結
在以上機制下,
如果有人劫持了請求,並對請求中的參數進行了修改,簽名就無法通過;
如果有人使用已經劫持的URL進行DOS攻擊和爬取數據,那麼他也只能最多使用30s;
如果簽名演算法都泄露了怎麼辦?可能性很小,因為這里的「鹽」值只有我們自己知道。
G. 密碼加密的方法有那些
用戶密碼加密方式
用戶密碼保存到資料庫時,常見的加密方式有哪些?以下幾種方式是常見的密碼保存方式:
1. 明文保存
比如用戶設置的密碼是「123456」,直接將「123456」保存在資料庫中,這種是最簡單的保存方式,也是最不安全的方式。但實際上不少互聯網公司,都可能採取的是這種方式。
2. 對稱加密演算法來保存
比如3DES、AES等演算法,使用這種方式加密是可以通過解密來還原出原始密碼的,當然前提條件是需要獲取到密鑰。不過既然大量的用戶信息已經泄露了,密鑰很可能也會泄露,當然可以將一般數據和密鑰分開存儲、分開管理,但要完全保護好密鑰也是一件非常復雜的事情,所以這種方式並不是很好的方式。
總結
採用PBKDF2、bcrypt、scrypt等演算法可以有效抵禦彩虹表攻擊,即使數據泄露,最關鍵的「用戶密碼」仍然可以得到有效的保護,黑客無法大批量破解用戶密碼,從而切斷撞庫掃號的根源。
【加密軟體編輯推薦】
易控網盾加密軟體--重要文件防泄密專家!輕松實現單位內部文件自動加密保護,加密後的文件在單位內部正常流轉使用。未經許可,任何私自拷貝加密文件外發出去,都將打開為亂碼,無法使用!對於發送給客戶等第三方的文件,可實現控制打開時間和打開次數等防泄密參數!同時可設置對員工電腦文件自動備份,防止惡意刪除造成核心數據的遺失!從源頭防止企業核心文件被外泄!
相關頁面:加密軟體,文件加密,文檔加密,圖紙加密軟體,防泄密軟體,CAD加密軟體,文件外發加密
H. 加鹽的hash口令機制可以抵禦重放攻擊。是否正確
鹽值加密使用的是hash演算法,一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組碰嘩)的散列值(hash value)。
也就是一共有2^128種可能,大概是3.4*10^38,這個笑敏行數字是有限多個的,而但是世界上可以被用來加密的原文則會有無數的可能性。
2009年,中國科學院的謝濤和馮登國僅用了220.96的碰撞演算法復雜度,破解了鹽值加密的碰撞抵抗,該攻拿蘆擊在普通計算機上運行只需要數秒鍾。
我使用過鹽值加密碰撞生成器,可以生成兩個鹽值加密相同但是內容不同的文件。
I. 鹽酸有什麼危害
問題一:鹽酸危害有哪些 健康危害: 接觸其蒸氣或煙霧,可引起急性中毒,出現眼結膜炎,鼻及口腔粘膜有燒灼感,鼻衄、齒齦出血,氣管炎等。誤服可引起消化道灼傷、潰瘍形成,有可能引起胃穿孔、腹膜炎等。眼和皮膚接觸可致灼傷。慢性影響:長期接觸,引起慢性駭炎、慢性支氣管炎、牙齒酸蝕症及皮膚損害。 環境危害: 對環境有危害,對水體和土壤可造成污染。 燃爆危險: 本品不燃,具強腐蝕性、強 *** 性,可致人體灼傷。 毒理學資料及環境行為 急性毒性:LD50900mg/kg(兔經口);LC503124ppm,1小時(大鼠吸入) 危險特性:能與一些活性金屬粉末發生反應,放出氫氣。遇氰化物能產生劇毒的氰化氫氣體。與鹼發生中合反應,並放出大量的熱。具有強腐蝕性。 燃燒(分解)產物:氯化氫。
問題二:鹽酸的危害性 【鹽酸的危害性的原理】鹽酸是極強的無機酸,具強腐蝕性、強 *** 性;濃縮的鹽酸會形成酸霧,酸霧和鹽酸溶液都對動植物組織有腐蝕性的效果,對人類而言有損害呼吸器官、眼睛、皮膚和腸道的可能。鹽酸可與常見的氧化劑,例如次氯酸鈉(漂白劑,NaClO)或次氯酸鈣(Ca(ClO)2)等發生氧化還原反應,產生有毒的氯氣氣體,少量吸入會導致不適。
【鹽酸的危害性】
1、健康危扮空慧害:廳答接觸其蒸氣或煙霧,可引起急性中毒:出現眼結膜炎,鼻及口腔粘膜有燒灼感,鼻出血、齒齦出血,氣管炎等。誤服可引起消化道灼傷、潰瘍形成,有可能引起胃穿孔、腹膜炎等。眼和皮膚接觸可致灼傷。
2、慢性影響:長期接觸,引起慢性鼻炎、慢性支氣管炎、牙齒酸蝕症及皮膚損害。
3、環境危害:對環境有危害,對水體和土壤可造成污染。對動植物纖維和人體肌膚均有腐蝕作用。
4、燃爆危險:該品不燃。具強腐蝕性、強 *** 性,可致人體灼傷。
問題三:鹽酸的危害? 鹽酸的危害
高濃度鹽酸對鼻粘膜和結膜有 *** 作用,會出現角膜渾濁、嘶啞、窒息感、胸痛、鼻炎、咳嗽,有時痰中帶血。鹽酸霧可導致眼臉部皮膚劇烈疼痛。如發生事故,應立即將受傷者移到新鮮空氣處輸氧,清洗眼睛和鼻,並用2%的蘇打水漱口。濃鹽酸濺到皮膚上,應立即用大量水沖洗5至10分鍾,在燒傷表面塗上蘇打漿。嚴重者送醫院治療。
純氯化氫為無色有 *** 性和臭味的氣味。其水溶液即鹽酸,純鹽酸無色,工業品因含有鐵、氯等雜質,略帶微黃色。相對密度1.187。氯化氫熔點-114.8℃。沸點-84.9℃。易溶於水,有強烈的腐蝕性,能腐蝕金屬,對動植物纖維和人體肌膚均有腐蝕作用。濃鹽酸在空氣中發煙,觸及氨蒸氣會生成白色雲霧。氯化氫氣體對動植物有害。鹽酸是極強的無機酸,與金屬作用能生成金屬氯化物並放出氯;與金屬氧化物作用生成鹽和水;與鹼起中和反應生成鹽和水;與鹽類能起復分解反應生成新的鹽和新的酸。
問題四:鹽酸對人有虧肆什麼危害 鹽酸不燃,具強腐蝕性、強 *** 性,可致人體灼傷。它能與一些活性金屬粉末發生反應, 放出氫氣。遇氰化物能產生劇毒的氰化氫氣體。與鹼發生中和反應,並放出大量的熱。具有較強的腐蝕性。接觸鹽酸蒸氣或煙霧,可引起急性中毒,出現眼結膜炎,鼻及口腔粘膜有燒灼感,鼻衄、齒齦出血,氣管炎等。誤服可引起消化道灼傷、潰瘍形成,有可能引起胃穿孔、腹膜炎等。眼和皮膚接觸可致灼傷。長期接觸,引起慢性鼻炎、慢性支氣管炎、牙齒酸蝕症及皮膚損害。遠離易燃、可燃物。防止蒸氣泄漏到工作場所空氣中。避免與鹼類、胺類、鹼金屬接觸。搬運時要輕裝輕卸,防止包裝及容器損壞。配備泄漏應急處理設備。倒空的容器可能殘留有害物。
問題五:鹽酸高對身體的害處 鹽酸沒有毒性,主要是腐蝕危害。
首先鹽酸當然是不能直接接觸身體的,對皮膚有傷害。
當你能夠嗅到鹽酸氣味的時候說明鹽酸分子已經進入你的鼻腔,長期下來可能對鼻腔粘膜造成損害,因為鹽酸主要的危害是腐蝕。建議每次下班後回家立即洗澡(用浴液香皂洗即可因為它們都是鹼性的),洗掉附著在皮膚上的鹽酸。
問題六:鹽酸對人體危害有多大 鹽酸是強酸,氫氧化鈉是強鹼(也叫苛性鹼)如果接觸皮膚,則將會引起對皮膚的嚴重腐蝕(強酸)和燒傷,甚至可能由於嚴重的燒傷等使皮膚和肌體組織的正常循環被破壞,最終可能導致身體的循環出現衰竭現象而憨及生命.如果經搶救治療後也將在傷處形成永久性的疤痕.還有鹽酸在接觸空氣後,蒸發出的黃色煙霧-----氯化氫氣體,將對人的眼睛,皮膚,特別是呼吸道產生比較嚴重的損傷.
問題七:工業鹽酸對身體有什麼危害? 高濃度鹽酸對鼻粘膜和結膜有 *** 作用,會出現角膜渾濁、嘶啞、窒息感、胸痛、鼻炎、咳嗽,有時痰中帶血。鹽酸霧可導致眼臉部皮膚劇烈疼痛。如發生事故,應立即將受傷者移到新鮮空氣處輸氧,清洗眼睛和鼻,並用2%的蘇打水漱口。濃鹽酸濺到皮膚上,應立即用大量水沖洗5至10分鍾,在燒傷表面塗上蘇打漿。嚴重者送醫院治療。
純氯化氫為無色有 *** 性和臭味的氣味。其水溶液即鹽酸,純鹽酸無色,工業品因含有鐵、氯等雜質,略帶微****。相對密度1.187。氯化氫熔點-114.8℃。沸點-84.9℃。易溶於水,有強烈的腐蝕性,能腐蝕金屬,對動植物纖維和人體肌膚均有腐蝕作用。濃鹽酸在空氣中發煙,觸及氨蒸氣會生成白色雲霧。氯化氫氣體對動植物有害。鹽酸是極強的無機酸,與金屬作用能生成金屬氯化物並放出氯;與金屬氧化物作用生成鹽和水;與鹼起中和反應生成鹽和水;與鹽類能起復分解反應生成新的鹽和新的酸。
問題八:鹽酸對人體有害嗎 5分 是氯化氫水溶液。濃鹽酸具有強揮發性和腐蝕性,具有 *** 性氣味,能和很多金屬發生反映。對人體是有害的。一般我們使用的鹽酸不是濃鹽酸。 如是清除一般污漬用稀鹽酸就可以了。不會有太大危害!
鹽酸的主要化學成分是氯化氫,它的的化學式是HCL。鹽酸是氯化氫的水溶液,它的濃度最高不會超過37%。鹽酸具有很強的腐蝕性,揮發性。濃度越高揮發的越嚴重。對人體談不上毒性丹但是確是有腐蝕性,這也是人忍受不了的啊。所以,在使用時,應作好防護措施,特別是皮膚,和口鼻等。
問題九:鹽酸的危害性? 健康危害:接觸其蒸氣或煙霧,可引起急性中毒,出現眼結膜炎,鼻及口腔粘膜有燒灼感,鼻衄、齒齦出血,氣管炎等。誤服可引起消化道灼傷、潰瘍形成,有可能引起胃穿孔、腹膜炎等。眼和皮膚接觸可致灼傷。慢性影響:長期接觸,引起慢性鼻炎、慢性支氣管炎、牙齒酸蝕症及皮膚損害。
環境危害: 對環境有危害,對水體和土壤可造成污染。
燃爆危險: 該品不燃,具強腐蝕性、強 *** 性,可致人體灼傷。
問題十:鹽酸泄露後有哪些危害? 鹽酸(IUPAC名:chlorane[1] )是氯化氫(英語:hydrochloric acid;化學式:HCl)的水溶液,又名氫氯酸 ,屬於一元無機強酸,工業用途廣泛。鹽酸的性狀為無色透明的液體,有強烈的刺鼻氣味,具有較高的腐蝕性。
濃鹽酸(質量分數約為37%)具有極強的揮發性,因此盛有濃鹽酸的容器打開後氯化氫氣體會揮發,與空氣中的水蒸氣結合產生鹽酸小液滴,使瓶口上方出現酸霧。鹽酸是胃酸的主要成分,它能夠促進食物消化、抵禦微生物感染。
鹽酸侵入人體的途徑主要是口鼻吸入或食入,還能 *** 皮膚。對健康的危害如下:接觸其蒸汽或煙霧,引起眼結膜炎,鼻及口腔粘膜有燒灼感,鼻衄、齒齦出血、氣管炎,並引起慢性支氣管炎等病變; *** 皮膚能引發皮炎。誤食酸鹽中毒,能引起消化道灼傷和潰瘍,嚴重的有可能導致胃穿孔、腹膜炎等。若發生皮膚接觸,立即用水沖洗至少15分鍾,或用2%碳酸氫納溶液沖洗;若有灼傷,應到醫院治療。眼睛接觸,應立即提起眼瞼,用流動清水沖洗10分鍾或用2%碳酸氫納溶液沖洗。呼吸道吸入,應迅速脫離現場至空氣新鮮處;呼吸困難時要立即給氧,並將2%-4%碳酸氫納溶液霧化後吸入並就醫。若從食道進入,誤服者應立即漱口,並口服牛奶、蛋清、植物油等,不可催吐,立即就醫。
工程式控制制是防止鹽酸傷人根本性措施,生產場所應注意通風,管道容器應嚴加密閉,操作人員不能暴露於有鹽酸蒸汽或煙霧的環境中,盡可能以機械化、自動化取代手中操作。呼吸系統防護、眼睛防護、身體防護、手防護等,都必不少的個人防護,以防工程措施的失效
。呼吸系統防護主要是指在可能接觸鹽酸蒸汽或煙霧時,必須佩戴防毒面具或供氣式頭盔;在緊急事態搶救或逃生時,應佩戴自給式呼吸器。戴化學安全防護眼鏡是確保眼睛不受傷害。戴橡皮手套和穿防腐材料製作的工作服,是為了保護手和身體安全。再就要保持良好的個人衛生習慣,作業後要淋浴更衣;被鹽酸污染過的衣服要單獨存放,洗後再用。
J. 開發中常見的加密方式及應用
開發中常見的加密方式及應用
一、base64
簡述:Base64是網路上最常見的用於傳輸8Bit 位元組碼 的編碼方式之一,Base64就是一種基於64個可列印字元來表示二進制數據的方法。所有的數據都能被編碼為並只用65個字元就能表示的文本文件。( 65字元:A~Z a~z 0~9 + / = )編碼後的數據~=編碼前數據的4/3,會大1/3左右(圖片轉化為base64格式會比原圖大一些)。
應用:Base64編碼是從二進制到字元的過程,可用於在 HTTP 環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就採用了Base64來將一個較長的唯一 標識符 (一般為128-bit的UUID)編碼為一個字元串,用作HTTP 表單 和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進制 數據編碼 為適合放在URL(包括隱藏 表單域 )中的形式。此時,採用Base64編碼具有不可讀性,需要解碼後才能閱讀。
命令行進行Base64編碼和解碼
編碼:base64 123.png -o 123.txt
解碼:base64 123.txt -o test.png -D Base64編碼的原理
原理:
1)將所有字元轉化為ASCII碼;
2)將ASCII碼轉化為8位二進制;
3)將二進制3個歸成一組(不足3個在後邊補0)共24位,再拆分成4組,每組6位;
4)統一在6位二進制前補兩個0湊足8位;
5)將補0後的二進制轉為十進制;
6)從Base64編碼表獲取十進制對應的Base64編碼;
Base64編碼的說明:
a.轉換的時候,將三個byte的數據,先後放入一個24bit的緩沖區中,先來的byte占高位。
b.數據不足3byte的話,於緩沖區中剩下的bit用0補足。然後,每次取出6個bit,按照其值選擇查表選擇對應的字元作為編碼後的輸出。
c.不斷進行,直到全部輸入數據轉換完成。
d.如果最後剩下兩個輸入數據,在編碼結果後加1個「=」;
e.如果最後剩下一個輸入數據,編碼結果後加2個「=」;
f.如果沒有剩下任何數據,就什麼都不要加,這樣才可以保證資料還原的正確性。
二、HASH加密/單向散列函數
簡述:Hash演算法特別的地方在於它是一種單向演算法,用戶可以通過Hash演算法對目標信息生成一段特定長度(32個字元)的唯一的Hash值,卻不能通過這個Hash值重新獲得目標信息。對用相同數據,加密之後的密文相同。 常見的Hash演算法有MD5和SHA。由於加密結果固定,所以基本上原始的哈希加密已經不再安全,於是衍生出了加鹽的方式。加鹽:先對原始數據拼接固定的字元串再進行MD5加密。
特點:
1) 加密 後密文的長度是定長(32個字元的密文)的
2)如果明文不一樣,那麼散列後的結果一定不一樣
3)如果明文一樣,那麼加密後的密文一定一樣(對相同數據加密,加密後的密文一樣)
4)所有的加密演算法是公開的
5)不可以逆推反算(不能根據密文推算出明文),但是可以暴力 破解 ,碰撞監測
原理:MD5消息摘要演算法,屬Hash演算法一類。MD5演算法對輸入任意長度的消息進行運行,產生一個128位的消息摘要。
1)數據填充
對消息進行數據填充,使消息的長度對512取模得448,設消息長度為X,即滿足X mod 512=448。根據此公式得出需要填充的數據長度。
填充方法:在消息後面進行填充,填充第一位為1,其餘為0。
2)添加信息長度
在第一步結果之後再填充上原消息的長度,可用來進行的存儲長度為64位。如果消息長度大於264,則只使用其低64位的值,即(消息長度 對264取模)。
在此步驟進行完畢後,最終消息長度就是512的整數倍。
3)數據處理
准備需要用到的數據:
4個常數:A = 0x67452301, B = 0x0EFCDAB89, C = 0x98BADCFE, D = 0x10325476;
4個函數:F(X,Y,Z)=(X & Y) | ((~X) & Z);G(X,Y,Z)=(X & Z) | (Y & (~Z));H(X,Y,Z)=X ^ Y ^ Z;I(X,Y,Z)=Y ^ (X | (~Z));
把消息分以512位為一分組進行處理,每一個分組進行4輪變換,以上面所說4個常數為起始變數進行計算,重新輸出4個變數,以這4個變數再進行下一分組的運算,如果已經是最後一個分組,則這4個變數為最後的結果,即MD5值。
三、對稱加密
經典演算法:
1)DES數據加密標准
DES演算法的入口參數有三個:Key、Data、Mode。其中Key為8個位元組共64位,是DES演算法的工作密鑰;Data也為8個位元組64位,是要被加密或被解密的數據;Mode為DES的工作方式,有兩種:加密或解密。
DES演算法是這樣工作的:如Mode為加密,則用Key去把數據Data進行加密, 生成Data的密碼形式(64位)作為DES的輸出結果;如Mode為解密,則用Key去把密碼形式的數據Data解密,還原為Data的明碼形式(64位)作為DES的輸出結果。在通信網路的兩端,雙方約定一致的Key,在通信的源點用Key對核心數據進行DES加密,然後以密碼形式在公共通信網(如電話網)中傳輸到通信網路的終點,數據到達目的地後,用同樣的Key對密碼數據進行解密,便再現了明碼形式的核心數據。這樣,便保證了核心數據(如PIN、MAC等)在公共通信網中傳輸的安全性和可靠性。
2)3DES使用3個密鑰,對消息進行(密鑰1·加密)+(密鑰2·解密)+(密鑰3·加密)
3)AES高級加密標准
如圖,加密/解密使用相同的密碼,並且是可逆的
四、非對稱加密
特點:
1)使用公鑰加密,使用私鑰解密
2)公鑰是公開的,私鑰保密
3)加密處理安全,但是性能極差
經典演算法RSA:
1)RSA原理
(1)求N,准備兩個質數p和q,N = p x q
(2)求L,L是p-1和q-1的最小公倍數。L = lcm(p-1,q-1)
(3)求E,E和L的最大公約數為1(E和L互質)
(4)求D,E x D mode L = 1
五、數字簽名
原理以及應用場景:
1)數字簽名的應用場景
需要嚴格驗證發送方身份信息情況
2)數字簽名原理
(1)客戶端處理
對"消息"進行HASH得到"消息摘要"
發送方使用自己的私鑰對"消息摘要"加密(數字簽名)
把數字簽名附著在"報文"的末尾一起發送給接收方
(2)服務端處理
對"消息" HASH得到"報文摘要"
使用公鑰對"數字簽名"解密
對結果進行匹配
六、數字證書
簡單說明:
證書和駕照很相似,裡面記有姓名、組織、地址等個人信息,以及屬於此人的公鑰,並有認證機構施加數字簽名,只要看到公鑰證書,我們就可以知道認證機構認證該公鑰的確屬於此人。
數字證書的內容:
1)公鑰
2)認證機構的數字簽名
證書的生成步驟:
1)生成私鑰openssl genrsa -out private.pem 1024
2)創建證書請求openssl req -new -key private.pem -out rsacert.csr
3)生成證書並簽名,有效期10年openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt
4)將PEM格式文件轉換成DER格式openssl x509 -outform der -in rsacert.crt -out rsacert.der
5)導出P12文件openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt
iOS開發中的注意點:
1)在iOS開發中,不能直接使用PEM格式的證書,因為其內部進行了Base64編碼,應該使用的是DER的證書,是二進制格式的;
2)OpenSSL默認生成的都是PEM格式的證書。
七、https
HTTPS和HTTP的區別:
超文本傳輸協議HTTP協議被用於在Web瀏覽器和網站伺服器之間傳遞信息。HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站伺服器之間的傳輸報文,就可以直接讀懂其中的信息,因此HTTP協議不適合傳輸一些敏感信息,比如信用卡號、密碼等。
為了解決HTTP協議的這一缺陷,需要使用另一種協議:安全套接字層超文本傳輸協議HTTPS。為了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通信加密。
HTTPS和HTTP的區別主要為以下四點:
1)https協議需要到ca申請證書,一般免費證書很少,需要交費。
2)http是 超文本傳輸協議 ,信息是明文傳輸,https則是具有 安全性 的 ssl 加密傳輸協議。
3)http和https使用的是完全不同的連接方式,用的埠也不一樣,前者是80,後者是443。
4)http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的 網路協議 ,比http協議安全。
5)SSL:Secure Sockets Layer安全套接字層;用數據加密(Encryption)技術,可確保數據在網路上傳輸過程中不會被截取及竊聽。目前一般通用之規格為40 bit之安全標准,美國則已推出128 bit之更高安全標准,但限制出境。只要3.0版本以上之I.E.或Netscape 瀏覽器 即可支持SSL。目前版本為3.0。SSL協議位於TCP/IP協議與各種應用層協議之間,為數據通訊提供安全支持。SSL協議可分為兩層:SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供數據封裝、壓縮、加密等基本功能的支持。SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密密鑰等。