码迷,mamicode.com
首页 > 其他好文 > 详细

RSA加密:利用模数和指数生成公钥加密

时间:2014-08-21 01:29:13      阅读:594      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   strong   ar   

引子
    目前做一款金融产品,由于涉及到资金安全,采用动态公钥的方式,即客户端每次登录服务端返回一个不同的XML串,由公钥的模数和指数构成,我需要用这个串生成公钥加密相关信息。
服务端返回的XML串形如:“<RSAKeyValue><Modulus>wVwBKuePO3ZZbZ//gqaNuUNyaPHbS3e2v5iDHMFRfYHS/bFw+79GwNUiJ+wXgpA7SSBRhKdLhTuxMvCn1aZNlXaMXIOPG1AouUMMfr6kEpFf/V0wLv6NCHGvBUK0l7O+2fxn3bR1SkHM1jWvLPMzSMBZLCOBPRRZ5FjHAy8d378=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue> ”
 推荐看下这篇博客快速了解一下RSA:http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html

问题

  • 对RSA不了解。
  • 如何用所谓的模数和指数生成公钥来加密相关信息。

过程

  熟悉RSA。先看下openssl库中RSA结构体的定义。

bubuko.com,布布扣
struct rsa_st
{
/* The first parameter is used to pickup errors where
* this is passed instead of aEVP_PKEY, it is set to 0 */
int pad;
long version;
const RSA_METHOD *meth;
/* functional reference if ‘meth‘ is ENGINE-provided */
ENGINE *engine;
BIGNUM *n;
BIGNUM *e;
BIGNUM *d;
BIGNUM *p;
BIGNUM *q;
BIGNUM *dmp1;
BIGNUM *dmq1;
BIGNUM *iqmp;
/* be careful using this if the RSA structure is shared */
CRYPTO_EX_DATA ex_data;
int references;
int flags;

/* Used to cache montgomery values */
BN_MONT_CTX *_method_mod_n;
BN_MONT_CTX *_method_mod_p;
BN_MONT_CTX *_method_mod_q;

/* all BIGNUM values are actually in the following data, if it is not
* NULL */
char *bignum_data;
BN_BLINDING *blinding;
BN_BLINDING *mt_blinding;
};
View Code

  开始推荐的博客中有关于RSA模数和指数的介绍,对应到结构中分别是其中的 n 和 e ,模反数对应d,最开始的质数因子对应 p和 q。n和e决定了公钥,n和d决定了私钥。结构体中其它元素不论,能知道的是可以由模数和指数生成公钥。

 

  待续。。。

 

RSA加密:利用模数和指数生成公钥加密,布布扣,bubuko.com

RSA加密:利用模数和指数生成公钥加密

标签:style   blog   http   color   os   io   strong   ar   

原文地址:http://www.cnblogs.com/tml839720759/p/3926006.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!