gpt4 book ai didi

java - 3DES (DESede) - 在 C# 中解密加密文本(由 JAVA 完成)

转载 作者:太空宇宙 更新时间:2023-11-04 12:43:59 27 4
gpt4 key购买 nike

加密文本是用JAVA完成的(我们根本没有JAVA背景)

解密将用 C# 进行,代码如下

public static string DecryptString(string Message, string Passphrase)
{
byte[] Results;
UTF8Encoding UTF8 = new UTF8Encoding();

MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Passphrase));
// byte[] TDESKey = UTF8.GetBytes(Passphrase);
TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
TDESAlgorithm.Key = TDESKey;
// TDESAlgorithm.Mode = CipherMode.CTS;
TDESAlgorithm.Padding = PaddingMode.Zeros;

byte[] DataToDecrypt = Convert.FromBase64String(Message);

try
{
ICryptoTransform Decryptor = TDESAlgorithm.CreateDecryptor();
Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length);
}
finally
{
TDESAlgorithm.Clear();
HashProvider.Clear();
}
return Encoding.UTF8.GetString(Results);
}

加密的 Java 代码是

public  String encryptData(String privateKey, String rawData)  
{

Cipher cipher = null;
try
{
cipher = Cipher.getInstance(DESEDE_ENCRYPTION_SCHEME);
cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(privateKey));
byte[] plainText = rawData.getBytes(UNICODE_FORMAT);
byte[] encryptedText = cipher.doFinal(plainText);
return new String(Base64.encodeBase64(encryptedText));
}
}

但是,当尝试解密时,收到错误消息:BAD DATA

我在这里错过了什么?

最佳答案

您没有在 Java 中使用 MD5,因此您不应在 .NET 中使用它来计算哈希值。

您的 key 应该是使用特定编码生成的,并且您应该在 .NET 中使用相同的编码。

请注意,java KeySpec 和用于 TripleDESCryptoServiceProvider 的 Key 存在一些根本区别。正如 Microsoft https://msdn.microsoft.com/en-us/library/system.security.cryptography.tripledescryptoserviceprovider.aspx 所提到的

三重 DES 仅支持“ key 长度从 128 位到 192 位,以 64 位为增量”

所以你需要在分配之前适本地转换你的 key 。为此,您可以使用 Array.Resize 方法,如下所示。

byte[] TDESKey = Encoding.UTF8.GetBytes(Passphrase);
System.Array.Resize(ref TDESKey , 192 / 8);

希望这会有所帮助。

关于java - 3DES (DESede) - 在 C# 中解密加密文本(由 JAVA 完成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36529337/

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