RSA算法

計算機(jī)中常見的加解密技術(shù)分為兩類式镐,即對稱加密(加密和解密都使用相同的密鑰key)和非對稱加密(加密和解密使用不同的密鑰key)。對于對稱加密技術(shù)路狮,實現(xiàn)比較簡單步绸,但是由于信息傳送雙方都要接觸到這個key,所以密鑰key更加容易泄露显拜。
而對于非對稱加密(又稱為公開密鑰加密,就是RSA)中衡奥,不再只有一個密鑰key了,而是有一對(一個公鑰PK和密鑰SK)远荠,傳送過程使用PK矮固,而解密使用密鑰,相對來說更加安全譬淳。
非對稱加密的方式可以使通信雙方無須事先交換密鑰就可以建立安全通信档址,因此被廣泛應(yīng)用于身份認(rèn)證,數(shù)字簽名等信息交換領(lǐng)域邻梆。

1守伸、生成公鑰和私鑰

步驟如下:

1、隨意選擇兩個比較大的素數(shù) P 和 Q 浦妄,P 不等于Q
2尼摹、將 P,Q兩個素數(shù)相乘得到一個數(shù) N,即N = PQ
3、將 P,Q 分別減一剂娄,再相乘蠢涝,得到一個數(shù) T,即T = (P-1)(Q-1)
4、選擇一個整數(shù) E,作為一個密鑰宜咒,使 E與 T互質(zhì)(即 E與 T的最大公約數(shù)為1)惠赫,并且E必須小于T。
5故黑、根據(jù)公式DE mod T=1儿咱,計算出D的值庭砍,作為另外一個密鑰。
6混埠、通過上面步驟計算出來的N,E怠缸,D這三個數(shù)據(jù),其中的(N,E)作為公鑰钳宪,(N,D) 作為私鑰(當(dāng)然這兩者是可以互換的)揭北。

生成公鑰和私鑰之后,發(fā)送方將公鑰發(fā)送給另外一方吏颖,接收方接收到公鑰之后可以使用公鑰對數(shù)據(jù)進(jìn)行加密搔体,再將數(shù)據(jù)發(fā)回原本的發(fā)送方,那么現(xiàn)在發(fā)送方就可以將數(shù)據(jù)解密得到原本的數(shù)據(jù)了半醉。

2疚俱、用公鑰(N,E)加密數(shù)據(jù)

2、用私鑰(N,D)解密數(shù)據(jù)

3缩多、具體的程序程序

為了計算的方便呆奕,我們?nèi)蓚€比較小的素數(shù)11和13來說明,即:

P = 11
Q = 13

    package Algorithm;
    public class RSA {

    private int N;
    private int E;
    private int D;

    public RSA(int P,int Q){
        N = P * Q;
        int T = (P-1) * (Q-1);
        //簡單的互質(zhì)方法衬吆,可以繼續(xù)優(yōu)化
        E  = T - 1;
        int i=0;
        while(true){
            if(((T * i) + 1) % E == 0){
                D = ((T * i) + 1) / E;
               break;
            }
            i++;
        }
    }

    public int addPassWord(int M){
        return Pow(M,E,N);
    }

    public int removePassWord(int C){
        return Pow(C,D,N);
    }

    private int Pow(int a,int b,int c){
        int rec = 1;
        for(int i=0;i<b;++i){
            rec = (rec * a) % c;
        }
        return rec;
    }

    public static void main(String[] args) {
        RSA rsa = new RSA(11,13);
        System.out.println("PK:(" + rsa.N + "," + rsa.E + ")");
        System.out.println("SK:(" + rsa.N + "," + rsa.D + ")");
        int M = 35;
        int C = rsa.addPassWord(M);
        System.out.println("密文:" + C);
        System.out.println("原文:" + rsa.removePassWord(C));
    }
    }

當(dāng)然這樣的程序只能處理較小的數(shù)據(jù)梁钾,大數(shù)據(jù)時應(yīng)該自己寫大數(shù)據(jù)處理方法,來處理大數(shù)冪運(yùn)算逊抡。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末姆泻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子秦忿,更是在濱河造成了極大的恐慌麦射,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灯谣,死亡現(xiàn)場離奇詭異潜秋,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)胎许,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門峻呛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辜窑,你說我怎么就攤上這事钩述。” “怎么了穆碎?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵牙勘,是天一觀的道長。 經(jīng)常有香客問我,道長方面,這世上最難降的妖魔是什么放钦? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮恭金,結(jié)果婚禮上操禀,老公的妹妹穿的比我還像新娘。我一直安慰自己横腿,他們只是感情好颓屑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著耿焊,像睡著了一般揪惦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搀别,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天丹擎,我揣著相機(jī)與錄音宠纯,去河邊找鬼纺非。 笑死盼忌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的榜苫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼翎冲,長吁一口氣:“原來是場噩夢啊……” “哼垂睬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起抗悍,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤驹饺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缴渊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赏壹,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年衔沼,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝌借。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡指蚁,死狀恐怖菩佑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凝化,我是刑警寧澤稍坯,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站搓劫,受9級特大地震影響瞧哟,放射性物質(zhì)發(fā)生泄漏袜蚕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一绢涡、第九天 我趴在偏房一處隱蔽的房頂上張望牲剃。 院中可真熱鬧,春花似錦雄可、人聲如沸凿傅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽聪舒。三九已至,卻和暖如春虐急,著一層夾襖步出監(jiān)牢的瞬間箱残,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工止吁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留被辑,地道東北人。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓敬惦,卻偏偏與公主長得像盼理,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子俄删,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容