Encrypted string From Delphi to C#

后端 未结 4 749
猫巷女王i
猫巷女王i 2021-01-14 07:06

i am trying to decrypt one string in c# encrypted in Delphi with Cipher1 3.0, Part I from Delphi Encryption Compendium. I use TCipher_Rijndael.

string that i encr

相关标签:
4条回答
  • 2021-01-14 07:28

    My guess is that the Delphi encryption encodes the string as an Ansi string (one byte per character) and the C# encryption encodes the string as a Unicode UTF16 string (two bytes per character). If you are using Delphi 2007 and below this is almost certainly the case.

    PS The length of the encrypted string in Delphi is also a bit of a giveaway - 32 characters for a 22 character raw string implies one byte per character - this is not the case for C#.

    0 讨论(0)
  • 2021-01-14 07:34

    You are saying that you can encrypt in C# and decrypt in C#. You can also encrypt in C# and decrypt in Delphi. This means that your C# encryption is definitely fine. That leaves just one possible culprit: Delphi encryption.

    So do this:

    • Encrypt in C#.
    • Encrypt in Delphi.
    • Compare the outputs.

    They can't possibly be the same. See in what way they differ. Is one Base64-encoded and the other just raw bytes? Is one padded with == and the other not? Do they use different Base64 variants?

    0 讨论(0)
  • 2021-01-14 07:45

    You need to determine all of the details of how that value was encrypted:

    1. What block cipher mode of operation was used? ECB tends to be a default.
    2. What padding scheme was used? Perhaps no padding in your case.
    3. How was the key derived from the password? Perhaps with PBKDF2 or simply a MD5 hash.
    4. What was the initialization vector? Note that only some cipher modes require one.
    5. How was the output encoded? It appears to be Base64 encoding for you.

    Only once you know exactly how it was encrypted can you reverse the process to properly decrypt it. You might want to try posting more code or details about how it was encrypted. Then someone might be able to determine how you need to go about decrypting it. I've seen this scenario with unknowns before and I managed to guess the details to find the answer. I tried a few common ways with your encrypted string, but I can't easily decrypt it without more details.

    0 讨论(0)
  • 2021-01-14 07:50

    Try going the other way. i.e. encrypt the string in c# and see if it matches. See if your C# solution can even eat its own dogfood.

    0 讨论(0)
提交回复
热议问题