我们有一个Java客户端向我们发送一些加密数据

1.随机字符串使用RSA和我们提供的离线公钥加密。

2.使用步骤1中生成的密钥,使用alg_tripleDES_CBC = http://www.w3.org/2001/04/xmlenc#tripledes-cbc加密数据

我能够像第一步一样解密密钥......这正在工作。

public static string DecryptKey(string encryptedKey)

{

X509Certificate2 cert = new X509Certificate2("c:\\test.pfx", "test");

RSACryptoServiceProvider privateKeyProvider = (RSACryptoServiceProvider)cert.PrivateKey;

string decryptedKey = System.Text.Encoding.UTF8.GetString(privateKeyProvider.Decrypt(Convert.FromBase64String(encryptedKey), false));

return decryptedKey;

}我有这个代码使用第一步生成的密钥来解密数据。

public static string DecryptString(string Message, string Passphrase)

{

byte[] Results;

System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();

MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();

byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase));

TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();

TDESAlgorithm.Key = TDESKey;

TDESAlgorithm.Mode = CipherMode.ECB;

TDESAlgorithm.Padding = PaddingMode.PKCS7;

byte[] DataToDecrypt = Convert.FromBase64String(Message);

try

{

ICryptoTransform Decryptor = TDESAlgorithm.CreateDecryptor();

Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length);

}

finally

{

TDESAlgorithm.Clear();

HashProvider.Clear();

}

return UTF8.GetString(Results);

}第二步失败,这个例外。

System.Security.Cryptography.CryptographicException: Bad Data.

at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)

at System.Security.Cryptography.Utils._DecryptData(SafeKeyHandle hKey, Byte[] data, Int32 ib, Int32 cb, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode PaddingMode, Boolean fDone)

at System.Security.Cryptography.CryptoAPITransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount)

at ConsoleApplication3.Program.DecryptString(String Message, String Passphrase) in C:\Documents and Settings\rjaladi\Desktop\ConsoleApplication3\ConsoleApplication3\Program.cs:line 66

at ConsoleApplication3.Program.Main(String[] args) in C:\Documents and Settings\rjaladi\Desktop\ConsoleApplication3\ConsoleApplication3\Program.cs:line 22我需要检查我们的客户是什么?我知道我们传递给TDES的参数有问题。任何帮助?

编辑:加密邮件的相应Java代码。

public String encryptText(String plainText) throws Exception{

byte[] plaintext = plainText.getBytes();

byte[] tdesKeyData = key;

byte[] myIV = initializationVector;

Cipher c3des = Cipher.getInstance(""DESede/CBC/NoPadding"");

SecretKeySpec myKey = new SecretKeySpec(tdesKeyData, "DESede");

IvParameterSpec ivspec = new IvParameterSpec(myIV);

c3des.init(Cipher.ENCRYPT_MODE, myKey, ivspec);

byte[] cipherText = c3des.doFinal(plaintext);

sun.misc.BASE64Encoder obj64=new sun.misc.BASE64Encoder();

return obj64.encode(cipherText);

}

