【加密】RSA加密之算法

RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。

RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。

RSA的算法涉及三个参数,n、e1、e2。

RSA的公钥、私钥的组成,以及加密、解密的公式可见于下表:

公钥KU

n:两素数p 和q 的乘积(p 和q保密)

e1:与(p-1)*(q-1)互质

f(n)=(p-1)*(q-1)

1<e1<f(n)

私钥KR

n:两素数p 和q 的乘积(p 和q保密)

e2:e1`-1mod f(n)

(e2*e1)mod f(n)=1 或 e2*e1≡1 mod f(n) 即:e2≡e1`-1mod f(n)

≡是数论中表示同余的符号。(e2*e1)mod f(n)=1 mod f(n)=1

加密

A≡Be1 mod n

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

解密

B≡Ae2 mod n

公钥KU=( n,e1),私钥KR=(n,e2)

加密时,先将明文变换成0至n-1的一个整数B。若明文较长,可先分割成适当的组,然后再进行交换。

设密文为A,则加密过程为:A≡Be1 mod n, 解密过程为:B≡Ae2 mod n。

 

实例描述:

假设用户A需要将明文“key”通过RSA加密后传递给用户B,过程如下:

1)设计公私密钥(n,e1)(n,e2)

令p=3,q=11,则n=33 ;f(n)=(p-1)*(q-1)=20;取e1=3,(3与20互质),(3*e2)mod 20=1,e2=7

从而我们可以设计出一对公私密钥,加密密钥(公钥)为:KU =( n,e1)=(33,3),解密密钥(私钥)为:KR =(n,e2)=(33,7)。

2)英文数字化。

将明文信息数字化,并将每块两个数字分组。假定明文英文字母编码表为按字母顺序排列数值,即:

 

则得到分组后的key的明文信息为:11,05,25。

3)明文加密

A1e2 mod n= 117mod 33=11

A2e2 mod n= 317mod 33=05

A3e2 mod n= 167mod 33=25

因此,得到相应的密文信息为:11,31,16。

4)密文解密。

A1e2 mod n= 117mod 33=11

A2e2 mod n= 317mod 33=05

A3e2 mod n= 167mod 33=25

用户B得到明文信息为:11,05,25。根据上面的编码表将其转换为英文,我们又得到了恢复后的原文“key”。 

 

公钥:

<RSAKeyValue>

<Modulus>3eAe9tZz8P91mcmLscZin980wDmhwfI6gJcOm4hrCbZ8MzemFweABxDQdaYh+nKUKX6ln+QFc5FuBVdOdRRuWK48SN3t9wWjtI/4M8CdiqT1iI1JtkFWDmVfh1JPJSNcMPQyHOo79d6XgMacMM6SrsYGiczdVSzAxOx1jIyvQ70=</Modulus>

<Exponent>AQAB</Exponent>

</RSAKeyValue>

 

私钥:

<RSAKeyValue>

<Modulus>3eAe9tZz8P91mcmLscZin980wDmhwfI6gJcOm4hrCbZ8MzemFweABxDQdaYh+nKUKX6ln+QFc5FuBVdOdRRuWK48SN3t9wWjtI/4M8CdiqT1iI1JtkFWDmVfh1JPJSNcMPQyHOo79d6XgMacMM6SrsYGiczdVSzAxOx1jIyvQ70=</Modulus>

<Exponent>AQAB</Exponent>

<P>9Ih/GtzEYNYyacKejB8nLqfS5NfztgxILpFieJo1WoXRx4ILs1tpQDSGolyaGvN6frnrVZr9+MyoWuAWkyv2+Q==</P>

<Q>6EehIvbtcOr8ch0XKrwoBtDgvdL+To6I1UcgGuHvQBbSak3eaYl4sxGtBx93lF+H0TJLyis1f73T81gQyOjP5Q==</Q>

<DP>YXLH3GegJssVegoh7ss3bSNaKvJYX/MTDOPJLzCdFH8Bs5UCnq5OClUkVi27CASBi2ECBLJoha7hZJ2qwWmi2Q==</DP>

<DQ>fCMz8ezHzw425oG3jOZL+gCN68UkljVE2b8OYG+ZHsZTo+6DzCFlOUZcE690h/5aJqpbqOtYxzFbYfUR213ZJQ==</DQ>

<InverseQ>W4qjq1P+6m59/YVAMmkNBf3zLTYbPnN1RxxJWIQY5H4HCbIG+fRBwgfFkvtAYyJP59d4h827VjbnzDPjWpWeOA==</InverseQ>

<D>O1E81f8VdhvF4/yHFVsVaOpynuWJgmFxFInOBPTesPURlVvOUp/VsY3kPV/R+7QAOmu6edmrP29k+5aQyipRKXLJuL685z1s1RQF7ERNojg3JnEnSw11fX6Ca1lc7eqhU09wk2ZkXlXuIXCk8s0W59OXS/0sjv0v+hAcF957nuE=</D>

</RSAKeyValue>

 

公钥:

BgIAAACkAABSU0ExAAQAAAEAAQC/A1j2YA9w0ZQe6/0d000kdHqDEXzYDeItfhgteqfiEHfon0pnP3gOoVqQPN1V3e6ZZ0dFOmtcugPPMNoQ5QVILPXQlMwDY/h+9km2MdsZBKKGo9CJgK7Gm6g5sZ/V0IahK4bbc3aYjpFf8w6ji1dQcRIPUFqFgmYfFWmSzpIiwA==

私钥:

BwIAAACkAABSU0EyAAQAAAEAAQC/A1j2YA9w0ZQe6/0d000kdHqDEXzYDeItfhgteqfiEHfon0pnP3gOoVqQPN1V3e6ZZ0dFOmtcugPPMNoQ5QVILPXQlMwDY/h+9km2MdsZBKKGo9CJgK7Gm6g5sZ/V0IahK4bbc3aYjpFf8w6ji1dQcRIPUFqFgmYfFWmSzpIiwCEx1trIQlrR6eHc9ygIZdHmmDu/LWOHH5d+8XhDwuDrPmBl4JWfwP957JNfytqFcUH2fHrlVLrYJYWj/4TK+PbfOIRmp7hoFIo41HcvalT7SVg1Gv3CuWmJt9OxLXZTAPHzYeMD3/lQqqIhIJ+K4jESzkngY7VifIz2nAECnCjHIY5yKnx0zBSPj9AzFDHK1p/3GqgrBmDIGZyVe0EQ3DH+pIWXpHzHpYqw82qm4gK092H2Ti9tcGoHv/G7idqy2dPT21+HCU+Rouj+XcR7qHczBmvvSKdyJbcwm41A1MkvKgXzK72kOzfd+RR9od0jNxJ4s5xZ+i8TExvvy4xvmJH6LPhTRaqzDvI5LsQf7GXUlC2JYFJfjdN1mGo65LkgCW+6b3fD/TMTDqfFZcoa6dgk4nlYGfHsqeNJAuC9RGAngZV5dtKRqyAyr1HnjU4RrLBnkm6bRln1K0OFQWtBwHZQNs8n2FGNlZ1bFQ5S6XqnDLpkbKM53XQ83zt7G7r3Dj83QBiYyfBSnC5jgLK+HEvxegVLiVfwIo89KPy1yQFAp4FdxBqoJB9AXem2PAuZoaoOzmIEj2w5YTKsw6gkB50=

转载于:https://www.cnblogs.com/lenlen-de/p/3436144.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值