當前位置:首頁 » 密碼管理 » hash加密工具

hash加密工具

發布時間: 2022-11-29 11:24:07

Ⅰ 通信安全:哈希、加密、證書、簽名、密鑰協商、ECDH、TLS、DTLS

哈希也叫散列,是把任意長度的輸入通過散列演算法變換成固定長度的輸出,該輸出就是散列值,也叫摘要(Digest)。

這種轉換是一種 壓縮映射。 也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,所以不可能從散列值來確定唯一的輸入值,但如果輸出的位數足夠,不同輸入散列成相同輸出的概率非常非常小。

簡單的說, 散列就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的過程

散列是不可逆的 ,也就是無法通過輸出還原輸入,此特性常被用於密碼保存。

SHA-512、MD5等都是著名的散列函數,MD5生成的散列碼是128位,甚至MD5就是哈希的同名詞,你可以通過網站:https://passwordsgenerator.net/sha512-hash-generator/ 在線計算哈希。

散列有什麼用?

加密就是把 明文變成密文的過程,解密就是反方向把密文變成明文

比如著名的 凱撒密碼 ,就是把每個字對應到另一個,這樣的話,只要有密碼本,就能對照完成加解密。比如最簡單的,對於英文26個字母,每個字母右移3個,abc變成def,這也是一種加密,當然這種加密很簡單,很容易被破譯。

而諸如AES(高級加密標准)、3DES(三重數據加密演算法)則被公認為很難破解,不過山東大學女教授王小雲很厲害,破解了MD5和SHA-1,迫使加密標准升級,最終當上了院士。

對稱加密

對稱加密就是加解密的密鑰是一樣的,優點是快,這也是傳統的加密方式,像AES、3DES都是對稱加密。

非對稱加密

非對稱加密用於加解密的密鑰不一樣,有2個密鑰,公鑰和私鑰,公鑰可以公開,私鑰妥善保管。RSA、ECC(橢圓曲線加密演算法)、DH(密鑰交換演算法)這些都是非對稱加密。

非對稱加密很慢,有多慢?相比對稱加密慢1000倍,因為慢,所以它常用於密鑰協商(Handshake),協商出會話密鑰後,再用對稱密鑰加密通信數據。

1976年,Whitfield Diffie和Martin Hellman首次提出了非對稱加密的概念,該演算法被稱為Diffie-Hellman密鑰交換。然後在1978年,麻省理工學院的Ron Rivest,Adi Shamir和Leonard Adleman發表了RSA 演算法。這些都可以被視為非對稱加密的基礎。

非對稱加密也稱為公鑰基礎結構,又稱PKI。 非對稱加密的提出是密碼學上的一次革命,影響深遠。

非對稱加密演算法用私鑰加密,用公鑰解密,或者用公鑰加密,用私鑰解密。

證書就是為了證明我是我,比如你要訪問中國銀行網站,但中行官網如何證明它是中行官網呢?答案就是數字證書。

CA是數字證書中心,伺服器需要找CA做認證,讓CA給自己頒布數字證書,數字證書內一般包含服務的一些信息、以及伺服器的公鑰,通過CA的私鑰加密後,產生的數字證書,因為CA的權威性,且它的公鑰天下皆知,所以,如果你能用CA的公鑰解開證書,那便可證明該證書一定是CA頒發的,要不然它不會有CA的私鑰,也便沒法產生可用CA公鑰解密的證書。

所以,由此可見,數字證書用到了非對稱加密。

日常生活中也有簽名,每個人的筆跡是不一樣的,你刷卡消費後在賬單簽上大名,服務員校驗過之後保存下來,你哪天賴賬,便可以有簽名為證,因為別人寫的字跟你的筆跡終有差別。

那數字簽名是什麼呢?比如a發一封email,接收方怎麼證明這封信是a寫的?

本質上,數字簽名也是利用了非對稱加密。

前面講了,非對稱加密有公鑰和私鑰,如果發生方用私鑰加密,然後接收方用發送方的公鑰可以解密,那便可以證明是從某發送方發送的,因為別人拿不到你的私鑰,也便無法用你的私鑰加密,你不能抵賴。

數字簽名通常先對內容算哈希,產生內容摘要,再用私鑰加密,得到簽名。

下面舉一個例子來說明這幾個問題:

張三有2把鑰匙,一把公鑰,公告天下,一把私鑰,妥善保管,只有自己知道,很明顯,非對稱加密。

李四給張三寫信,寫完之後,用張三的公鑰加密,通過郵局寄給張三,即使郵遞員拆開信封看,他也看不懂,因為內容是密文,只有張三的密鑰才能解密。

張三收到信後,用私鑰解密,可以正常閱讀。

現在張三要給李四回信,寫完後,用hash函數生成摘要digest。

然後張三,再用私鑰對摘要加密,生成數字簽名signature。

