国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
非對(duì)稱加密過程詳解(基于RSA非對(duì)稱加密算法實(shí)現(xiàn))
1、非對(duì)稱加密過程:
        假如現(xiàn)實(shí)世界中存在A和B進(jìn)行通訊,為了實(shí)現(xiàn)在非安全的通訊通道上實(shí)現(xiàn)信息的保密性、完整性、可用性(即信息安全的三個(gè)性質(zhì)),A和B約定使用非對(duì)稱加密通道進(jìn)行通訊,具體過程如下:
        說明:
        國內(nèi)目前使用雙證書體系,即用戶同時(shí)擁有簽名證書、加密證書兩張證書。簽名證書是用戶的身份認(rèn)證,是和CA協(xié)商的結(jié)果,可用于對(duì)用戶A的身份驗(yàn)證;加密證書是用來對(duì)信息進(jìn)行加密,是用戶和秘鑰管理系統(tǒng)生成。我們?cè)谶@里假設(shè)都適合CA進(jìn)行交互。
        ①:此過程是生成公鑰私鑰的過程,我們這里基于RSA算法實(shí)現(xiàn),RSA算法的詳細(xì)說明在后面講解。
        ②:此過程是CA對(duì)用戶的身份進(jìn)行簽名,目的驗(yàn)證A的身份。這樣在A與B通訊的過程中,A可以把自己的數(shù)字簽名發(fā)給B,B得到此數(shù)字簽名后就可以通過CA的公鑰對(duì)其進(jìn)行解密并進(jìn)行身份驗(yàn)證,具體過程在后面講解。
        ③④同理。
        ⑤:A對(duì)要傳輸?shù)男畔⑦M(jìn)行加密并傳輸,B接受到以后進(jìn)行解密的過程。
 
2、RSA算法:
        RSA原理:RSA算法基于一個(gè)十分簡單的數(shù)論事實(shí):將兩個(gè)大素?cái)?shù)相乘十分容易,但是想要對(duì)其乘積進(jìn)行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。
        算法:
        (1)選擇兩個(gè)不同的大素?cái)?shù)p和q;
        (2)計(jì)算乘積n=pq和Φ(n)=(p-1)(q-1);
        (3)選擇大于1小于Φ(n)的隨機(jī)整數(shù)e,使得gcd(e,Φ(n))=1;注:gcd即最大公約數(shù)。
        (4)計(jì)算d使得d*e=1mod Φ(n);注:即d*e mod Φ(n) =1。
        (5)對(duì)每一個(gè)密鑰k=(n,p,q,d,e),定義加密變換為Ek(x)=xe mod n,解密變換為Dk(x)=yd mod n,這里x,y∈Zn;
        (6)p,q銷毀,以{e,n}為公開密鑰,{d,n}為私有密鑰。
        實(shí)例:
        1. 假設(shè)p = 3、q = 11(p,q都是素?cái)?shù)即可。),則N = pq = 33;
        2. r =Φ(n)= (p-1)(q-1) = (3-1)(11-1) = 20;
        3. 根據(jù)gcd(e,Φ(n))=1,即gcd(e,20)=1,令e=3,則,d = 7。(兩個(gè)數(shù)交換一下也可以。)

  到這里,公鑰和密鑰已經(jīng)確定。公鑰為(N, e) = (33, 3),密鑰為(N, d) = (33, 7)。

        代碼實(shí)現(xiàn):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class SimpleRSA {
    /**
     * 加密、解密算法
     * @param key 公鑰或密鑰
     * @param message 數(shù)據(jù)
     * @return
     */
    public static long rsa(int baseNum, int key, long message){
        if(baseNum < 1 || key < 1){
            return 0L;
        }
        //加密或者解密之后的數(shù)據(jù)
        long rsaMessage = 0L;
           
        //加密核心算法
        rsaMessage = Math.round(Math.pow(message, key)) % baseNum;
        return rsaMessage;
    }
    public static void main(String[] args){
        //基數(shù)
        int baseNum = 3 * 11;
        //公鑰
        int keyE = 3;
        //密鑰
        int keyD = 7;
        //未加密的數(shù)據(jù)
        long msg = 24L;
        //加密后的數(shù)據(jù)
        long encodeMsg = rsa(baseNum, keyE, msg);
        //解密后的數(shù)據(jù)
        long decodeMsg = rsa(baseNum, keyD, encodeMsg);
           
        System.out.println('加密前:' msg);
        System.out.println('加密后:' encodeMsg);
        System.out.println('解密后:' decodeMsg);
    }

  

        結(jié)果:這樣CA就保存了用戶的公鑰,其他任何人想法送給此用戶信息,只需查詢?cè)~公鑰,加密發(fā)送即可,而此用戶用只有自己知道的秘鑰解密。
 
