typedef struct RSAPublicKey {
int len; /* Length of n[] in number of uint32_t */
uint32_t n0inv; /* -1 / n[0] mod 2^32 */
uint32_t n[RSANUMWORDS]; /* modulus as little endian array */
uint32_t rr[RSANUMWORDS]; /* R^2 as little endian array */
} RSAPublicKey;
来点基础的:)
参考:http://bbs.pediy.com/showthread.php?t=101391
RSA的算法涉及三个参数,n、e、d。
其中,n是两个大质数p、q的积。n的二进制表示时所占用的位数,就是所谓的密钥长度。
e和d是一对相关的值,e可以任意取,但要求满足e<(p-1)*(q-1)并具 e与(p-1)*(q-1)互质(就是最大公约数为1);
再选择d,要求(d*e)mod((p-1)*(q-1))=1。
(n及e),(n及d)就是密钥对。
RSA加解密的算法完全相同,设M为明文,c为密文,则:
加密:C=M^e mod n;
解密:m=c^d mod n;
注:上面两式中的e和d可以互换。
n d两个数构成公钥,可以告诉别人;
n e两个数构成私钥,e自己保留,不让任何人知道。