RSA加密算法

RSA加密算法简史

  RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。

公钥与密钥的产生

假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息。她可以用以下的方式来产生一个公钥和一个私钥

随意选择两个大的质数pqp不等于q,计算N=pq

根据欧拉函数,求得r = (p-1)(q-1)

选择一个小于 r 的整数 e,求得 e 关于模 r 的模反元素,命名为d。(模反元素存在,当且仅当e与r互质)

 p  q 的记录销毁。

(N,e)是公钥,(N,d)是私钥。Alice将她的公钥(N,e)传给Bob,而将她的私钥(N,d)藏起来。

/**

     *  加密、解密算法

     * @param key 公钥或密钥

     * @param message 数据

     * @return

     */  

public static long rsa(int baseNum, int key, long message){  

    if(baseNum < 1 || key < 1){  

        return 0L;

    }  

    //加密或者解密之后的数据  

    long rsaMessage = 0L;  

    //加密核心算法 

    rsaMessage = Math.round(Math.pow(message, key)) % baseNum;  

    return rsaMessage;

//加密后的数据  

long encodeMsg = rsa(baseNum, keyE, msg);  

//解密后的数据  

long decodeMsg = rsa(baseNum, keyD, encodeMsg); 

来自cnblog

你可能感兴趣的:(RSA加密算法)