I angefordert wurde einige Daten zu verschlüsseln, während meines Partners JAVA API sprechen, und er schickte mir die folgenden Details über Verschlüsselungsalgorithmus:AES256 JAVA-Verschlüsselung nicht mit C# Verschlüsselung
- Algorithmus: AES256
- Schlüsselgröße: 256 Bits
- Verschlüsselungsmodus: CBC (16 Bit-Blöcke, PKCS5Padding mit 0)
- Ausgabetyp: Base-64
- Passwort: 0xA8703827AE586460105696504327B7BB0806FEAE96BD664F89E36868FBB48E3D
- IV: ein Byte [16] mit 0 Werten
verwendete ich den Code unten, aber ich habe nicht bekommen ein angepasstes Ergebnis mit ihm:
public byte[] AES_Encrypt(byte[] bytesToBeEncrypted, byte[] passwordBytes)
{
byte[] encryptedBytes = null;
byte[] saltBytes = new byte[16] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
using (MemoryStream ms = new MemoryStream())
{
using (RijndaelManaged aes = new RijndaelManaged())
{
aes.KeySize = 256;
aes.BlockSize = 128;
var key = new Rfc2898DeriveBytes(passwordBytes, saltBytes, 1000);
aes.Key = key.GetBytes(aes.KeySize/8);
aes.IV = key.GetBytes(aes.BlockSize/8);
aes.Padding = PaddingMode.PKCS7;
aes.Mode = CipherMode.CBC;
using (var cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(bytesToBeEncrypted, 0, bytesToBeEncrypted.Length);
cs.Close();
}
encryptedBytes = ms.ToArray();
}
}
return encryptedBytes;
}
public string EncryptText(string input, string password)
{
byte[] bytesToBeEncrypted = Encoding.UTF8.GetBytes(input);
byte[] passwordBytes = Encoding.UTF8.GetBytes(password);
passwordBytes = SHA256.Create().ComputeHash(passwordBytes);
byte[] bytesEncrypted = AES_Encrypt(bytesToBeEncrypted, passwordBytes);
string result = Convert.ToBase64String(bytesEncrypted);
return result;
}
wenn wir also zu verschlüsseln versuchen Hallo , Wie geht es Ihnen?, ich habe ein anderes Ergebnis bekommen und ich sollte das gleiche Ergebnis bekommen, das er hatte, da er meine gesendeten Daten auf seiner Seite entschlüsseln und verarbeiten wird. Das angegebene Beispiel sollte dieses Ergebnis haben: TJTojNoVgoqnhCj4uTv1jLBiZU7r+s/0Bm234bHU+S0=
Sie müssten den Java-Code angeben, um herauszufinden, warum sie nicht einverstanden sind. –
Der Kunde bezieht sich auf [dies] (https://dzone.com/articles/aes-256-encryption-java-and), wenn Sie nicht genug genug finden, lassen Sie mich bitte wissen, um ihn für weitere Informationen zu fragen –
Wie Sie sich selbst sehen können, sind dies große Unterschiede zwischen Ihrem Code und diesem Code, insbesondere bei der Ableitung des Schlüssels und der IV. –