• 【加密】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=

  • 相关阅读:
    格式化金额以及数字金额转为大写金额【前端】
    前端使用 validate , 根据条件进行动态的验证添加
    尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行
    在VS 一切正常,发布到IIS出现问题 [System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本]
    公钥私钥加密解密数字证书数字签名详解【转】
    vs 2012/2013 等工具中,使用正则表达式,查找、替换
    javascript 正则(将数字转化为三位分隔的样式)【转】
    IE8 下面通过滤镜的方式进行图片旋转
    MYSQL5.5安装
    HTTP协议
  • 原文地址:https://www.cnblogs.com/lenlen-de/p/3436144.html
Copyright © 2020-2023  润新知