close
# 定義函數:解密資料並輸出顯示 function Decrypt-DataAndDisplay { param ( [string]$EncryptedFilePath, # 加密後的檔案路徑 [string]$KeyFilePath, # 加密金鑰檔案路徑 [string]$IVFilePath # 初始化向量檔案路徑 ) Write-Host "解密資料..." try { # 讀取加密後的位元組陣列 $EncryptedBytes = [System.IO.File]::ReadAllBytes($EncryptedFilePath) # 讀取金鑰和初始化向量 $KeyBase64 = Get-Content -Path $KeyFilePath $IVBase64 = Get-Content -Path $IVFilePath # 將金鑰和初始化向量轉換為位元組陣列 $KeyBytes = [System.Convert]::FromBase64String($KeyBase64) $IVBytes = [System.Convert]::FromBase64String($IVBase64) # 建立 AES 解密演算法物件並設定金鑰與初始化向量 $AesAlg = [System.Security.Cryptography.Aes]::Create() $AesAlg.Key = $KeyBytes $AesAlg.IV = $IVBytes # 建立解密器並進行解密 $decryptor = $AesAlg.CreateDecryptor($AesAlg.Key, $AesAlg.IV) $DecryptedBytes = $decryptor.TransformFinalBlock($EncryptedBytes, 0, $EncryptedBytes.Length) # 將解密後的位元組陣列轉換為文字 $DecryptedText = [System.Text.Encoding]::UTF8.GetString($DecryptedBytes) Write-Host "解密結果:" -ForegroundColor Green Write-Host $DecryptedText } catch { Write-Host "解密過程中發生錯誤: $_" -ForegroundColor Red } finally { if ($AesAlg) { $AesAlg.Dispose() } if ($decryptor) { $decryptor.Dispose() } } } # 設定檔案路徑 $KeyFilePath = "C:\temp\aes_key.txt" # 加密金鑰檔案路徑 $IVFilePath = "C:\temp\aes_iv.txt" # 初始化向量檔案路徑 $EncryptedFilePath = "C:\temp\encrypted_data.txt" # 加密後的資料檔案路徑 # 呼叫解密函式,解密加密後的資料並顯示 Decrypt-DataAndDisplay -EncryptedFilePath $EncryptedFilePath -KeyFilePath $KeyFilePath -IVFilePath $IVFilePath
參考資料:
ChatGPT 問答測試結果
全站熱搜
留言列表