用c语言从java解密字符串#

liwlm1x9  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(300)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

四年前关门了。
改进这个问题
以下是java的代码:

public static String encrypt(String strToEncrypt)
{
    try
    {
        String secretKey = "1234567890123456";
        DESKeySpec keySpec = new DESKeySpec(secretKey.getBytes("UTF8"));
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
        SecretKey key = keyFactory.generateSecret(keySpec);
        BASE64Encoder base64encoder = new BASE64Encoder();
        byte[] cleartext = strToEncrypt.getBytes("UTF8");
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.ENCRYPT_MODE, key);
        String encrypted = base64encoder.encode(cipher.doFinal(cleartext));
        return encrypted;

    }
    catch (Exception e)
    {
        return e.getMessage();
    }
}

如何在c#中解密?尝试解决方案:
用java加密,用c解密aes 256位
但没用。

x0fgdtte

x0fgdtte1#

基本上,由于没有向cipher.init调用提供初始化向量(iv),因此无法根据您提供的代码可靠地解密该输出。因此,使用随机iv。
更正上述问题后,以下代码可能会正常工作。你需要用正确的iv替换null。

public static string Decrypt(string encrypted)
{
    string secretKey = "1234567890123456";
    byte[] keyBytes = Encoding.UTF8.GetBytes(secretKey);
    byte[] ivBytes = null;

    DESCryptoServiceProvider csp = new DESCryptoServiceProvider();
    ICryptoTransform dec = csp.CreateDecryptor(keyBytes, ivBytes);

    byte[] cipherText = Encoding.UTF8.GetBytes(encrypted);
    string plainText = null;

    using (MemoryStream ms = new MemoryStream(cipherText, false))
    {
        ms.Position = 0;
        using (CryptoStream cryptStrm = new CryptoStream(ms, dec, CryptoStreamMode.Read))
        {
            StreamReader rdr = new StreamReader(cryptStrm);
                plainText = rdr.ReadToEnd();
        }
    }

    return plainText;
}

但是,您所做的工作有很多安全问题(在我提供的代码中也有同样多的问题)。如果这不是一个爱好/理解项目,我建议您重新考虑您的安全设计:
你不应该把钥匙储存在密码里
不应该在字符串对象中存储敏感信息
当您不再需要敏感信息时,应立即用0s或其他非敏感数据覆盖它
你不应该使用des-它不再安全了
在c语言中,您可以使用securestring来减少敏感信息的暴露(但是,从中获取数据更加困难)
理想的情况是,加密/解密代码应该用非虚拟化语言完成,因为虚拟机能够在不通知您的情况下移动数据,因此可以在内存中留下敏感信息的痕迹
...

相关问题