C# RSA和Java RSA互通

今天调查了C# RSA和Java RSA,网上很多人说,C#加密或者java加密 ,Java不能解密或者C#不能解密

但是我尝试了一下,发现是可以的,下面就是我尝试的代码,如果您有什么问题,我想看看,他们为什么不能互通?

Rsamain代码  
  1. package rsa;   
  2.   
  3. import java.math.BigInteger;   
  4. import java.security.KeyFactory;   
  5. import java.security.PrivateKey;   
  6. import java.security.PublicKey;   
  7. import java.security.spec.RSAPrivateKeySpec;   
  8. import java.security.spec.RSAPublicKeySpec;   
  9.   
  10. import javax.crypto.Cipher;   
  11.   
  12. import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException;   
  13. import com.sun.org.apache.xml.internal.security.utils.Base64;   
  14.   
  15.   
  16. /**   
  17.  * @author cnchenhl   
  18.  * Jul 82011  
  19.  */   
  20. public class RSAMain {   
  21.   
  22.     private static String module = "5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=";   
  23.     private static String exponentString = "AQAB";   
  24.     private static String delement = "vmaYHEbPAgOJvaEXQl+t8DQKFT1fudEysTy31LTyXjGu6XiltXXHUuZaa2IPyHgBz0Nd7znwsW/S44iql0Fen1kzKioEL3svANui63O3o5xdDeExVM6zOf1wUUh/oldovPweChyoAdMtUzgvCbJk1sYDJf++Nr0FeNW1RB1XG30=";   
  25.     private static String encryptString = "Vx/dGjS1YWKRubsoDgiShiwLgqyNE2z/eM65U7HZx+RogwaiZimNBxjuOS6acEhKZx66cMYEAd1fc6oewbEvDIfP44GaN9dCjKE/BkkQlwEg6aTO5q+yqy+nEGe1kvLY9EyXS/Kv1LDh3e/2xAk5FNj8Zp6oU2kq4ewL8kK/ai4=";   
  26.     /**   
  27.      * @param args   
  28.      */   
  29.     public static void main(String[] args) {   
  30.         byte[] en = encrypt();   
  31.         System.out.println(Base64.encode(en));   
  32.         byte[] enTest = null;   
  33.         try {   
  34.             enTest = Base64.decode(encryptString);   
  35.         } catch (Base64DecodingException e) {   
  36.             e.printStackTrace();   
  37.         }   
  38.         System.out.println(enTest.length);   
  39.         System.out.println(en.length);   
  40.         System.out.println(new String(Dencrypt(en)));   
  41.         System.out.println(new String(Dencrypt(enTest)));   
  42.     }   
  43.   
  44.     public static byte[] encrypt() {   
  45.         try {   
  46.             byte[] modulusBytes = Base64.decode(module);   
  47.             byte[] exponentBytes = Base64.decode(exponentString);   
  48.             BigInteger modulus = new BigInteger(1, modulusBytes);   
  49.             BigInteger exponent = new BigInteger(1, exponentBytes);   
  50.   
  51.             RSAPublicKeySpec rsaPubKey = new RSAPublicKeySpec(modulus, exponent);   
  52.             KeyFactory fact = KeyFactory.getInstance("RSA");   
  53.             PublicKey pubKey = fact.generatePublic(rsaPubKey);   
  54.   
  55.             Cipher cipher = Cipher.getInstance("RSA");   
  56.             cipher.init(Cipher.ENCRYPT_MODE, pubKey);   
  57.   
  58.             byte[] cipherData = cipher.doFinal(new String("chenhailong").getBytes());   
  59.             return cipherData;   
  60.         } catch (Exception e) {   
  61.             e.printStackTrace();   
  62.         }   
  63.         return null;   
  64.   
  65.     }   
  66.   
  67.     public static byte[] Dencrypt(byte[] encrypted) {   
  68.         try {   
  69.             byte[] expBytes = Base64.decode(delement);   
  70.             byte[] modBytes = Base64.decode(module);   
  71.   
  72.             BigInteger modules = new BigInteger(1, modBytes);   
  73.             BigInteger exponent = new BigInteger(1, expBytes);   
  74.   
  75.             KeyFactory factory = KeyFactory.getInstance("RSA");   
  76.             Cipher cipher = Cipher.getInstance("RSA");   
  77.   
  78.             RSAPrivateKeySpec privSpec = new RSAPrivateKeySpec(modules, exponent);   
  79.             PrivateKey privKey = factory.generatePrivate(privSpec);   
  80.             cipher.init(Cipher.DECRYPT_MODE, privKey);   
  81.             byte[] decrypted = cipher.doFinal(encrypted);   
  82.             return decrypted;   
  83.         } catch (Exception e) {   
  84.             e.printStackTrace();   
  85.         }   
  86.         return null;   
  87.     }   
  88. }  

 

