私の出力は、2005年のBouncyCastle Jarを使用したJava DESedeからのものです...私は非常に近いです...C#DESEDe対称ECB暗号化(私はとても近い - 若干異なる文字です)!
ここで私の出力はJava(正しい) ...エディタで表示すると、C#以外でスラッシュ "/"があり、 "%2F"、 "%2D"、最後にC#がある場所を除き、ALMOSTと一致します"="、Javaには "%3D"があります。何か案は? (私は彼らが一致を示すために、スペースを追加しました - 。しかし、あなただけのエディタでそれらを見ることができます)
F3e8sdZ%2F951IRiguIAVqfDLyWptqlbWik5tvFzItcxJCEmupzD9wXp%2BDzIbrf2J2dPpXyEXL2QU%3D(Javaの - 正しい)
F3e8sdZ/951IRiguIAVqfDLyWptqlbWik5tvFzItcxJCEmupzD9wXp + DzIbrf2J2dPpXyEXL2QU =(C#の? - クローズ)
ここでは私のC#のコードです:
public static string DoubleTrippleDESede(string strToEncode, ref string symKey, ref ICryptoTransform cipher)
{
try
{
//byte[] input = Encoding.UTF8.GetBytes("DESede (3DES) Encryption in RAILO CFML");
byte[] input = Encoding.UTF8.GetBytes(strToEncode);
//byte[] key = Convert.FromBase64String("ru8femXhTm9jwdGdhb/4Sw==");
byte[] key = Convert.FromBase64String(symKey);
TripleDESCryptoServiceProvider algorithm = new TripleDESCryptoServiceProvider();
algorithm.Mode = CipherMode.ECB;
algorithm.BlockSize = 64;
algorithm.KeySize = 192; // 24 byte key
algorithm.Key = key; //Original
//algorithm.Key = key.CopyTo(algorithm.Key,)
cipher = algorithm.CreateEncryptor();
byte[] encrypted = cipher.TransformFinalBlock(input, 0, input.Length);
Debug.WriteLine("encrypted (.NET): {0}", Convert.ToBase64String(encrypted));
return Convert.ToBase64String(encrypted);
}
catch (Exception ex)
{
return ex.Message;
}
}
どれでもガイダンスは非常に高く評価される!!私はこれを2週間続けていますが、最終的に勝利を味わうことができます(私は思っています!)
Javaの出力がurlencodedされているようです。私は*あなたが 'System.Uri.EscapeDataString()'を呼び出すことで一致すると思う*。 –
あなたはとてもそうです...私はそれをエンコードすると、次のようになります。F3e8sdZ%2f951IRiguIAVqfDLyWptqlbWik5tvFzItcxJCEmupzD9wXp%2bDzIbrf2J2dPpXyEXL2QU%3d - Javaの "%2F"が "%2f"(小文字のf)になるということです。 ..これは問題を提示することができますか? –
"%2F"は "/"で、 "%2D"は "="で、エンコーディングを削除します。 – zaph