然後把簽名附在信的下面,一起發給李四。

過程是:信明文 -> hash -> digist -> 私鑰加密 -> signature。

李四收到回信後,用張三的公鑰對數字簽名解密,得到摘要,由此證明,信確實是張三發出的,為什麼?因為如果不是張三發的,那寫信的人就沒有張三私鑰,用別的私鑰加密得到的簽名,是無法用張三的公鑰解開的。

李四,再對信的內容做hash,得到摘要,與上一步得到的摘要對比,如果一致,則證明信的內容沒有被修改過,信的內容是完整的。

復雜的情況出現了。

王五,用自己的公鑰替換李四保存的張三的公鑰,也就是王五欺騙了李四,李四誤把王五的公鑰當張三的公鑰,這樣一來,王五就能冒充張三給李四寫信(王五用自己的私鑰加密)。

問題是什麼?問題是李四不能確信自己保存的公鑰真的是張三的公鑰。如果客戶端電腦上存的工商銀行官網的公鑰,實際上是騙子公司的公鑰,那就麻煩大了。

怎麼破?讓張三去認證中心CA(Certificate Authority),為公鑰做認證,怎麼做呢?CA中心用自己的私鑰,對張三的公鑰和其他相關信息一起加密,生成數字證書(Digital Certificate)。

張三拿到數字證書後,以後給李四回信,在簽名的同時,附帶上數字證書。

李四收到信之後,從CA的公鑰解開數字證書,取出張三的公鑰(一定是真的),然後就能放心的愉快的按之前的流程解開簽名了。

數字證書加入後,核心區別就是張三的公鑰不再保存在李四處,而是通過數字證書下發。

為什麼數字證書里的張三的公鑰一定是真的呢?因為CA是權威機構,假設全世界就一家(其實不止,但也不多),它的公鑰天下盡知,就是固定的串,所以能用CA公鑰解開的證書,一定是CA頒布的,因為CA用它的私鑰加密產生的證書。很明顯,非對稱加密能用於證明我是我。

密鑰交換演算法

著名的DH密鑰交換演算法,這個演算法很有意思,也很巧妙,簡而言之,就是通信雙方交換一點信息(不怕被偷看到),然後就在兩端,分布產生出一個相同的密鑰,神奇啊。

有一個很有意思的例子。

Alice和Bob要協商出一個公共的顏色,他們可以交換信息,但交換的信息,可以被偷看到,怎麼辦?既能協商出公共顏色,又不能讓別人知道呢。

密鑰交換演算法的原理跟這個差不多,網上有大量的資料講述這個問題,我覺得理解了上面的例子,再看ECDH便也不難了。

眾所周知http是互聯網協議,但是它不夠安全,所以後面有改進版的https,其實就是多了一個TLS,這個是傳輸層加密,本質上,就是通過handshake,協商出一個會話密鑰,後面的數據傳遞,都用這個密鑰做對稱加解密。

我們經常講安全通道,其實也就是協商出一個會話密鑰,他並不神秘。胡亂放幾張圖片吧。

為了減少這幾個RTT,又想了各種辦法,然後復用連接的話,就可以做到0RTT,1RTT了。

就說這些吧,最後拋幾個名詞,有興趣自行網路學習:DTLS,HMAC,AEAD,重放攻擊,放大攻擊,是不是很高端?

Ⅱ 求大神幫我看一下這個文件的hash加密用的是什麼方法!

你確認packs.xml是以加密文件嗎
他是可讀取的,可能個源文件在網上
packs.xml中的網址指向一個很偏遠的BLOG社區

Ⅲ hash是什麼意思

Hash,一般翻譯做「散列」,也有直接音譯為」哈希「的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列演算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。

HASH主要用於信息安全領域中加密演算法,他把一些不同長度的信息轉化成雜亂的128位的編碼里,叫做HASH值. 也可以說,hash就是找到一種數據內容和數據存放地址之間的映射關系

了解了hash基本定義,就不能不提到一些著名的hash演算法,MD5 和 SHA1 可以說是目前應用最廣泛的Hash演算法,而它們都是以 MD4 為基礎設計的

Ⅳ bcrypt和hash加密演算法的區別

bcrypt,是一個跨平台的文件加密工具。由它加密的文件可在所有支持的操作系統和處理器上進行轉移。它的口令必須是8至56個字元,並將在內部被轉化為448位的密鑰。
Hash,一般翻譯做「散列」,也有直接音譯為「哈希」的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列演算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,所以不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。

Ⅳ 哈希的演算法是什麼

哈希演算法是一個廣義的演算法,也可以認為是一種思想,使用Hash演算法可以提高存儲空間的利用率,可以提高數據的查詢效率,也可以做數字簽名來保障數據傳遞的安全性。所以Hash演算法被廣泛地應用在互聯網應用中。

