RSA加密:
明文:Welcome,RSA!from
博客园
密文:E3F+Qwyk8MJkHv7zEOb4Fdg0CX4pQOKghyOmMew8jPDUbxNJhDSlV/aS5nnVuiEtkWU1BmCrPSEi
swhuEjC7eRJnq5pEkyf0GILHFNkuoqD1o4FjKnl/oTXg83wn5JDgi5Bog5lJM8YcQcExEMsH9IF+
gbeq6rWYrbb4Qj2oM8c=
解密:Welcome,RSA!from
博客园


1 using System.Text.RegularExpressions;
2 using System.Text;
3 using System.IO;
4 using System.Net;
5 using System.Xml;
6 using System.Runtime.InteropServices;
7 using System;
8 using System.Security;
9 using System.Security.Cryptography;
10 public class RSATestForJava
11 {
12 private String p,q,e,n,d,dp,dq,crt;
13 private RSAParameters param;
14 public void Init(){
15 p="12794390226544301614076650435602993036558056678553112540698297249963365434628505393116653422818365344228379828231764392521731584684435248093787027949139091";
16 q="9645694015283940797244851561543569992525098416055322825220116046655435860727361740896753161534492415500799272063647633894112205918420307541634544631799219";
17 e="65537";
18 n="123410773237385713572440712840019405878257600213906351775134402766524785605776353635515879438375969303333340691224323217379791619946464100287854264933660919378485000299257054039555887477610831829409144592603086784397675690934246422666689022312589317493002336070775714030955737435316659994026756956753416169929";
19 d="102299672961750099570264341757280532275542401837445663770632643616494888426681205847125069294737520917541038900032845310395266178574112466427178094767628391398378924953787043659322148498169017989730953803803890989295625028193153480552247210183981959942844345362118479513739632952091865360095551345350474614233";
20 dp="1529969882744521289493243655703200580244831014386083326692594344385048063096931454992679141166478923397741927672190328275520857365639547725880173612423563";
21 dq="769453717928871362558494956494038236735297839680443531596667023084892788499361386413907037681040120057954721673997128797449053397950796768659923391901465";
22 crt="12583540851660819630796910273258143748946857763306703439274571717196507402536398234616014735603915981141807543055250658251670340810611251684169356826070785";
23
24 param=new RSAParameters();
25 byte[] bdata=GetBytes(e);
26 param.Exponent=bdata;
27 param.P=GetBytes(p);
28 param.Q=GetBytes(q);
29 param.Modulus=GetBytes(n);
30 param.D=GetBytes(d);
31 param.DP=GetBytes(dp);
32 param.DQ=GetBytes(dq);
33 param.InverseQ=GetBytes(crt);
34 }
35 public void DoTest(){
36 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
37 rsa.ImportParameters(param);
38 String edata="E3F+Qwyk8MJkHv7zEOb4Fdg0CX4pQOKghyOmMew8jPDUbxNJhDSlV/aS5nnVuiEtkWU1BmCrPSEi";
39 edata+="swhuEjC7eRJnq5pEkyf0GILHFNkuoqD1o4FjKnl/oTXg83wn5JDgi5Bog5lJM8YcQcExEMsH9IF+";
40 edata+="gbeq6rWYrbb4Qj2oM8c=";
41 //解密JAVA加密的数据
42 Byte[] encdata=Convert.FromBase64String(edata);
43 byte[] dedata=rsa.Decrypt(encdata,false);
44 Console.WriteLine("\n解密JAVA加密的数据:"+Encoding.Default.GetString(dedata));
45 }
46 public static void Main(String[] args)
47 {
48 RSATestForJava obj=new RSATestForJava();
49 obj.Init();
50 obj.DoTest();
51 }
52 public static byte[] GetBytes(String num){
53 BigInteger n=new BigInteger(num,10);
54 String s=n.ToString(2);
55 if(s.Length%8>0){
56 s=new String(‘0‘,8-s.Length%8)+s;
57 }
58 byte[] data=new byte[s.Length/8];
59 String ocetstr;
60 for(int i=0;i<data.Length;i++){
61 ocetstr=s.Substring(8*i,8);
62 data[i]=Convert.ToByte(ocetstr , 2 ) ;
63 }
64 return data;
65 }
66
67 public String ConvByteArrayToHex(byte[] data){
68 String s="";
69 for(int i=0;i<data.Length;i++){
70 s+=Convert.ToString(data[i],16);
71 }
72 return s.ToUpper();
73 }
74
75
76 }

