通常,我使用openssl_encrypt
在PHP中使用AES加密簡單的字符串,並且它工作得很好。使用PHP OpenSSL加密文件
現在我需要使用AES-256-CTR模式加密文件,但唯一的方法就是將文件的全部內容file_get_contents
然後發送到openssl_encrypt
函數來加密實際的文件數據。問題是這種方法由於內存的嚴重浪費而非常「貧乏」。
1)有沒有辦法使用PHP OpenSSL分塊數據?
例如:
<?php
// ...
$f = fopen('large.iso','r');
while(feof($f)){
$chunk = fread($f,16);
$cipher = openssl_encrypt(...$chunk...);
// ... code ...
}
// ... more code ...
?>
2)openssl_encrypt
正式文件尚未發佈。有人可以澄清用於AES-CTR模式的功能參數的含義嗎?計數器是否自動處理?是否需要應用手動異或函數返回的數據?
注意:這是一個專業的項目,所以我不想使用phpseclib
或其他的「匿名」庫,也不想使用命令行。
感謝發佈,但我的主題不是非對稱加密。 1 /我的第一個問題是;有沒有辦法通過PHP OpenSSL對稱加密(AES)在全球範圍內工作(CBC,ECB,CTR,...)? 2 /我的第二個問題是關於CTR模式,特別是AES對稱加密以及PHP OpenSSL如何實現。我知道PHP OpenSSL支持AES-256-CTR,因爲當我執行'openssl_get_cipher_methods'時,它就在這裏! –