C# 使用带有共享密码和特定salt值的OpenSSL AES256加密字符串

C# 使用带有共享密码和特定salt值的OpenSSL AES256加密字符串,c#,bash,openssl,aes,C#,Bash,Openssl,Aes,在我的c#程序(如下所示)中,我使用以下方法对字符串进行加密,然后通过internet将其传输到另一台服务器进行进一步处理。现在我必须制作一个bash脚本来完成完全相同的事情,但是我以前几乎从未接触过linux服务器,让我们在linux中使用加密吧 目前我已经尽可能地做到了这一点,但由于远程服务器不接受它,我想我可能忘记了一些重要的事情 encodedValue=$(echo $stringValue| openssl enc -aes-256-cbc -a -pass pass:$shared

在我的c#程序(如下所示)中,我使用以下方法对字符串进行加密,然后通过internet将其传输到另一台服务器进行进一步处理。现在我必须制作一个bash脚本来完成完全相同的事情,但是我以前几乎从未接触过linux服务器,让我们在linux中使用加密吧

目前我已经尽可能地做到了这一点,但由于远程服务器不接受它,我想我可能忘记了一些重要的事情

encodedValue=$(echo $stringValue| openssl enc -aes-256-cbc -a -pass pass:$sharedSecret)
encodedValue=$( echo $encodedValue| tr -d ' ' )

# - base64 it
encodedValue=$( echo $(echo $encodedValue| base64) | tr -d ' ' )
就我已经看到的差异而言,我并没有对openssl编码进行限制,但我还没有找到使用openssl实现这一点的任何方法

有人能给我指出好的方向或者告诉我我做错了什么吗

原始工作c#代码如下所示:

RijndaelManaged aesAlg = null;

try
{
    var key = new Rfc2898DeriveBytes(sharedSecret, Salt);

    aesAlg = new RijndaelManaged();
    aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8);

    ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
    using (var msEncrypt = new MemoryStream())
    {
        msEncrypt.Write(BitConverter.GetBytes(aesAlg.IV.Length), 0, sizeof(int));
        msEncrypt.Write(aesAlg.IV, 0, aesAlg.IV.Length);

        using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
        {
            using (var swEncrypt = new StreamWriter(csEncrypt))
            {
                swEncrypt.Write(plainText);
            }
        }
        outStr = Convert.ToBase64String(msEncrypt.ToArray());
    }
}

尝试添加
-S
参数。您好,我已经试过了,但是我在c#应用程序中使用的salt对于OpenSSL来说太大了。至少这是他们的错误告诉我的:“十六进制字符串太长,十六进制salt值无效”salt实际上在c#代码中被接受,但在openssl版本中不被接受。。。关于如何获得相同的工作价值有什么想法吗?