У меня есть база данных, которая удаляется, но хранит «секреты», и мне нужно иметь возможность зашифровать данные и сохранить их на машине с Windows, а затем расшифровать на машине с Linux.
У меня есть часть шифрования в PowerShell, однако я не знаю, правильно ли я подаю ключ шифрования и вектор инициализации в python, потому что он неправильно расшифровывается.
вот код powershell для чтения паролей в незашифрованном виде и их шифрования:
$key = New-Object Byte[] 32
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($key)
$AES = New-Object System.Security.Cryptography.AesManaged
$iv = $AES.IV
$key = $AES.Key
$iv | Out-File IV.key
$key | Out-File AES.key
$raw = Get-Content -Path .\passwords.txt -Raw
foreach ($line in -split $raw) {
$secure_pass = ConvertTo-SecureString -String $line -AsPlainText -Force
$encrypted_pass = ConvertFrom-SecureString -SecureString $secure_pass -key $key
$encrypted_pass | Add-Content encrypted_passes.txt
}
и это код дешифрования в python:
rom Crypto import Random
from Crypto.Cipher import AES
key = open("AES.key","r")
iv = open("IV2.key","r")
password_file = open("encrypted_passes.txt","r")
iv_text = iv.read()
key_text = key.read()
iv_base = base64.b64encode(iv_text)
print "IV: " + iv_base[:16]
base_key = base64.b64encode(key_text)
aes = AES.new(base_key[:32], AES.MODE_CBC, iv_base[:16])
print len(iv_base)
for line in password_file:
print line
print "blah: " + aes.decrypt(line[:32])
Я бы хотел, чтобы python прочитал зашифрованный файл паролей и смог правильно его расшифровать.