سلام وقت بخیر. چطور میتونم فایل ویدئویی رو از طریق encrypt لاراول، رمزگذاری کنم؟ هیچ tutorial درستی متاسفانه یافت نکردم
باید فایل رو fopen کنم و داده هاشو دسته به دسته encrypt کنم یا راه بهتری هم هست؟
همچنین چطور میتونم decrypt کنم؟
ممنون میشم راهنماییم کنید.
@mhonarvar18
سلام دوست عزیز من برای یک پروژه ای همین کارو انجام دادم با وسواس و تحقیق زیاد به این نتیجه رسیدم که هم سرعتش بالا باشه هم امنیتش خوب باشه و از openssl استفاده کردم:
//encrypt
public function encryptData(Request $request)
{
$file = $request->file('file');
$fileName = now()->timestamp . "." . $file->getClientOriginalExtension();
$cipher = 'aes-128-ctr';
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$key = env('APP_KEY');
$encrypted = openssl_encrypt(file_get_contents($file->getRealPath()), $cipher, $key, OPENSSL_RAW_DATA, $iv);
$content = base64_encode($iv . $encrypted);
file_put_contents('/uploads/files/${filename}', $content);
}
//decrypt
public function decryptData($filename)
{
$cipher = 'aes-128-ctr';
$ivlen = openssl_cipher_iv_length($cipher);
$filePath = public_path("/uploads/{$filename}");
$data = base64_decode(file_get_contents($filePath));
$iv = substr($data, 0, $ivlen);
$encData = substr($data, $ivlen);
$key = env('APP_KEY');
$decrypted = openssl_decrypt($encData, $cipher, $key, OPENSSL_RAW_DATA, $iv);
$temp = tempnam(sys_get_temp_dir(), 'TMP_');
file_put_contents($temp, $decrypted);
return response()->json([
'data' => [
'file' => $temp
]
]);
}
@eng.tehrani
سلام ممنون از راهنماییتون. دادهء رمزگذاری شده رو ک داخل $content ریختیم، چطور و کجا ازش استفاده میکنیم؟
مثلا من یک فایل ویدئویی آپلود کردم و حالا با استفاده از این متد محتویاتشو رمزگذاری کردم. وقتی فایل رو move میکنم به مسیر دلخواهم فایل رمزگذاری نشده چون باز میشه. چطور اون $content رو به فایل ربط بدم؟
درود...
لینک زیر:
https://www.codeproject.com/Questions/695141/protecting-videos-from-being-stolen-in-browser
آموزش انکریپت و دیکریپت کردن فایل در یوتیوب موجود است!
@mhonarvar18
معذرت میخوام یادم رفت انتهای کد رو برای کار شما سفارشی سازی کنم شما با دستور file_put_contents میتونید اون داده رو هر جا خواستین ذخیره کنید
پست قبلیمو براتون اصلاح کردم
@eng.tehrani
سپاس فراوان از شما. یکم جستجو کردم اون قسمت رو هم حل کردم. متشکرم از راهنمایی ارزشمندتون _
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