私はこの問題を解決しようと何度も努力してきました。DESede(3DES)RAILOでの暗号化CFML
AサードパーティのWebサービスは、ECB とPKCS7paddingで3DESを使って暗号化されたデータを送信するために私を必要とする - 彼らが使用している.NET
railo CFML内の暗号化機能は、(つまり、デフォルトがある任意の更なるオプションを指定せずにDESEDEに制限され暗号モードとパディングに使用されます)。
誰もがRailoでこの問題を抱えていて、解決策(おそらくJavaベース)を思いついていますか? - 私は真剣にここに私の髪を引っ張っている!
私はいくつかの変更を行わ下回っリーの提案に基づいて:
私は進歩の少しを作ったが、私はこのキーがそれにMD5ハッシュのいくつかの種類があると思います。
私は少しをウェブの周りに釣りをし、あなたのソリューションを修正 - 私はパディングが必要であるが、最初の文字列を暗号化された結果は、私が期待するべきであるように思われるが、その後の検査で近いそれは間違ってないと思う:
IvParameterSpec = createObject("java", "javax.crypto.spec.IvParameterSpec");
Cipher = createObject("java", "javax.crypto.Cipher");
SecretKeySpec = createObject("java", "javax.crypto.spec.SecretKeySpec");
BASE64Decoder = createObject("java", "sun.misc.BASE64Decoder");
Str = createObject("java", "java.lang.String");
MessageDigest = createObject("java", "java.security.MessageDigest");
input = "<xml><PanNumber>6280390027626871</PanNumber><Req_Currency_Code>826</Req_Currency_Code><Card_Pin>1234</Card_Pin><Till_Amount></Till_Amount><Auth_Code></Auth_Code></xml>";
key = "06098140901984F95E139F29B479D952CB6545C177D21456";
md = MessageDigest.getInstance("MD5");
md.update(key.getBytes("UTF-8"), 0, key.length());
keyBytes = md.digest();
newKey = tobase64(keyBytes);
keyBytes2 = binaryDecode(newKey, "base64");
keyBytes2 = arrayMerge(keyBytes, arraySlice(keyBytes, 1, 8));
allnewKey = binaryEncode(javacast("byte[]", keyBytes2), "base64");
encrypted = encrypt(input, allnewKey, "desede", "base64");
WriteDump("encrypted (CF): "& encrypted);`
結果は:26sfwv2DHDj7EHYd5Qao8veDtPbKIcv8rDVhbLPDEaWHO27EUGRF6KrdbXe7NBUVADYMdGuagfO4Tev584dUcgKGJ2h6kWPZxooNUGMgL2xB7e00YOkLosA8wFD569sZUd1MGKuF9yCjY1zCsAE4SgohkcuK9YZ7BizQma99/W9yOsIjAfHtAqGiep4tMTQ + eFASYtPybccsgi8H4brIB/HAu0kaDSAw
期待resul Tは: 26sfwv2DHDj7EHYd5Qao8veDtPbKIcv8rDVhbLPDEaWHO27EUGRF6MxaAzUpJDqQBq8NGgdqmtn6q/wVQNHGWrOE8 + aetKVC78nszS3ZO8AHjwoT1igv4lGl78n8jCHHU + KwnBT7KfXIYMTCuwO/MohIiFbGyhMXPsvv3/G4OY1C2nEkN0LweLh4mTgtU8syT1M9XdmvwhaltsmPoFtoE9FujvQpJCY3
(編集)あなたは、サンプルのキーと結果を投稿することができますあなたはRailoと.netに入っていますか?私はRailoがjavaのデフォルトを使用していると思います。これは 'ECB'と' PKCS5Padding'(主に8バイトのPKCS7paddingと互換性があります)です。だから理論的にはそれは箱の中で動くはずです。 – Leigh