2 irfanchen irfanchen 于 2016.03.10 13:53 提问

3DES加密转byte数组问题

用C# 3DES加密,然后JAVA解密失败。不成功。看了下JAVA的加密源码,发现是加密时key值不同导致的。

C#的key值我是这样获取的:byte[] key = Encoding.Default.GetBytes(“key”);
byte[] key = Encoding.UTF8.GetBytes("key");
byte[] key = ASCIIEncoding.ASCII.GetBytes("key");
(这三个方法结果相同,所以不是这的问题);
byte[] a1 = new byte[24];
Array.Copy(miyao, a1, 24);
这句是为了取数组的前24位,得到的数组我们命名为A,稍后给出。

JAVA的key值是这样获取的:
byte[] key = “key”.getBytes();
DESedeKeySpec spec = new DESedeKeySpec(key); //这句同样也是为了取byte数组的前24位,这句运行后的结果和C#等同
Key key = SecretKeyFactory.getInstance("DESede").generateSecret(spec ); //经过这一行后,byte数组的值就变化了,我们把它命名为B。查了资料:根据提供的密钥规范(密钥材料)生成

SecretKey 对象。不知道这一行是什么逻辑,用C#怎么转换。

A:[100, 55, 50, 50, 52, 53, 98, 97, 51, 50, 99, 101, 52, 99, 54, 55, 97, 102, 102, 54, 56, 57, 52, 50]
B:[100, 55, 50, 50, 52, 52, 98, 97, 50, 50, 98, 100, 52, 98, 55, 55, 97, 103, 103, 55, 56, 56, 52, 50]

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
iOS 以byte数组作为密钥的3des加密
最近做3des加密的时候,服务器返回的byte数组作为密钥,网上的方法都是以字符串作为密钥。先将字符串进行utf8编码,再转换成data,这样和直接用byte数组进行加密是有区别的,转换后的data字节数增加了一倍,这时候怎么办呢?首先 对密钥字符串进行处理,把16进制字符串转换为byte数组(nadata)- (NSData *) stringToHexData { int len = [
Java中3DES加密解密示例(封装byte数组16进制互转)
Java中3DES加密解密示例(封装byte数组16进制互转)
JAVA 3DES 加密/解密 32位密钥
使用3DES 加密/解密 在java中3DES密钥都是24字节的,当使用16字节密钥时24字节密钥后8位为16自己密钥补位获得的。 例如 16字节密钥  8字节字节1 8字节2 24字节密钥 8字节字节1 8字节2 8字节1   场景为: 用测试密钥值:“00000000000000000000000000000000”   加密数据 0000010000030200  加密后F35F
MD5加密与byte数组与16进制相互转换
包含MD5加密,同时拥有多种方式进行byte或者byte[]与16进制相互转换 三种方式: 方式一:Integer.toHexString(int) 对应的是: Integer.parseInt(String, int)或者Integer.valueOf(String, int) 方式二:位运算(& 与 |) 方式三:算术运算
C#DES对较大文件和文件字节数组对象加密解密
start using UnityEngine; using System.Collections; using System.Security.Cryptography; using System.IO; public class Encrypt { //DES需要秘钥desKey和desIv向量一起使用加密,它们的要求都是8个数组的字节数组, 如desKey=12345678转成
对文件、字符串和byte数组进行MD5加密
对文件、字符串和byte数组进行MD5加密
java的3DES加密/解密
Java写的加密解密算法及调用范例 1、.JAVA算法范例 package Common.JUtility; import javax.crypto.*; import javax.crypto.spec.SecretKeySpec; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
iOS将字符串3DES加密后转Base64
为NSString写分类 NSString+Base64After3DES .h文件 #import #import @interface NSString (Base64After3DES) /** * 3DES加密并转Base64 * * @param plainText 要加密的字符串 * @param encryptOrDecrypt 系统固定
iOS 3DES加密 和 java 3DES 解密
对称加密算法 3des 在iOS 客户端加密算法 首先进入头文件: #import   #import #import -(NSString*)TripleDES:(NSString*)plainText encryptOrDecrypt:(CCOperation)encryptOrDecrypt { const void *vplainText;
c++ byte和字符串简单加密变形
#include #include #include #include using namespace std; typedef unsigned char byte; //typedef unsigned char BYTE; //这个宏 typedef unsigned char BYTE; //http://www.52ij.com/jishu/cpp/cbyte/5620.h