3、簽名證書:
        簽名證書的用途:加入有A用戶向B用戶發(fā)送了信息“A love you”,B接收到之后怎么確定就是A發(fā)送的呢(因?yàn)橹虚g人攻擊中,假如C截獲了A發(fā)送的信息后,改成“C love you”,B是無法確定這兩個(gè)信息的發(fā)送者,因他她們都同樣用B的工要加密),于是產(chǎn)生了簽名證書技術(shù)。
        簽名證書是由CA用自己的私鑰對(duì)用戶的信息進(jìn)行加密,并把發(fā)給用戶的,用戶可以在發(fā)送信息的過程中附加上自己的簽名證書,讓接受者驗(yàn)證信息的來源。當(dāng)接受者接受到發(fā)送者的簽名證書后即可用ca的公鑰解密驗(yàn)證發(fā)送者的身份信息。
 
4、信息傳輸:
   過程:
        A. Alice 準(zhǔn)備好要傳送的數(shù)字信息(明文)。

        B. Alice 對(duì)數(shù)字信息進(jìn)行哈希(hash)運(yùn)算,得到一個(gè)信息摘要。

        C. Alice 用自己的私鑰(SK)對(duì)信息摘要進(jìn)行加密得到Alice 的數(shù)字簽名,并將其附在數(shù)字信息上。
        D. Alice 用Bob 的公鑰(PK)對(duì)剛才隨機(jī)產(chǎn)生的加密密鑰進(jìn)行加密,將加密后的密文傳送給Bob
        E. Bob 收到Alice 傳送過來的密文,用自己的私鑰(SK)對(duì)密文解密。

        F. Bob 用Alice 的公鑰(PK)對(duì)Alice 的數(shù)字簽名進(jìn)行解密,得到信息摘要。

        G. Bob 用相同的hash 算法對(duì)收到的明文再進(jìn)行一次hash 運(yùn)算,得到一個(gè)新的信息摘要。
        H. Bob 將收到的信息摘要和新產(chǎn)生的信息摘要進(jìn)行比較,如果一致,說明收到的信息沒有被修改過。
 
        采用數(shù)字簽名,能完成這些功能:
       (1)確認(rèn)信息是由簽名者發(fā)送的; 
        (2)確認(rèn)信息自簽名后到收到為止,未被修改過; 
       (3)簽名者無法否認(rèn)信息是由自己發(fā)送的。
        
        但是上述過程存在問題,例如有用戶C竊取A的電腦信息,把B的公鑰修改成了自己的公鑰,A用此公鑰加密信息發(fā)給B,C在中間截獲這個(gè)數(shù)據(jù)就可以獲取這些私密信息。怎么應(yīng)對(duì)這種情況呢?簽名證書就派上用場了。
         證書中心用自己的私鑰,對(duì)每一個(gè)用戶的、的公鑰和一些相關(guān)信息一起加密,生成'數(shù)字證書'(Digital Certificate)。發(fā)送者在發(fā)送信息之前如果想核對(duì)接受者的公鑰,只需用CA的公鑰對(duì)B的簽名證書進(jìn)行解密確認(rèn)即可。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
密碼學(xué)復(fù)習(xí)題
非對(duì)稱加密rsa算法
密碼學(xué)基本介紹
【RSA原理1】淺談
非對(duì)稱加密(RSA、DH密鑰交換算法、數(shù)字簽名)
深入研究SSL【第二章 part-1】-SSL握手協(xié)議的研究
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服