首页
社区
课程
招聘
[讨论]rsa公钥提取方法
发表于: 2009-10-14 09:21 9069

[讨论]rsa公钥提取方法

2009-10-14 09:21
9069
本书中247页倒数第二行中提到“公钥可以从已签名数据中提取”
rsa类有提取公钥的方法吗? (好像没有)
那用什么方法提取签名数据中公钥呢?
有知道的朋友说说操作方法,谢谢!

//私钥
<RSAKeyValue><Modulus>oMKny8OPBTAI4qmLTTsAGlQkPVGUCr1OQht2XRCoDG09hcXl3+SO98bVLjYZLda2uXRXWw0MBSJJug7M27sjfhsZkFd+fFLXzVd2D7JbcoGb5tmKdThsiH2mQllJY0aimnQoDrz9F/o3pbb2Q+LFNKiMlLhHW/z7KDbqk/M7+AE=</Modulus><Exponent>AQAB</Exponent><P>3PjOU+kuPMVKfWje66gP3mQGgcRzcRFaVBCwdBFlAXki50rNz12CaAajtn9Bt24y05Gjs2wqtiLd51Z8L0jQxw==</P><Q>uj5seFOUfGrEe0l80bNDpD/jV8xiU3+jc60DExnw8EaOtzdCvVDy5ONWl/AsEYtHy6lBKnw/rO1Y2fZ2xjk49w==</Q><DP>amClA6RYDA12hNU9q/kmWouQzlwCr0YJVDsMl3PgSktE0FAksFV1+BpqKested7lPRD52+CQ10oFxd7Ovfyx9Q==</DP><DQ>H4btqbjMS/tu40ffX0gvTSCbhYNNqcDTlINXH+amSKZJBm7OV2nalDB/uhyn+RhQwQMXyu9ZgBZ1kgAMvyV0pQ==</DQ><InverseQ>b3AzgVBNHQj5Z4tNGsn/Fp081Im9agRLlfHSA4ynsd45+BxM8PS9I3j0bpDvvqbUSgsbpNVtAPzPBk4P+fQt3g==</InverseQ><D>KrkwsNVrB/zpD5vxWngIofaknus0RdpjluwHe9o2Xv8VL50VZ3gtiqn788kKzgTXENhbcuY3wJGJOHpAdVD5sFi4aPWWZQXx74Tty8Cb5KDsNP+uTnMS8H1Brdsng3GA0FIfSDt8Wn1mO9yOoQ2/99QMMoj9XIYES2Fvn95ucGU=</D></RSAKeyValue>

//公钥
<RSAKeyValue><Modulus>oMKny8OPBTAI4qmLTTsAGlQkPVGUCr1OQht2XRCoDG09hcXl3+SO98bVLjYZLda2uXRXWw0MBSJJug7M27sjfhsZkFd+fFLXzVd2D7JbcoGb5tmKdThsiH2mQllJY0aimnQoDrz9F/o3pbb2Q+LFNKiMlLhHW/z7KDbqk/M7+AE=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>

// 密文
?慄対ь謹?]|廗眓翤侩? ?雙稻 Z!>谳
3w?﨤阥ζ鋦胀R3荝?<锪錳嚃饌        Ab襺b蹽        :fk?xF?z?72}5漽*}i 耚騁dJF[9 ?8@

// 明文
www.wade.cn

// 加密解密程序代码
        private void button20_Click(object sender, EventArgs e)
        {
            // 加密
            byte[] p=Encoding.UTF8.GetBytes("www.wade.cn");
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            // 导入公钥
            StreamReader reader = new StreamReader("c:\\pris.xml");
            string pubstr = reader.ReadToEnd();
            rsa.FromXmlString(pubstr);
      
            // 生成rsa密钥(包括public和private)
            /*
            string pristr = rsa.ToXmlString(true);
            string pubstr = rsa.ToXmlString(false);

            Stream pris = File.Create("c:\\pris.txt");
            pris.Write(Encoding.UTF8.GetBytes(pristr), 0, pristr.Length);
            pris.Close();

            Stream pubs = File.Create("c:\\pubs.txt");
            pubs.Write(Encoding.UTF8.GetBytes(pubstr), 0, pubstr.Length);
            pubs.Close();
            */
            byte[] o=rsa.Encrypt(p, false);

            Stream ss=File.Create("c:\\pubout.txt");
            ss.Write(o,0,o.Length);
            ss.Close();
      
           MessageBox.Show ("over");
        }

        private void button21_Click(object sender, EventArgs e)
        {
            // 解密
            Stream s = File.Open("c:\\2.txt", FileMode.Open);
            byte[] c = new byte[s.Length];
            s.Read(c,0,c.Length);
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            StreamReader reader = new StreamReader("c:\\pris.xml");
            string privatestr = reader.ReadToEnd();
            rsa.FromXmlString(privatestr);
            byte[] o = rsa.Decrypt(c, false);
            // 显示明文
            MessageBox.Show(Encoding.UTF8.GetString(o));
        }

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 5275
活跃值: (451)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
2
网上搜到的,不知道是不是你说的。

        public void CreateRSAKey()   
        {   
  
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();   
            RSAParameters keys = rsa.ExportParameters(true);   
            String pkxml = "<root>\n<Modulus>" + ToHexString(keys.Modulus) + "</Modulus>";   
            pkxml += "\n<Exponent>" + ToHexString(keys.Exponent) + "</Exponent>\n</root>";   
            String psxml = "<root>\n<Modulus>" + ToHexString(keys.Modulus) + "</Modulus>";   
            psxml += "\n<Exponent>" + ToHexString(keys.Exponent) + "</Exponent>";   
            psxml += "\n<D>" + ToHexString(keys.D) + "</D>";   
            psxml += "\n<DP>" + ToHexString(keys.DP) + "</DP>";   
            psxml += "\n<P>" + ToHexString(keys.P) + "</P>";   
            psxml += "\n<Q>" + ToHexString(keys.Q) + "</Q>";   
            psxml += "\n<DQ>" + ToHexString(keys.DQ) + "</DQ>";   
            psxml += "\n<InverseQ>" + ToHexString(keys.InverseQ) + "</InverseQ>\n</root>";   
  
            SaveToFile("publickey.xml", pkxml);   
            SaveToFile("privatekey.xml", psxml);   
              
        }
2009-10-14 20:14
0
雪    币: 149
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
呵呵,谢谢您抽出宝贵时间回复。
2009-10-15 19:25
0
雪    币: 5275
活跃值: (451)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
4
好久不玩儿了,不知道对不对,现在也不写程序:)
2009-10-16 21:30
0
游客
登录 | 注册 方可回帖
返回
//