java ThreeDES 加解密 转 C#该怎么处理
java ThreeDES 加解密 转 C#
要抽取一个数据库中的数据
里面有些字段是用java ThreeDES加密的
求C#对应的解密算法
谢谢
public static String encryptParam(String content,String threedes) {
String encryptParams = ThreeDES.byte2hex(ThreeDES.encryptMode(threedes.getBytes(), content.getBytes()));
return encryptParams;
}
public static String deciphering(String encryptContent,String threedes){
String paramCode = "";
byte[] decryptBytes = ThreeDES.decryptMode(threedes.getBytes(), ThreeDES.hex2byte(encryptContent));
paramCode = new String(decryptBytes);
return paramCode;
}
------解决思路----------------------
只想说,呵呵。先想想别的办法。
实在不行,用java做个3des的jar包,编译成dll,以供C#调用吧。
------解决思路----------------------
这个你得找到 ThreeDES.encryptMode 里面具体是怎么写的,比如里面类似 Cipher.getInstance("DESede/CBC/PKCS5Padding"); 这样的代码,或者这个 API 的说明。加密算法的三种配置(算上可能的 key derivation 和 IV 是5 种信息)都会影响结果,知道了这些C#这边就可以用 BouncyCastle 来解密。不知道就猜吧,3des第一个参数是DESede,第二个是ECB或CBC,第三个是PKCS5Padding 或者NoPadding ,字符串密码直接 UTF-8 当 key(key size 不够就补0,超出就截断)。这4种组合我估计十有八九能对。
要抽取一个数据库中的数据
里面有些字段是用java ThreeDES加密的
求C#对应的解密算法
谢谢
public static String encryptParam(String content,String threedes) {
String encryptParams = ThreeDES.byte2hex(ThreeDES.encryptMode(threedes.getBytes(), content.getBytes()));
return encryptParams;
}
public static String deciphering(String encryptContent,String threedes){
String paramCode = "";
byte[] decryptBytes = ThreeDES.decryptMode(threedes.getBytes(), ThreeDES.hex2byte(encryptContent));
paramCode = new String(decryptBytes);
return paramCode;
}
------解决思路----------------------
只想说,呵呵。先想想别的办法。
实在不行,用java做个3des的jar包,编译成dll,以供C#调用吧。
------解决思路----------------------
这个你得找到 ThreeDES.encryptMode 里面具体是怎么写的,比如里面类似 Cipher.getInstance("DESede/CBC/PKCS5Padding"); 这样的代码,或者这个 API 的说明。加密算法的三种配置(算上可能的 key derivation 和 IV 是5 种信息)都会影响结果,知道了这些C#这边就可以用 BouncyCastle 来解密。不知道就猜吧,3des第一个参数是DESede,第二个是ECB或CBC,第三个是PKCS5Padding 或者NoPadding ,字符串密码直接 UTF-8 当 key(key size 不够就补0,超出就截断)。这4种组合我估计十有八九能对。