我有以下的Java代码:需要咨询有关Java代码sipnet转换为C#
static final String KEY_STRING = "MOGO_APP";
public static byte[] decrypt(byte[] encrypt)
{
byte[] bArr = null;
Key key = new SecretKeySpec(KEY_STRING.getBytes(), "DES");
Cipher cipher = Cipher.getInstance("DES");
cipher.init(2, key);
bArr = cipher.doFinal(encrypt);
return bArr;
}
我想它翻译成C#。这是我做的:
const string KEY_STRING = "MOGO_APP";
public static byte[] decrypt(byte[] encrypt)
{
byte[] key = Encoding.ASCII.GetBytes(KEY_STRING);
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
cryptoProvider.Key = key;
using (MemoryStream mm = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(mm,
cryptoProvider.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(encrypt, 0, encrypt.Length);
}
return mm.ToArray();
}
}
但它没有给出与Java代码相同的结果。
我不知道的Java。但是,从我搜索,我想可能有以下错误:
key
可能不一样,因为KEY_STRING.getBytes()
依赖于应用程序(或系统?)字符集。- 转换后alogrithm可以不与一部开拓创新相同。
我也得到错误The specificed key is not valid size
。
我做的一步一步的转换,所以我没有样品输入和输出数据,对不起。你会建议错误在哪里以及如何解决?
欢迎来到Stack Overflow!它看起来像你需要学习使用调试器。请帮助一些[互补调试技术](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。如果您之后仍然有问题,请随时返回更多详情。 –
@JoeC我已经使用调试器,我知道如何使用它(作为中级程序员)。问题是我不知道Java。请仔细阅读问题。 – Sakura