我有段JAVA编写(使用了crypto类库)的用3DES加密字符串的代码:
输入参数:
strTobeEnCrypted:http://localhost:56789/download/softdown.jsp?softid=61$1172654477$FEqHbDH5Lws2paZi9RdOT5e3g5c=
strKey:20C86125F86DB932D0139D32D9208CEF52BAEC98F1E9BA2A
iv:0102030405060708
public static String Encrypt(String strTobeEnCrypted, String strKey, String iv)
throws Exception
{ byte byteIV[] = Hex.decode(iv);
byte input[] = strTobeEnCrypted.getBytes(CodingType);
Key k = KeyGenerator(strKey); IvParameterSpec IVSpec = byteIV.length != 0 ? IvGenerator(byteIV) : IvGenerator(defaultIV);
Cipher c = Cipher.getInstance("DESede/CBC/PKCS5Padding");
c.init(1, k, IVSpec);
byte output[] = c.doFinal(input);
System.out.println("加密后:="+byteHEX(output));
return new String(Base64Encode(output), CodingType);
} 输出:
加密后:=F882754014EE18BCE7754281AD5DEC829E3F3CB07F79151815575D24DE137D2658546F330649CE9707225739F69FF8DC8E6A7D9FF6606317132B2FB0B3D4A3C2131B4D6EBF4C46425D24F0EC336A25770555750C53731BBFEBEE68E1137C6BD 在PHP代码中我使用如下代码进行加密:
mcrypt_encrypt(MCRYPT_3DES, $strKey,$strTobeEnCrypted, MCRYPT_MODE_CBC, $iv);
其结果怎么为:
2f1c29143bd733e063701c6c8720a63732a302bc644c1a69dd740047a8c7de8bdb0decdcebff0fb7bf56b29d8df8c6950a1a134bece96341b1c401ccc01c280a2b8d4286175dd852f3dc5ee16306de0ecdb2859166efffb9ee33cbc98b84a526 哪位高手知道,请麻烦告诉我一声。
注:这是根据互联星空的单点认证接口改编的。
我也在做这样的接口啊.
不过是.NET的.不会写啊.
互联星空给我好多的.DOC文档.好长好长.看的都头大了.可还是不会写
看看是不是有其他的常量指定Padding方式,不知道你的IV是否和Java中的一样呢?