首页 > 编程知识 正文

rsa加密在线,rsa加密算法密钥长度

时间:2023-05-04 14:01:15 阅读:156154 作者:2730

RSA加密算法在1977年由Ron

Rivest、Adi Shamirh和LenAdleman是在(麻省理工学院)开发的。

RSA因开发他们三人的名字而得名。 RSA是目前最具影响力的公钥加密算法,目前

所有已知的密码攻击都被ISO推荐为公钥数据加密标准。 RSA算法基于非常简单的数论事实:

将两个大素数相乘很简单,但此时想要对乘积进行因式分解非常困难,所以可以公开乘积

作为加密密钥。

RSA算法是第一个既可用于加密又可用于数字签名的算法,而且易于理解和操作。 RSA的安全性依赖于大规模

的因子分解,但理论上并没有证明RSA解读的难度和大数分解的难度是等价的。 这意味着RSA的严重缺陷

理论上把握其保密性能如何,密码学界很多人倾向于因子分解不是NP问题。

要使用一对密钥中的一个加密,必须用另一个密钥解密。

RSA的算法有三个参数: n、e1和e2。

这里,n为两个大的素数p、q的乘积,n的2进制表现时占有的位数为所谓的密钥长度。

e1和e2是一对相关值,e1可以任意取,但要求e1和(p-1 ) * (q-1 )相互平行;

进而选择e2,并要求(e2*e1 ) mod ) (P-1 ) ) Q-1 ) )=1。

(n和e1 ),(n和e2 )是密钥对。 RSA解密算法完全相同,

设a为明文,b为密文,则A=B^e1 mod n; B=A^e2 mod n;

e1和e2可以互换使用,即A=B^e2 mod n; B=A^e1 mod n;

生成密钥:

voidRSA_init(RSA_context*CTX,int padding,int hash_id );

intRSA_gen_key(RSA_context*CTX,int

(*f_rng ) ) void

*、void *p_rng、

int nbits,int exponent;

公钥操作intRSA_public(RSA_context*CTX,

const unsigned char *input,

unsigned char *output )

私钥操作

intRSA_private(RSA_context*CTX,

const unsigned char *input,

unsigned char *output )

这是对字符数组zth进行公钥加密和私钥加密的结果

rsa_public op=

9f 671 AFC 88 df3d56 EFE 087417193 D6 ff 89 e9B4 B4 a 6

e0 bc 34 2a 7e 9a 9f 5a 54

793 f 3478 b 8825 FD 54d 685 CD 43 b 82637 d 21e 72368 de

51 38 70 7 e0 ae c7 5f 65 db

FB 3939 d9b 77173975 ad 41386 df 09 af 89 b 1416 F2 fad

b7 cf cf 89 15 de ba 27

61 AAC 59 ba6C3 f2c 496 c0CAE 2ee 884613 a4 bef 8951 d4e

d4 20 a1 c6 f6 39 6c 7b 1e 8

rsa_private op=

a 3550 EB a3 b0e 670 CBC FB 2e C1 ba 9e 72 c 41 BF 582 fc 8528 e

da 76 2c e9 94 9b 29 c7 40

b4a8c 33214234 b 9e 8d 995 c 713 f 13bb 33189 e 32693 d 4

b5 5d cd b f d9 c2 2d 72

B8a 7e4FB d6d 52e 34 a 2731 FD 43 a 82169514 df 7d 667251 c

49 69 d8 38 2b 1c 59 10 76

4e 945 b 346 d 52784 be2 F6 e F3 add 13677 efb 669 e 6486

62 96 82 fe 1d 6f 42 3e d5

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。