Ho l'impressione che Microsoft e Mac utilizzino due diverse forme di AES

0

Ho una stringa AES prodotta con questa classe, la classe AesCryptoServiceProvider fornito da Microsoft.

E ho bisogno di decodificare questa crittografia con SSL di Ruby: : Classe di crittografia .

Il problema è che se si codifica uno con uno, non è possibile decodificarlo con l'altro.

Un esempio del mio codice VB.NET:

Private Const AesIV As String = "!QAZ2WSX#EDC4RFV"
Private Const AesKey As String = "5TGB&YHN7UJM(IK<"
aes.Mode = CipherMode.CBC
aes.Padding = PaddingMode.PKCS7
aes.BlockSize = 128
aes.KeySize = 128

Che produce questa stringa:

p6SI3+hMRFRsQG5Vk+R1YdXv9EaCsfAuB0ZSsqkBcy83ki20U0bV5TZrwxJ0C4dlpSEJDwc7b5znd/8UNXEhcXV0m8tAms3lp4ZS2aUaSfc=

E poi il mio codice rubino fa questo:

cipher = OpenSSL::Cipher::AES128.new :CBC
# ^ That's 128 bit block in CBC mode, it defaults to 128 key size
cipher.iv = "!QAZ2WSX#EDC4RFV"
cipher.key = "5TGB&YHN7UJM(IK<"

solution = cipher.update("p6SI3+hMRFRsQG5Vk+R1YdXv9EaCsfAuB0ZSsqkBcy83ki20U0bV5TZrwxJ0C4dlpSEJDwc7b5znd/8UNXEhcXV0m8tAms3lp4ZS2aUaSfc=")

> "\xAC\xF3J{Cw\x95\xD8\x0F'\xC2\xB4,\xF2\x8E\xFE\xC9\x95\xD7\xE6JcB7\v\xBA\xD8kP'\a\x80\x81\x00\xC1\xCC\xE4\x95\x9E_5Ws\xF9j\xDF\xAC\xBA\"K\xF2\xB7,\x7F4\n\r\xB2\xF5\xC7R\xCFn\x97B\x05\\xE70\\x11x\xFA\v\xA2k\xBE(\x1E\xEB*O$\xDCc\xD7\xBEfs\x99\xADD\xC0\x1F\xBB9"   

solution << cipher.final

> OpenSSL::Cipher::CipherError: wrong final block length
    
posta Trip 01.04.2014 - 12:50
fonte

1 risposta

3

Ci sono molte cose strane nella tua configurazione:

  • La modalità ECB non usa IV. Non si dovrebbe specificare un IV quando si usa la modalità ECB. O, piuttosto, non dovresti usare la BCE, che è debole (in generale).

  • AES elabora input binari, produce output binari e utilizza una chiave binaria. Non c'è alcuna stringa di caratteri in AES; quindi, qualsiasi nozione di codifica come UTF-8 dovrebbe essere completamente irrilevante e fuori dal campo di applicazione. Se devi specificare una codifica, significa che c'è una stringa di caratteri che viene convertita in byte o indietro e che può essere una fonte dei tuoi problemi.

  • Ciò che chiami "dimensione del bit" è oscuro. Un po 'è un po'. Forse vuoi dire "dimensione del blocco". AES usa blocchi di 128 bit, sempre.

risposta data 01.04.2014 - 13:05
fonte

Leggi altre domande sui tag