C#代码  
  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.Linq;   
  4. using System.Text;   
  5. using System.Security.Cryptography;   
  6.   
  7. namespace RSA   
  8. {   
  9.     class Program   
  10.     {   
  11.         static void Main(string[] args)   
  12.         {   
  13.             string de  = "iBILuPJFgPMxgpbgN3F2JjD6XjcqRSApjVVbvBBEBDV21Pjj7lTrfhEjSVnJX/MVoZrmX0lxsvoXTMvvVwVF7K7W5hs7Qo+aMN96yWke7wiLEM9M4pPz60A/KSckskiona67tXcqOLXb8N18TKaNCKHv0Ce+GyEKK5+MT7e1vao=";   
  14.             //string encrypt = RSAEncrypt("", "chenhailong");   
  15.             byte[] encrypt = RSAEncrypt("chenhailong");   
  16.             //string name = RSADecrypt(encrypt);   
  17.             string name = RSADecrypt(Convert.FromBase64String(de));   
  18.             Console.WriteLine(encrypt.Length);   
  19.             Console.WriteLine(Convert.ToBase64String(encrypt));   
  20.             Console.WriteLine(name);   
  21.             Console.ReadKey();   
  22.         }   
  23.         /// <summary>   
  24.         /// RSA encrypt   
  25.         /// </summary>   
  26.         /// <param name="publickey"></param>   
  27.         /// <param name="content"></param>   
  28.         /// <returns></returns>   
  29.         public static byte[] RSAEncrypt(string content)   
  30.         {   
  31.             string publickey = @"<RSAKeyValue><Modulus>5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";   
  32.             RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();   
  33.             byte[] cipherbytes;   
  34.             rsa.FromXmlString(publickey);   
  35.             cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false);   
  36.   
  37.             //return Convert.ToBase64String(cipherbytes);   
  38.             return cipherbytes;   
  39.         }   
  40.   
  41.         /// <summary>   
  42.         /// RSA decrypt   
  43.         /// </summary>   
  44.         /// <param name="privatekey"></param>   
  45.         /// <param name="content"></param>   
  46.         /// <returns></returns>   
  47.         public static string RSADecrypt(byte[] content)   
  48.         {   
  49.             string privatekey = @"<RSAKeyValue><Modulus>5m9m14XH3oqLJ8bNGw9e4rGpXpcktv9MSkHSVFVMjHbfv+SJ5v0ubqQxa5YjLN4vc49z7SVju8s0X4gZ6AzZTn06jzWOgyPRV54Q4I0DCYadWW4Ze3e+BOtwgVU1Og3qHKn8vygoj40J6U85Z/PTJu3hN1m75Zr195ju7g9v4Hk=</Modulus><Exponent>AQAB</Exponent><P>/hf2dnK7rNfl3lbqghWcpFdu778hUpIEBixCDL5WiBtpkZdpSw90aERmHJYaW2RGvGRi6zSftLh00KHsPcNUMw==</P><Q>6Cn/jOLrPapDTEp1Fkq+uz++1Do0eeX7HYqi9rY29CqShzCeI7LEYOoSwYuAJ3xA/DuCdQENPSoJ9KFbO4Wsow==</Q><DP>ga1rHIJro8e/yhxjrKYo/nqc5ICQGhrpMNlPkD9n3CjZVPOISkWF7FzUHEzDANeJfkZhcZa21z24aG3rKo5Qnw==</DP><DQ>MNGsCB8rYlMsRZ2ek2pyQwO7h/sZT8y5ilO9wu08Dwnot/7UMiOEQfDWstY3w5XQQHnvC9WFyCfP4h4QBissyw==</DQ><InverseQ>EG02S7SADhH1EVT9DD0Z62Y0uY7gIYvxX/uq+IzKSCwB8M2G7Qv9xgZQaQlLpCaeKbux3Y59hHM+KpamGL19Kg==</InverseQ><D>vmaYHEbPAgOJvaEXQl+t8DQKFT1fudEysTy31LTyXjGu6XiltXXHUuZaa2IPyHgBz0Nd7znwsW/S44iql0Fen1kzKioEL3svANui63O3o5xdDeExVM6zOf1wUUh/oldovPweChyoAdMtUzgvCbJk1sYDJf++Nr0FeNW1RB1XG30=</D></RSAKeyValue>";   
  50.             RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();   
  51.             byte[] cipherbytes;   
  52.             rsa.FromXmlString(privatekey);   
  53.             cipherbytes = rsa.Decrypt(content, false);   
  54.   
  55.             return Encoding.UTF8.GetString(cipherbytes);   
  56.         }   
  57.   
  58.   
  59.     }   
  60.   
  61. }  

 有什么问题 请给我留言

下面是Key的互通代码

Java代码  
  1. private byte[] removeMSZero(byte[] data) {   
  2.       byte[] data1;   
  3.       int len = data.length;   
  4.       if (data[0] == 0) {   
  5.           data1 = new byte[data.length - 1];   
  6.           System.arraycopy(data, 1, data1, 0, len - 1);   
  7.       } else  
  8.           data1 = data;   
  9.   
  10.       return data1;   
  11.   }  
posted @ 2011-09-13 16:16 吾爱乐乐 阅读(285) 评论(0)  编辑
今天一来发现很客户端无法映射服务器文件,出现“指定的网络名不再可用\企图在不存在的网络连接上进行操作”错误提示,但是服务器与客户端之间都能PING通。在网上查找了下解决方案,如下:

在一个多子网网络中,有一台装Windows   2003   Server AD服务器,另外两台window 2003 server web服务器web1和web2,其中web1加入域的时候报错“指定的网络名不再可用”,web2加入域时报错“企图在不存在的网络连接上进行操作”,然后我试图ping AD服务器,发现都能ping通,非常郁闷,首先想到的是不是由于我装了瑞星个人防火墙导致的呢?由于前几天需要对部分客户机做限制访问这台电脑,所以就装了个瑞星防火前。难道是防火墙把139端口给阻止了呢?故:我把瑞星防火墙停止了保护后还是不行,最后我把瑞星防火墙卸载了。重启OK,但是过了不到10分钟,又出现了如上的错误提示。还是无法访问。得出结论不是防火墙的问题。
后来请教了以前的领导,他也建议了我几点去做,但是也丝毫无一点好转,情况还是原来的情况,困扰却依然存在。
在网上找了好多资料,也试了好多个网友提供的方法,可是全都无效。问题依然存在。后来在网上看到一个帖子说是不是有什么服务没有启动“浏览服务,启用了netbios名服务了吗,tcpip属性”就这句话,我看了下Computer Browser服务状态是停止,模式是自动。启动浏览服务,重新访问mail-server,弹出来用户名跟密码对话框。哇靠,原来是Computer Browser服务自动停止了。顺便在网上也查了一下Computer Browser服务,它是依赖server服务、workstation服务启动的。看了下这三个服务运行都正常。问题解决。
Computer Browser:维护网络上计算机的更新列表,并将列表提供给计算机指定浏览。如果服务停止,列表不会被更新或维护。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。

posted @ 2010-01-21 18:42 吾爱乐乐 阅读(2502) 评论(0)  编辑

 1、现象:
访问:http://cptf-bi.cptf.com.cn/Reports/Pages/Folder.aspx,在本机正常,在局域网内其它电脑均出现此异常。

请求因 HTTP 状态 400 失败: Bad Request。
主文件夹

2、处理:

 为网站的“网站标识”的IP地址要设置为“全部未分配”,并配置恰当的主机头。

经再现成功,证明此问题的原因所在。

3、2007/01/25 此现象发生于使用数据仓库AS服务的子文件夹,试图打开AS时提示System.xml缺少根元素。重启服务器后OK(约1个月未重启)


*2007-8-30 再次出现此问题,重启后OK(已经近两个月未重启,SQL进程占用近2G内存)

posted @ 2009-04-28 16:29 吾爱乐乐 阅读(915) 评论(1) 编辑
摘要: 如何让DIV产生滚动条,以下是具体介绍阅读全文
posted @ 2009-04-11 21:36 吾爱乐乐 阅读(2767) 评论(0) 编辑
摘要: VS2005单元测试的工具主要集成在VS开发者版与VS测试者版这两个版本中。当然我们平时装的是Visual Studio Team Suit也有这个工具,我们这里介绍一下VS2005自带的单元测试工具的使用方法,和大家分享一下。阅读全文
posted @ 2009-02-09 17:47 吾爱乐乐 阅读(765) 评论(1) 编辑
摘要: 最新最全的ASP.NET学习资源大全(网络摘要) 网上收集到的,和大家分享哈阅读全文
posted @ 2009-02-05 10:23 吾爱乐乐 阅读(391) 评论(0) 编辑
摘要: .NET开发人员十大必备下载工具,网上看见的,收集下来存起 NUnit:编写单元测试的工具   NDoc:创建代码文档的工具   NAnt:生成解决方案的工具   CodeSmith:代码生成工具   FxCop:用于监视代码的——代码警察   Snippet Compiler:小型代码段编译工具   两个不同的转换器工具,ASP.NET 版本转换器(Version Switcher)和 Visual Studio .NET 项目转换器(Project Converter)   Regulator:生成正则表达式工具   .NET Reflector:程序集分析检查工具 阅读全文
posted @ 2008-12-16 15:48 吾爱乐乐 阅读(504) 评论(2) 编辑
posted @ 2008-11-25 16:13 吾爱乐乐 阅读(924) 评论(0) 编辑
摘要: <iframeid="iFrame1"name="iFrame1"width="100%"onload="this.height=iFrame1.document.body.scrollHeight"frameborder="0"src="index.htm"></iframe>看到了吧,关键就在于onload="this.height=iFrame1.document.b...阅读全文
posted @ 2008-11-14 16:00 吾爱乐乐 阅读(102) 评论(0) 编辑
摘要: 罪案现场4-古堡谜踪 前面出了密室逃脱的小游戏,供大家在工作空闲之余发散一下思维,现增加部分小游戏,让给位IT界的高手也来一展身手。 麦克斯可爱的小妹妹在古堡不见了踪影,这可把他急坏了,各位好心的玩家,开动你的脑筋,想办法帮他找到妹妹吧!这是一个类似于《罪案现场》的推理游戏,对自己的智力有信心的玩家,千万别错过了! 阅读全文
posted @ 2008-09-05 11:37 吾爱乐乐 阅读(3816) 评论(0) 编辑