java中的triple_无法在使用Java加密的.NET中使用TripleDES进行解密相关推荐

  1. java unsafe获取指针_【实战Java高并发程序设计 1】Java中的指针:Unsafe类

    是<实战Java高并发程序设计>第4章的几点. 如果你对技术有着不折不挠的追求,应该还会特别在意incrementAndGet() 方法中compareAndSet()的实现.现在,就让我 ...

  2. java中引用类型_您真的了解Java中的4种引用类型吗?

    Java中提供了四个级别的引用:SoftReference,FinalReference,WeakReference和PhantomReference.在四种引用类型中,只有FinalReferenc ...

  3. java数组出现次数最多的数_找出数组中出现次数最多的那个数——主元素问题...

    方法一:以空间换时间,可以定义一个计数数组int count[101],用来对数组中数字出现的次数进行计数(只能针对数组中数字的范围1~100),count数组中最大的元素对应的下标,即为出现次数最多 ...

  4. java将从键盘输入的时间格式化_java 时间格式化中的模式字母

    java日期格式化中的模式字母有特定的意义,由于没有注意,今天在做工程的时候导致出现了奇怪的日期: 错误写法如下: 然而得到了错误的结果: 正确写法如下: 这样就得到了正确的结果 mm指的是分钟,MM ...

  5. ikvm Java中异常_使用IKVMC将Java转换为.NET库 – 警告IKVMC0108:...

    有Java工具(叫做Mallet) http://mallet.cs.umass.edu/download.php 我想在我的.NET项目中使用它. 为了首先将此工具转换为.NET库,我尝试使用Apa ...

  6. java web里实现 mvc_MVC模式在Java Web应用程序中的实现

    一.MVC简介: MVC架构是一个复杂的架构,其实现也显得非常复杂..Views可以看作一棵树,可以用Composite Pattern来实现.Views和Models之间的关系可以Observer  ...

  7. opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类

    opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类 参考文章: (1)opengl中的Floatbuffer和 ...

  8. vbs文件放在java工程中如何调用_Eclipse软件导入Java工程文件的操作方法。

    Eclipse软件怎么导入Java工程文件?有些在学习Java编程的用户虽然会创建工程,但是对于怎么导入工程文件却不清楚,下面教大家如何在Eclipse软件中导入Java工程文件. 解决方法: 1.在 ...

  9. java语言中声明布尔型_【Java初探02】——Java语言基础

    本篇博文就Java语言的一些基本元素进行一些记录和阐述,主要讲解一下Java语言的一些基本构成元素和Java的主类结构. Java语言基础的大致组成 java主类结构 基本的数据类型 变量与常量 运算 ...

  10. java中集合和数据库中_java中list集合的内容,如何使用像数据库中group by形式那样排序...

    标签:java中list集合的内容,如何使用像数据库中group by形式那样排序,比如: 有一个 List 他中包含了一些如下的内容 JavaBean: name    money (名称)  (金 ...

最新文章

  1. JS+CSS打造一款漂亮绿色相册代码
  2. RabbitMQ的四种交换机
  3. Hadoop Hive概念学习系列之hive里的HiveQL——查询语言(十五)
  4. 《可穿戴创意设计:技术与时尚的融合》一一3.3 纺织与教育
  5. [react] react16的reconciliation和commit分别是什么?
  6. python 数据库查询系统_python查询数据库操作系统
  7. linux io100的原因_Unix与Linux的区别与联系
  8. delphi中webbrowse控件中模拟点击文本超链接_游戏中lt;控件gt;的思考
  9. 在VC++中的MFC利用一个dialoge对话框中按钮调用另一个dialoge对话框
  10. php的tips(mysql语句union等问题)
  11. 【开发者平台汇总】-各大平台开发者及开放平台集锦
  12. 嵌入式C语音基础夯实备用实战
  13. Chrome的一些快捷键
  14. 几种经典的卷积神经网络
  15. okhttp3发送https请求
  16. 华为4G无线路由器测试锁频软件,华为4g无线路由器 新款E5375路由器测试
  17. linux 文件 图标 覆盖,在Deepin下处理Microsoft Edge替换图标及替换文件
  18. 【读书笔记】c和指针
  19. 计算几何常用算法[转]
  20. 【NVM】NVM 常用笔记

热门文章

  1. numpy广播机制小结
  2. 读取jar包中的资源文件
  3. 无法使用闩锁类型 sh 读取并闩锁页_InnoDB数据锁第2.5部分“锁”(深入研究)...
  4. c语言编程统计磁盘文件,C语言编程题经典40题(附解答).ppt
  5. python em和web_浅析Python的web.py框架中url的设定方法
  6. 档案管理软件 php_致PM:除了Excel,你还有这五个项目管理软件可以用
  7. html5调用系统声音1s响一次_为你的html5网页添加音效示例
  8. php list each搭配循环
  9. 幕客网学习摘要记录1
  10. 整理读研期间用过、改进过、写过的代码