java中的triple_无法在使用Java加密的.NET中使用TripleDES进行解密
我们有一个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进行解密相关推荐
- java unsafe获取指针_【实战Java高并发程序设计 1】Java中的指针:Unsafe类
是<实战Java高并发程序设计>第4章的几点. 如果你对技术有着不折不挠的追求,应该还会特别在意incrementAndGet() 方法中compareAndSet()的实现.现在,就让我 ...
- java中引用类型_您真的了解Java中的4种引用类型吗?
Java中提供了四个级别的引用:SoftReference,FinalReference,WeakReference和PhantomReference.在四种引用类型中,只有FinalReferenc ...
- java数组出现次数最多的数_找出数组中出现次数最多的那个数——主元素问题...
方法一:以空间换时间,可以定义一个计数数组int count[101],用来对数组中数字出现的次数进行计数(只能针对数组中数字的范围1~100),count数组中最大的元素对应的下标,即为出现次数最多 ...
- java将从键盘输入的时间格式化_java 时间格式化中的模式字母
java日期格式化中的模式字母有特定的意义,由于没有注意,今天在做工程的时候导致出现了奇怪的日期: 错误写法如下: 然而得到了错误的结果: 正确写法如下: 这样就得到了正确的结果 mm指的是分钟,MM ...
- ikvm Java中异常_使用IKVMC将Java转换为.NET库 – 警告IKVMC0108:...
有Java工具(叫做Mallet) http://mallet.cs.umass.edu/download.php 我想在我的.NET项目中使用它. 为了首先将此工具转换为.NET库,我尝试使用Apa ...
- java web里实现 mvc_MVC模式在Java Web应用程序中的实现
一.MVC简介: MVC架构是一个复杂的架构,其实现也显得非常复杂..Views可以看作一棵树,可以用Composite Pattern来实现.Views和Models之间的关系可以Observer ...
- opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类
opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类 参考文章: (1)opengl中的Floatbuffer和 ...
- vbs文件放在java工程中如何调用_Eclipse软件导入Java工程文件的操作方法。
Eclipse软件怎么导入Java工程文件?有些在学习Java编程的用户虽然会创建工程,但是对于怎么导入工程文件却不清楚,下面教大家如何在Eclipse软件中导入Java工程文件. 解决方法: 1.在 ...
- java语言中声明布尔型_【Java初探02】——Java语言基础
本篇博文就Java语言的一些基本元素进行一些记录和阐述,主要讲解一下Java语言的一些基本构成元素和Java的主类结构. Java语言基础的大致组成 java主类结构 基本的数据类型 变量与常量 运算 ...
- java中集合和数据库中_java中list集合的内容,如何使用像数据库中group by形式那样排序...
标签:java中list集合的内容,如何使用像数据库中group by形式那样排序,比如: 有一个 List 他中包含了一些如下的内容 JavaBean: name money (名称) (金 ...
最新文章
- JS+CSS打造一款漂亮绿色相册代码
- RabbitMQ的四种交换机
- Hadoop Hive概念学习系列之hive里的HiveQL——查询语言(十五)
- 《可穿戴创意设计:技术与时尚的融合》一一3.3 纺织与教育
- [react] react16的reconciliation和commit分别是什么?
- python 数据库查询系统_python查询数据库操作系统
- linux io100的原因_Unix与Linux的区别与联系
- delphi中webbrowse控件中模拟点击文本超链接_游戏中lt;控件gt;的思考
- 在VC++中的MFC利用一个dialoge对话框中按钮调用另一个dialoge对话框
- php的tips(mysql语句union等问题)
- 【开发者平台汇总】-各大平台开发者及开放平台集锦
- 嵌入式C语音基础夯实备用实战
- Chrome的一些快捷键
- 几种经典的卷积神经网络
- okhttp3发送https请求
- 华为4G无线路由器测试锁频软件,华为4g无线路由器 新款E5375路由器测试
- linux 文件 图标 覆盖,在Deepin下处理Microsoft Edge替换图标及替换文件
- 【读书笔记】c和指针
- 计算几何常用算法[转]
- 【NVM】NVM 常用笔记
热门文章
- numpy广播机制小结
- 读取jar包中的资源文件
- 无法使用闩锁类型 sh 读取并闩锁页_InnoDB数据锁第2.5部分“锁”(深入研究)...
- c语言编程统计磁盘文件,C语言编程题经典40题(附解答).ppt
- python em和web_浅析Python的web.py框架中url的设定方法
- 档案管理软件 php_致PM:除了Excel,你还有这五个项目管理软件可以用
- html5调用系统声音1s响一次_为你的html5网页添加音效示例
- php list each搭配循环
- 幕客网学习摘要记录1
- 整理读研期间用过、改进过、写过的代码