哈希演算法也被稱為散列演算法,Hash演算法雖然被稱為演算法,但實際上它更像是一種思想。Hash演算法沒有一個固定的公式,只要符合散列思想的演算法都可以被稱為是Hash演算法。

特點:

加密哈希跟普通哈希的區別就是安全性,一般原則是只要一種哈希演算法出現過碰撞,就會不被推薦成為加密哈希了,只有安全度高的哈希演算法才能用作加密哈希。

同時加密哈希其實也能當普通哈希來用,Git 版本控制工具就是用 SHA-1 這個加密哈希演算法來做完整性校驗的。一般來講越安全的哈希演算法,處理速度也就越慢,所以並不是所有的場合都適合用加密哈希來替代普通哈希。



Ⅵ OpenSSL 功能介紹

1 概述

OpenSSL 是一個安全套接字層密碼庫,囊括主要的密碼演算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。

OpenSSL是實現安全套接字層(SSL v2 / v3)和傳輸層安全(TLS v1)網路協議及其所需的相關加密標準的加密工具包。

OpenSSL:開源項目

三個組件:

openssl: 多用途的命令行工具,包openssl

libcrypto: 加密演算法庫,包openssl-libs

libssl:加密模塊應用庫,實現了ssl及tls,包nss

.openssl命令:

兩種運行模式:交互模式和批處理模式

opensslversion:程序版本號

標准命令、消息摘要命令、加密命令

標准命令:enc, ca, req, ...

查看幫助:openssl ?

可以通過openssl 來創建CA和頒發證書,文章 http://ghbsunny.blog.51cto.com/7759574/1964754

有做介紹,本文僅介紹openssl這個工具包的其他常用功能

2 案例介紹

2.1 對稱加密

工具:openssl  enc, gpg,文章 http://ghbsunny.blog.51cto.com/7759574/1964887 已經介紹

演算法:3des, aes, blowfish, twofish

.enc命令:

對稱密碼命令允許使用基於密碼或明確提供的密鑰的各種塊和流密碼來加密或解密數據。 Base64編碼或解碼也可以通過本身或加密或解密來執行。

The symmetric cipher commands allow data to be encrypted or decrypted using various block and stream ciphers using keys based on passwords or explicitly provided. Base64 encoding or decoding can also be performed either by itself or in addition to the encryption or decryption.

幫助:man enc

例子

加密文件

以下命令運行需要輸入一個密碼,當解密的時候需要輸入相同的密碼才能解密,這里新生成的文件後綴名不一定是cipher,可以自己指定

openssl enc  -e -des3 -a -salt -in testfile   -out testfile.cipher

解密文件

openssl  enc   -d -des3 -a -salt –in testfile.cipher -out testfile

2.2 公鑰加密

公鑰加密生成非對稱的密鑰

演算法:RSA, ELGamal

工具:gpg, openssl  rsautl(man rsautl)

數字簽名:

演算法:RSA, DSA, ELGamal

密鑰交換:

演算法:dh

DSA: Digital Signature Algorithm

DSS:Digital Signature Standard

RSA公鑰加密演算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。命名是取其名字首字母組合成RSA

RSA公鑰與私鑰主要用於數字簽名(Digital Signature)與認證(Authentication),我們一般也稱之為不對稱加密/解密。

2.2.1 生成密鑰對

幫助:man genrsa

.生成私鑰,這個生成密鑰的過程要掌握

openssl genrsa  -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS

私鑰文件生成後,建議把許可權改成600,保護,放在被其他人查看密碼信息

私鑰里的文件,如果被拿到,沒有通過des這關鍵字加密的話,就相當於是明文

這個命令執行的時候,要輸入八位數的密碼,當要使用這個私鑰的時候需要輸入密碼

(umask 077; openssl genrsa –out test.key  –des 2048)

括弧表示子進程,結束後,umask就會恢復未默認的值,umask的值使得其他人和組都沒有任何許可權,是為了保護生成的私鑰

2.2.2 從私鑰中提取出公鑰,導出公鑰

公鑰推不出私鑰,私鑰可以推出公鑰

openssl  rsa  -in PRIVATEKEYFILE –pubout  –out PUBLICKEYFILE

Openssl  rsa  –in test.key  –pubout  –out test.key.pub

公鑰是公開的,可以不設置許可權,以上是生成公鑰

2.2.3 公鑰加密文件

openssl rsautl -encrypt -in input.file -inkey pubkey.pem -pubin -out output.file

-in 指定被加密的文件

-inkey 指定加密公鑰文件

-pubin 表面是用純公鑰文件加密

-out 指定加密後的文件

例子:

openssl rsautl -encrypt -in ftpback -inkey test.key.pub -pubin -out ftpssl

2.2.4 私鑰解密文件

openssl rsautl -decrypt -in input.file -inkey key.pem -out output.file

