Post by BFSPost by RobertoAPost by BFScriptare in AES256 con vettore di inizializzazione e psw
qualcuno ha sviluppato qualcosa in merito?
questo sarebbe il codice in c#
private string encrypt(string text)
{
byte[] plaintextbytes =
System.Text.ASCIIEncoding.ASCII.GetBytes(text);
AesCryptoServiceProvider aes = new
AesCryptoServiceProvider();
aes.BlockSize = 128;
aes.KeySize = 256;
aes.Key = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
aes.IV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
aes.Padding = PaddingMode.PKCS7;
aes.Mode = CipherMode.CBC;
ICryptoTransform crypto = aes.CreateEncryptor(aes.Key,
aes.IV);
byte[] encrypted =
crypto.TransformFinalBlock(plaintextbytes, 0, plaintextbytes.Length);
crypto.Dispose();
return Convert.ToBase64String(encrypted);
}
BFS
Hai gia' visto questo?
https://github.com/EszopiCoder/vba-crypto/blob/master/modCspAES256.bas
si ma non mi da il risultato corretto e non capisco dove sia l'inghippo
il produttore del software mi dice
Chiave di crittografia =
UkFPi7g5ApTFvcwGd6yp3Th7VjViV3WB
Vettore di inizializzazione =
8fWnMRmK4ic7qHaM
PaddingMode.PKCS7;
Mode = CipherMode.CBC;
cripatando la stringa : "000000100"
dovrei ottenere : LDfzc09JmW4xNA/Ns85TxQ==
risultato che ottengo anche con tool online e quindi corretto
invece il codice del link mi restituisce
OGZXbk1SbUs0aWM3cUhhTXMzhnGc73MnY0Ea6DemKo8=
e non capisco dove sia il problema visto che i parametri sono gli stessi
Private Sub TestEncryptAES()
Dim strEncrypted As String, strDecrypted As String
Dim strKey As String, strIV As String
strKey = "UkFPi7g5ApTFvcwGd6yp3Th7VjViV3WB"
strIV = "8fWnMRmK4ic7qHaM" ' Always 16 characters (128 bits)
' Encrypt string and hash key with SHA256 algorithm
strEncrypted = EncryptStringAES("000000100", SHA256(strKey), strIV)
Debug.Print "Encrypted string: " & strEncrypted
' Decrypt string and hash key with SHA256 algorithm
Debug.Print "IV: " & GetDecryptStringIV(strEncrypted)
strDecrypted = DecryptStringAES(strEncrypted, SHA256(strKey))
Debug.Print "Decrypted string: " & strDecrypted
End Sub
BFS
risolto
questo il codice corretto se a qualcuno servisse
Sub test()
Debug.Print encrypt("000000100")
End Sub
Function encrypt(plaintext)
Set AES = CreateObject("System.Security.Cryptography.RijndaelManaged")
Set utf8 = CreateObject("System.Text.UTF8Encoding")
AES.KeySize = 256
AES.BlockSize = 128
AES.Mode = 1 'CipherMode.CBC
AES.Padding = 2 'PaddingMode.PKCS7
AES.Key = utf8.GetBytes_4("UkFPi7g5ApTFvcwGd6yp3Th7VjViV3WB")
AES.IV = utf8.GetBytes_4("tuoVI") 'il tuo vettore di
inizializzazione lungo 16 caratteri
plainBytes = utf8.GetBytes_4(plaintext)
cipherBytes =
AES.CreateEncryptor().TransformFinalBlock((plainBytes), 0,
LenB(plainBytes)) ' LenB(plainBytes) --> UBound(plainBytes) + 1 Fix 2
encrypt = B64Encode(cipherBytes)
End Function
Function Min(a, b)
Min = a
If b < a Then Min = b
End Function
Function B64Encode(bytes)
Set b64Enc =
CreateObject("System.Security.Cryptography.ToBase64Transform")
Set utf8 = CreateObject("System.Text.UTF8Encoding")
BlockSize = b64Enc.InputBlockSize
For Offset = 0 To LenB(bytes) - 1 Step BlockSize
' LenB(bytes) - 1 --> UBound(bytes)
Length = Min(BlockSize, LenB(bytes) - Offset)
' LenB(bytes) --> UBound(bytes) + 1
Fix 1
b64Block = b64Enc.TransformFinalBlock((bytes), Offset, Length)
result = result & utf8.GetString((b64Block))
Next
B64Encode = result
End Function
BFS