加密字符串从Delphi到C#

bud*_*uda 3 c# delphi encryption aes

我试图用Delphi Encryption Compendium中的Cipher1 3.0,第一部分解密用Delphi加密的c#中的一个字符串.我使用TCipher_Rijndael.

我加密的字符串是:this-is-a-test-example

密码:通过

加密值为:iKBC8kX4ZEk4A1pCj6jwEegqjpxhqw ==

当我尝试在c#中解密时,我发现错误:要解密的数据长度无效.

有没有人有同样的问题,什么是解决方案?

这是c#中的解密方法:

public static byte[] Decrypt(byte[] cipherData,
                                byte[] Key, byte[] IV)
    {

        MemoryStream ms = new MemoryStream();  
        Rijndael alg = Rijndael.Create();      
        alg.Key = Key;
        alg.IV = IV;
        CryptoStream cs = new CryptoStream(ms,
            alg.CreateDecryptor(), CryptoStreamMode.Write);           
        cs.Write(cipherData, 0, cipherData.Length);    
        cs.Close();
        byte[] decryptedData = ms.ToArray();
        return decryptedData;
    }
Run Code Online (Sandbox Code Playgroud)

这里是Delphi中的加密代码:

with TCipher_Rijndael.Create('pass',  nil) do
      begin
        memo2.lines.add ( CodeString( 'this-is-a-test-example' , paEncode, fmtDEFAULT));
        Free;
      end;
Run Code Online (Sandbox Code Playgroud)

谢谢.

Whi*_*g34 5

您需要确定该值如何加密的所有详细信息:

  1. 使用了什么分组密码操作模式?欧洲央行往往是违约.
  2. 使用了什么填充方案?在你的情况下也许没有填充.
  3. 密钥是如何从密码派生的?也许使用PBKDF2或简单的MD5哈希.
  4. 什么是初始化向量?请注意,只有一些密码模式需要一个.
  5. 输出是如何编码的?它似乎是Base64编码.

只有在您确切知道它是如何加密的情况下才能反转该过程以正确解密它.您可能想尝试发布更多代码或有关其加密方式的详细信息.然后有人可能能够确定你需要如何解密它.我以前见过这种情况未知,我设法猜测细节找到答案.我尝试了一些加密字符串的常用方法,但如果没有更多详细信息,我无法轻易解密.