gpt4 book ai didi

java - C# DESede 对称 ECB 加密(我很接近 - 字符略有不同)!

转载 作者:行者123 更新时间:2023-11-30 10:36:56 26 4
gpt4 key购买 nike

我必须匹配的输出来自 Java DESede,使用 2005 年的 BouncyCaSTLe Jar ...我非常接近...

这是我在 Java 中的输出(这是正确的),后面是我在 C# 中的输出...如果您在编辑器中查看,您会看到它们几乎匹配,除了在 C# 中它有一个正斜杠“/” Java 它有“%2F”、“%2D”,在 C# 的末尾是一个“=”,Java 有“%3D”。有任何想法吗? (我添加了空格以显示它们匹配 - 但您只会在编辑器中看到它们。)

F3e8sdZ%2F951IRiguIAVqfDLyWptqlbWik5tvFzItcxJCEmupzD9wXp%2BDzIbrf2J2dPpXyEXL2QU%3D (Java - Correct)

F3e8sdZ/ 951IRiguIAVqfDLyWptqlbWik5tvFzItcxJCEmupzD9wXp+ DzIbrf2J2dPpXyEXL2QU= (C# - Close?)

这是我的 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()以匹配您当前的输出。

关于java - C# DESede 对称 ECB 加密(我很接近 - 字符略有不同)!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40369773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com