رمزگذاری فایل ویدئویی با encrypt

- 3 هفته پیش
توسط Mohammad Honarvar آپدیت شد
Mohammad Honarvar ( 155 تجربه )
3 هفته پیش

سلام وقت بخیر. چطور میتونم فایل ویدئویی رو از طریق encrypt لاراول، رمزگذاری کنم؟ هیچ tutorial درستی متاسفانه یافت نکردم
باید فایل رو fopen کنم و داده هاشو دسته به دسته encrypt کنم یا راه بهتری هم هست؟
همچنین چطور میتونم decrypt کنم؟
ممنون میشم راهنماییم کنید.

بهترین پاسخ انتخاب شده توسط Mohammad Honarvar
مهدی طهرانی
3 هفته پیش

@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
            ]
        ]);
    }
مهدی طهرانی ( 9891 تجربه )
3 هفته پیش

@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
            ]
        ]);
    }
ایمان آل طه ( 123 تجربه )
3 هفته پیش

از این میتونید استفاده کنید

https://github.com/jeskew/php-encrypted-streams

Mohammad Honarvar ( 155 تجربه )
3 هفته پیش

@eng.tehrani
سلام ممنون از راهنماییتون. دادهء رمزگذاری شده رو ک داخل $content ریختیم، چطور و کجا ازش استفاده میکنیم؟
مثلا من یک فایل ویدئویی آپلود کردم و حالا با استفاده از این متد محتویاتشو رمزگذاری کردم. وقتی فایل رو move میکنم به مسیر دلخواهم فایل رمزگذاری نشده چون باز میشه. چطور اون $content رو به فایل ربط بدم؟

رایموند دراگون ( 28833 تجربه )
3 هفته پیش

درود...
لینک زیر:
https://www.codeproject.com/Questions/695141/protecting-videos-from-being-stolen-in-browser
آموزش انکریپت و دیکریپت کردن فایل در یوتیوب موجود است!

مهدی طهرانی ( 9891 تجربه )
3 هفته پیش

@mhonarvar18
معذرت میخوام یادم رفت انتهای کد رو برای کار شما سفارشی سازی کنم شما با دستور file_put_contents میتونید اون داده رو هر جا خواستین ذخیره کنید
پست قبلیمو براتون اصلاح کردم

Mohammad Honarvar ( 155 تجربه )
3 هفته پیش

@eng.tehrani
سپاس فراوان از شما. یکم جستجو کردم اون قسمت رو هم حل کردم. متشکرم از راهنمایی ارزشمندتون _

برای ارسال پاسخ باید وارد سایت شوید