Verschlüsselung funktioniert nicht mit C# System.security.CryptographieC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Verschlüsselung funktioniert nicht mit C# System.security.Cryptographie

Post by Anonymous »

Ich habe versucht, eine JSON-Anfrage mit einem Schlüssel, Hex und Textbody zu entschlüsseln, aber alle Codes, die ich gefunden habe, stammen von 2013 bis 2017.

Code: Select all

namespace AES {
using System.IO;
using System;
using System.Security.Cryptography;

class Program {

public static byte[] FromBase64Url(string base64Url) {
// Replace '-' with '+' and '_' with '/' for standard Base64
string base64 = base64Url.Replace('-', '+').Replace('_', '/');

// Add padding if necessary. Base64 strings should have a length that is a multiple of 4.
/**/
int padding = 3 - ((base64.Length + 3) % 4);
if (padding > 0) {
base64 += new string('=', padding);
}
//*/
// Convert the Base64 string to a byte array
return Convert.FromBase64String(base64);
}

static void Main(string[] args) {
var mode = "CFB";
var message = "HgnDCsJPaosJkvCF8jqPHUdSOVtCO2GeVQWiBCV9ocDRDM2EGUzNYRXy";
byte[] encrypted;
var plaintext = "";

//if (args.Length >0) mode=args[0];
if (args.Length > 1) message = args[1];

try {

using
var aes = Aes.Create();

aes.Mode = CipherMode.CFB;

if (mode == "CBC") aes.Mode = CipherMode.CBC;

else if (mode == "CFB") aes.Mode = CipherMode.CFB;
else if (mode == "CTS") aes.Mode = CipherMode.CTS;
else if (mode == "ECB") aes.Mode = CipherMode.ECB;
else if (mode == "OFB") aes.Mode = CipherMode.OFB;

byte[] temp_iv = Convert.FromHexString("76396c566a476c4c50694e376469487a"); // Convert IV from hex to bytes
byte[] temp_key = System.Text.Encoding.UTF8.GetBytes("ei9dzmx9f3l2CdFliYMb7iwJ7d0ce58d");
byte[] temp_message = FromBase64Url(message);

aes.Key = temp_key;
aes.IV = temp_iv;
//aes.Padding = PaddingMode.PKCS7;
aes.Padding = PaddingMode.None;

ICryptoTransform encryptor = aes.CreateEncryptor();
ICryptoTransform decryptor = aes.CreateDecryptor();

using(MemoryStream msEncrypt = new MemoryStream()) {
using(CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) {
using(StreamWriter swEncrypt = new StreamWriter(csEncrypt)) {
swEncrypt.Write(message);
}
encrypted = msEncrypt.ToArray();
msEncrypt.Close();
csEncrypt.Close();
}
}

using(MemoryStream msDecrypt = new MemoryStream(temp_message)) {
using(CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) {
using(StreamReader plainTextReader = new StreamReader(csDecrypt)) {
plaintext = plainTextReader.ReadToEnd();

msDecrypt.Close();
csDecrypt.Close();
}

}
}

string str1 = "Message: " + message;

str1 = str1 + "\nIV " + BitConverter.ToString(aes.IV);
str1 = str1 + "\nKey " + BitConverter.ToString(aes.Key);
str1 = str1 + "\nMode: " + mode;

str1 = str1 + "\n\nCipher: " + BitConverter.ToString(encrypted).Replace("-", string.Empty);
str1 = str1 + "\nCipher: " + Convert.ToBase64String(encrypted);
str1 = str1 + "\nDecrypted Byte Code: " + BitConverter.ToString(temp_message);
str1 = str1 + "\nDecrypted: " + plaintext;

Console.WriteLine("{0}", str1);

} catch(Exception e) {
Console.WriteLine("Error: {0}", e);
}

}
}
}
Die VAR -Nachricht ist eine verschlüsselte JSON -Daten. Ich habe den Wert dort bereitgestellt, damit jeder sie selbst ausführen kann. Es handelt sich um eine Base64String. Ich habe alle Codings und alle Algorithmen zum Entschlüsseln ausprobiert (es wurde mit CFB codiert, aber für den Fall, dass ich alle Basen bedeckte)
Das Ergebnis:

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post