-in 指定需要解密的文件

-inkey 指定私鑰文件

-out 指定解密後的文件

例子:

openssl rsautl -decrypt -in ftpssl -inkey test.key -out  ftpdec

2.3 單向加密

單向加密即獲取摘要

工具:md5sum, sha1sum, sha224sum,sha256sum…

openssl    dgst

dgst:摘要功能輸出所提供文件的消息摘要或十六進制形式的文件。 它們也可用於數字簽名和驗證。

The digest functions output the message digest of a supplied file or files in hexadecimal form. They can also be used for digital signing and verification.

.dgst命令:

幫助:man dgst

openssl  dgst  -md5 [-hex默認]  /PATH/SOMEFILE

openssl dgst  -md5 testfile

以上命令將文件生成一個固定長度的摘要值,演算法是md5,大小佔128bite

md5sum /PATH/TO/SOMEFILE

以上這兩個md5得到的結果是一樣的

.MAC: Message Authentication Code,單向加密(hash)的一種延伸應用,用於實現網路通信中保證所傳輸數據的完整性機制

MAC 消息認證碼,構造方法可以基於hash,也可以基於對稱加密演算法,HMAC是基於hash的消息認證碼。數據和密鑰作為輸入,摘要信息作為輸出,常用於認證。

源文檔

2.4 生成用戶密碼

passwd命令:

幫助:man sslpasswd

openssl  passwd  -1 -salt SALT

-1對應的就是hash的md5演算法

SALT:這里是鹽值,人為指定,使得同一密碼生成的加密值不一樣,最多8位,超過8位沒有意義,比如前面8位一樣,後面還有幾位數不一樣,這樣生成的密碼值是一樣的

openssl  passwd  -1 –salt centos

grub-md5-crypt同樣生成md5加密的口令,centos為鹽值

比如這里的密碼我都是輸入123,但是鹽值不一樣,一個是centos,一個是centos6,生成的加密值不一樣

2.5 生成隨機數

幫助:man sslrand

rand命令在播放隨機數生成器一次後輸出num偽隨機位元組。 與其他openssl命令行工具一樣,除了-rand選項中給出的文件外,PRNG種子使用文件$ HOME / .rnd或.rnd。 如果從這些來源獲得足夠的播種,將會寫回新的$ HOME / .rnd或.rnd文件。

The rand command outputs num pseudo-random bytes after seeding the random number generator once.  As in other openssl command line tools, PRNG seeding uses the file $HOME/.rnd or .rnd in addition to the files given in the  -rand option.  A new $HOME/.rnd or .rnd file will be written back if enough seeding was obtained from these   sources.

openssl  rand -base64|-hex NUM

指定數字生成隨機數,如果是-hex 後面的數值比如6,那麼生成的長度是12位,因為hex生成的隨機數是16進制組合的數,hex 後面的num是位元組數,一個16進制數佔用4位,半個位元組

base後面可以生成隨機密碼

base64 生成隨機的數,可以用任何字元,也可以把圖片保存成base64的格式,通過base64生成的圖片,可以

用base64來還原出圖片

NUM: 表示位元組數;-hex時,每個字元為十六進制,相當於4位二進制,出現的字元數為NUM*2

3 總結

openssl還有很多用法,本文僅單純介紹了其中一部分,更多用法請使用幫助 man openssl 進行查看

Ⅶ hash加密代碼

用md5的算啦:

public static string MD5(string Sourcein)
{
MD5CryptoServiceProvider MD5CSP = new MD5CryptoServiceProvider();
byte[] MD5Source = System.Text.Encoding.UTF8.GetBytes(Sourcein);
byte[] MD5Out = MD5CSP.ComputeHash(MD5Source);
return Convert.ToBase64String(MD5Out);
}

Ⅷ 開發中常見的加密方式及應用

開發中常見的加密方式及應用

一、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記錄協議之上,用於在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密密鑰等。

熱點內容
怎麼關掉華為安卓檢測 發布:2025-07-14 18:15:37 瀏覽:150
root創建ftp 發布:2025-07-14 17:55:04 瀏覽:269
華為路由器怎麼搭建網路存儲 發布:2025-07-14 17:48:35 瀏覽:36
黨員管理系統的伺服器地址 發布:2025-07-14 17:45:53 瀏覽:329
主建資料庫 發布:2025-07-14 17:44:59 瀏覽:737
fwritephp 發布:2025-07-14 17:44:53 瀏覽:96
吃蠟燭解壓 發布:2025-07-14 17:44:51 瀏覽:520
皓影壓縮比 發布:2025-07-14 17:44:17 瀏覽:544
java專業培訓學校 發布:2025-07-14 17:38:57 瀏覽:866
騰訊視頻需要安卓最低什麼版本 發布:2025-07-14 17:38:21 瀏覽:131