ফাইলগুলি এনক্রিপ্ট / ডিক্রিপ্ট করতে ওপেনএসএসএল কীভাবে ব্যবহার করবেন?


205

আমি একটি পাসওয়ার্ড ব্যবহার করে একটি ফাইল ক্রিপ্ট এবং ডিক্রিপ্ট করতে চাই।

এটি করতে আমি কীভাবে ওপেনএসএসএল ব্যবহার করতে পারি?


2
পাসওয়ার্ড ব্যবহার করে আপনার একটি কী এবং IV পাওয়া উচিত PKCS5_PBKDF2_HMACEVP_*এনক্রিপ্ট এবং ডিক্রিপ্ট করার জন্য আপনার ফাংশনগুলি ব্যবহার করা উচিত । ওপেনএসএসএল উইকিতে ইভিপি সিমেট্রিক এনক্রিপশন এবং ডিক্রিপশন দেখুন । আসলে, আপনার সম্ভবত প্রমাণীকৃত এনক্রিপশন ব্যবহার করা উচিত কারণ এটি গোপনীয়তা এবং সত্যতা উভয়ই সরবরাহ করে । ওপেনএসএসএল উইকিতে ইভিপি প্রমাণীকৃত এনক্রিপশন এবং ডিক্রিপশন দেখুন ।
jwww

3
আপনি কেন ওপেনএসএসএল চান তা আপনার প্রশ্ন থেকে বোঝেন না। নীচে একটি মন্তব্য দেখায় জিপিজি আরও ভাল - সুরক্ষার কারণেও। stackoverflow.com/a/31552829/952234 আমি ভোট দিয়েছি।
ইয়ারোস্লাভ নিকিতেনকো

উত্তর:


261

সুরক্ষা সতর্কতা : AES-256-CBC প্রমাণীকৃত এনক্রিপশন সরবরাহ করে না এবং ওরাকল আক্রমণগুলিকে প্যাডিংয়ের পক্ষে ঝুঁকিপূর্ণ । পরিবর্তে আপনার বয়সের মতো কিছু ব্যবহার করা উচিত ।

এনক্রিপ্ট:

openssl aes-256-cbc -a -salt -in secrets.txt -out secrets.txt.enc

ডিক্রিপ্ট:

openssl aes-256-cbc -d -a -in secrets.txt.enc -out secrets.txt.new

বিভিন্ন পতাকা আরও বিশদ


18
ওপির ব্যবহারের ক্ষেত্রে নির্ভর করে উত্তর সম্ভবত অনুকূল নয় (এই লেখা হিসাবে)। বিশেষত "-a" প্যারামিটারগুলি সম্ভবত অনুকূল নয় এবং উত্তরটির ব্যবহারটি ব্যাখ্যা করে না। "-a" সাধারণত ব্যবহৃত হয় যখন এনক্রিপ্ট করা আউটপুট ASCII / পাঠ্য আকারে প্রেরণ করা হয় এবং বাইনারি ফর্মের তুলনায় আউটপুট আকার বাড়ানোর প্রভাব ফেলে। মূল পোস্টার আউটপুট ফর্ম্যাট নির্দিষ্ট করে না এবং তাই আমি অনুভব করি যে খুব কমপক্ষে এটি উল্লেখ করা উচিত। উত্তর দেখুন: স্ট্যাকওভারফ্লো.com/ a / 31552829 / 952234 এতে আপনার এই কাজের জন্য ওপেনসেলের পরিবর্তে জিপিজি কেন ব্যবহার করা উচিত সে সম্পর্কে একটি নোট অন্তর্ভুক্ত রয়েছে।
moo

7
কোনও বিকাশ নেই বলে উপরের কমান্ডটি ব্যবহার করবেন না। এখানে আরও পড়ুন:
ওপেনসেল

একটি কীও নির্দিষ্ট করা উচিত, বা কোথা থেকে এসেছে তা উল্লেখ করা উচিত। এটা কি শক্তিশালী হয়?
টুনটেবল

2
সর্বশেষ ম্যান পেজ অনুসারে @ জোনাসল বলেছেন, "ওপেনসেল ১.১.০-তে ডিফল্ট ডাইজেস্টটি এমডি 5 থেকে SHA256 এ পরিবর্তন করা হয়েছিল।" সূত্র: github.com/openssl/openssl/blob/master/doc/man1/enc.pod
কেবম্যান

2
@ কেবম্যানের মন্তব্যে যুক্ত করে, আপনি -md sha256যদি অন্য কোনও মেশিনে এই ফাইলটি ব্যবহার করার পরিকল্পনা করেন তবে আপনি আপনার এনকোড এবং ডিকোড কমান্ডে যুক্ত করতে পারেন । এটি আপনাকে ওপেনএসএসএল সংস্করণের অসঙ্গতি / পার্থক্যের বিরুদ্ধে আচ্ছাদিত করবে
দেব-রোউবট

162

সংক্ষিপ্ত উত্তর:

আপনি সম্ভবত এর gpgপরিবর্তে ব্যবহার করতে চান opensslতাই এই উত্তরটির শেষে "অতিরিক্ত নোটগুলি" দেখুন । তবে ব্যবহার করে প্রশ্নের উত্তর দিতে openssl:

এনক্রিপ্ট করতে:

openssl enc -aes-256-cbc -in un_encrypted.data -out encrypted.data

ডিক্রিপ্ট করতে:

openssl enc -d -aes-256-cbc -in encrypted.data -out un_encrypted.data

দ্রষ্টব্য: এনক্রিপ্ট বা ডিক্রিপ্ট করার সময় আপনাকে একটি পাসওয়ার্ডের জন্য অনুরোধ জানানো হবে।


দীর্ঘ উত্তর:

আপনার তথ্যের সর্বোত্তম উত্স openssl encসম্ভবত হ'ল: https://www.openssl.org/docs/man1.1.1/man1/enc.html

কমান্ড লাইন: openssl enc নিম্নলিখিত ফর্ম গ্রহণ করে:

openssl enc -ciphername [-in filename] [-out filename] [-pass arg]
[-e] [-d] [-a/-base64] [-A] [-k password] [-kfile filename] 
[-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md] [-p] [-P] 
[-bufsize number] [-nopad] [-debug] [-none] [-engine id]

আপনার প্রশ্নের সাথে সর্বাধিক দরকারী পরামিতিগুলির ব্যাখ্যা:

-e
    Encrypt the input data: this is the default.

-d    
    Decrypt the input data.

-k <password>
    Only use this if you want to pass the password as an argument. 
    Usually you can leave this out and you will be prompted for a 
    password. The password is used to derive the actual key which 
    is used to encrypt your data. Using this parameter is typically
    not considered secure because your password appears in 
    plain-text on the command line and will likely be recorded in 
    bash history.

-kfile <filename>
    Read the password from the first line of <filename> instead of
    from the command line as above.

-a
    base64 process the data. This means that if encryption is taking 
    place the data is base64 encoded after encryption. If decryption 
    is set then the input data is base64 decoded before being 
    decrypted.
    You likely DON'T need to use this. This will likely increase the
    file size for non-text data. Only use this if you need to send 
    data in the form of text format via email etc.

-salt
    To use a salt (randomly generated) when encrypting. You always
    want to use a salt while encrypting. This parameter is actually
    redundant because a salt is used whether you use this or not 
    which is why it was not used in the "Short Answer" above!

-K key    
    The actual key to use: this must be represented as a string
    comprised only of hex digits. If only the key is specified, the
    IV must additionally be specified using the -iv option. When 
    both a key and a password are specified, the key given with the
    -K option will be used and the IV generated from the password 
    will be taken. It probably does not make much sense to specify 
    both key and password.

-iv IV
    The actual IV to use: this must be represented as a string 
    comprised only of hex digits. When only the key is specified 
    using the -K option, the IV must explicitly be defined. When a
    password is being specified using one of the other options, the 
    IV is generated from this password.

-md digest
    Use the specified digest to create the key from the passphrase.
    The default algorithm as of this writing is sha-256. But this 
    has changed over time. It was md5 in the past. So you might want
    to specify this parameter every time to alleviate problems when
    moving your encrypted data from one system to another or when
    updating openssl to a newer version.

অতিরিক্ত নোট:

যদিও আপনি বিশেষত ওপেনএসএসএল সম্পর্কে জিজ্ঞাসা করেছেন আপনি এই নিবন্ধটির উপর ভিত্তি করে জিপিজি ব্যবহারের পরিবর্তে জিপিজি ব্যবহারের বিষয়ে বিবেচনা করতে চাইতে পারেন ওপেনএসএসএল বনাম জিপিজি অফ সাইট ব্যাকআপ এনক্রিপ্ট করার জন্য?

জিপিজি ব্যবহার করতে আপনি নিম্নলিখিত কমান্ডগুলি ব্যবহার করতে পারেন:

এনক্রিপ্ট করতে:

gpg --output encrypted.data --symmetric --cipher-algo AES256 un_encrypted.data

ডিক্রিপ্ট করতে:

gpg --output un_encrypted.data --decrypt encrypted.data

দ্রষ্টব্য: এনক্রিপ্ট বা ডিক্রিপ্ট করার সময় আপনাকে একটি পাসওয়ার্ডের জন্য অনুরোধ জানানো হবে।


8
ওপেনএসএসএল-এর চেয়ে জিপিজিকে প্রাধান্য দেওয়ার বিষয়ে দুর্দান্ত মন্তব্য। আমি এটি অবিশ্বাস্য মনে করি যে ওপেনএসএসএল কীটির জন্য এই জাতীয় দুর্বল পাসওয়ার্ড প্রাপ্ত হ্যাশ ব্যবহার করে!
চিহ্নিত করুন

2
সুনির্দিষ্ট -Md বিকল্প ব্যতীত পুরানো ওপেনসেল-এ এনক্রিপ্ট করা ফাইলগুলির সাথে সামঞ্জস্যের জন্য "-md md5" বিকল্পটি ব্যবহার করা নিশ্চিত করুন, অন্যথায় আপনি দেখতে পাবেন যে ফাইলগুলি নতুন সিস্টেমে ডিক্রিপ্ট হবে না: github.com/libressl-portable/ পোর্টেবল / ইস্যু / 378
স্যাম লিডিকোট

1
ওপেনসেলের সংস্করণের মধ্যে ডিফল্ট মান পরিবর্তন হয়। 1.0.x -md বিকল্পের জন্য md5 এর একটি ডিফল্ট ব্যবহার করে। সংস্করণ 1.1.x sha256 ব্যবহার করে। যদি আপনি ডিক্রিপ্ট করেন এবং একটি ": ডিজিটাল খামের রুটিনগুলি পান: EVP_DecryptFinal_ex: খারাপ ডিক্রিপ্ট" ত্রুটি। "-md md5" বা "-md sha256" উল্লেখ করার চেষ্টা করুন।
txyoji

1
"এনক্রিপ্ট বা ডিক্রিপ্ট করার সময় আপনাকে একটি পাসওয়ার্ডের জন্য অনুরোধ জানানো হবে।" gpgআমাকে পাসওয়ার্ডের জন্য অনুরোধ না করে একটি ফাইল ডিক্রিপ্ট করতে দিচ্ছে। দেখে মনে হচ্ছে পাসওয়ার্ডটি কিছু সময়ের জন্য সঞ্চয় করা আছে যা আমি চাই না।
ব্যবহারকারী 76284

1
@moo এটিও মনে হয় যে বিকল্পটি --no-symkey-cacheজিপিজি ব্যবহার করে ক্যাশে অক্ষম করে --symmetric, এমনকি এজেন্ট চলমান থাকলেও।
ব্যবহারকারী 76284

32

এনক্রিপ্ট:

openssl enc -in infile.txt -out encrypted.dat -e -aes256 -k symmetrickey

ডিক্রিপ্ট:

openssl enc -in encrypted.dat -out outfile.txt -d -aes256 -k symmetrickey

বিশদগুলির জন্য, openssl(1)দস্তাবেজগুলি দেখুন।


11
প্লেইন টেক্সট পাসওয়ার্ড ব্যবহার করতে বা এর -k symmetrickeyসাথে প্রতিস্থাপন করুন-pass stdin-pass 'pass:PASSWORD'
Zanexer

3
কোনও বিকাশ নেই বলে উপরের কমান্ডটি ব্যবহার করবেন না। এখানে আরও পড়ুন:
ওপেনসেল

4
@ জোনাসেলের মন্তব্যের সাথে সম্পর্কিত, নোটটি -k symmetrickeyবিভ্রান্তিকর। -kবিকল্প একটি পাসওয়ার্ড, যা থেকে দ্বারা OpenSSL প্রতিসম কী আহরিত উল্লেখ জন্য ব্যবহৃত হয়। আপনি যদি প্রতিসম কী নির্দিষ্ট করতে চান তবে আপনাকে অবশ্যই -Kবিকল্পটি ব্যবহার করতে হবে ।
ব্যবহারকারী 1071847

13

ওপেনসেল ডিফল্ট কী ডাইরিভিশন ব্যবহার করবেন না।

বর্তমানে গৃহীত উত্তর এটির ব্যবহার করে এবং এটি আর প্রস্তাবিত এবং সুরক্ষিত থাকে না।

আক্রমণকারীটির পক্ষে কীটিকে জোর করে চাপিয়ে দেওয়া খুব সম্ভব।

https://www.ietf.org/rfc/rfc2898.txt

পিবিকেডিএফ 1 একটি হ্যাশ ফাংশন প্রয়োগ করে, যা কী প্রাপ্ত করার জন্য এমডি 2 [6], এমডি 5 [19] বা এসএএএ -1 [18] হবে। উত্পন্ন কীটির দৈর্ঘ্য হ্যাশ ফাংশন আউটপুটের দৈর্ঘ্যের সাথে আবদ্ধ, যা MD2 এবং MD5 এর 16 টি অক্টেট এবং SHA-1 এর জন্য 20 অক্টেট। পিবিসিডিএফ 1 পিকেসিএস # 5 ভি 1.5-তে কী ডেরাইভেশন প্রক্রিয়ার সাথে সামঞ্জস্যপূর্ণ। পিবিকেডিএফ 1 কেবল বিদ্যমান অ্যাপ্লিকেশনগুলির সাথে সামঞ্জস্যের জন্যই সুপারিশ করা হয় যেহেতু এটি উত্পন্ন কীগুলি কিছু অ্যাপ্লিকেশনের পক্ষে যথেষ্ট পরিমাণে বড় না হতে পারে।

পিবিকেডিএফ 2 কী ব্যবহার করার জন্য একটি সিউডোরানডম ফাংশন প্রয়োগ করে (উদাহরণস্বরূপ পরিশিষ্ট B.1 দেখুন)। উত্পন্ন চাবিটির দৈর্ঘ্য মূলত সীমাহীন। (তবে, অন্তর্নিহিত সিউডোরোডম ফাংশনের কাঠামোর দ্বারা উদ্ভূত কীটির সর্বাধিক কার্যকর অনুসন্ধানের জায়গা সীমাবদ্ধ হতে পারে further আরও আলোচনার জন্য পরিশিষ্ট B.1 দেখুন)) নতুন অ্যাপ্লিকেশনগুলির জন্য পিবিকেডিএফ 2 প্রস্তাবিত।

এটা কর:

openssl enc -aes-256-cbc -pbkdf2 -iter 20000 -in hello -out hello.enc -k meow

openssl enc -d -aes-256-cbc -pbkdf2 -iter 20000 -in hello.enc -out hello.out

দ্রষ্টব্য : ডিক্রিপশনে আইট্রেশনগুলি এনক্রিপশনে পুনরাবৃত্তির মতো হতে হবে।

আইট্রেশনগুলি সর্বনিম্ন 10000 হতে হবে ite পুনরাবৃত্তির সংখ্যার জন্য এখানে একটি ভাল উত্তর: https://security.stackexchange.com/a/3993

এছাড়াও ... আমরা এখানে জিপিজির পরামর্শ দেওয়ার জন্য পর্যাপ্ত লোক পেয়েছি। জঘন্য প্রশ্ন পড়ুন।


4

এনক্রিপ্ট করতে:

$ openssl bf < arquivo.txt > arquivo.txt.bf

ডিক্রিপ্ট করতে:

$ openssl bf -d < arquivo.txt.bf > arquivo.txt

bf === সিবিসি মোডে ব্লোফিশ


3

একটি এলোমেলোভাবে উত্পন্ন সর্বজনীন কী ব্যবহার করে আপডেট করুন।

Encypt:

openssl enc -aes-256-cbc -a -salt -in {raw data} -out {encrypted data} -pass file:{random key}

ডিক্রিপ্ট:

openssl enc -d -aes-256-cbc -in {ciphered data} -out {raw data}

আমি এটার উপর একটি পূর্ণ টিউটোরিয়াল আছে http://bigthinkingapplied.com/key-based-encryption-using-openssl/


3

নোট করুন যে ওপেনএসএসএল সিএলআই পাসফ্রেজকে কীতে রূপান্তর করতে একটি দুর্বল অ-মানক অ্যালগরিদম ব্যবহার করে এবং আপনার হোম ডিরেক্টরিতে যুক্ত জিপিজি ফলাফলগুলি বিভিন্ন ফাইল যুক্ত করে এবং একটি জিপিজি-এজেন্ট ব্যাকগ্রাউন্ড প্রক্রিয়া চলছে। আপনি যদি বিদ্যমান সরঞ্জামগুলির সাথে সর্বাধিক পোর্টেবিলিটি এবং নিয়ন্ত্রণ চান তবে আপনি পিএইচপি বা পাইথন ব্যবহার করতে পারেন নিম্ন স্তরের এপিআইগুলি অ্যাক্সেস করতে এবং সরাসরি একটি পূর্ণ এইএস কী এবং আইভিতে পাস করতে।

বাশের মাধ্যমে পিএইচপি প্রার্থনার উদাহরণ:

IV='c2FtcGxlLWFlcy1pdjEyMw=='
KEY='Twsn8eh2w2HbVCF5zKArlY+Mv5ZwVyaGlk5QkeoSlmc='
INPUT=123456789023456

ENCRYPTED=$(php -r "print(openssl_encrypt('$INPUT','aes-256-ctr',base64_decode('$KEY'),OPENSSL_ZERO_PADDING,base64_decode('$IV')));")
echo '$ENCRYPTED='$ENCRYPTED
DECRYPTED=$(php -r "print(openssl_decrypt('$ENCRYPTED','aes-256-ctr',base64_decode('$KEY'),OPENSSL_ZERO_PADDING,base64_decode('$IV')));")
echo '$DECRYPTED='$DECRYPTED

এই ফলাফলগুলি:

$ENCRYPTED=nzRi252dayEsGXZOTPXW
$DECRYPTED=123456789023456

আপনি openssl_pbkdf2কোনও পাসফ্রেজকে নিরাপদে কোনও কীতে রূপান্তর করতে পিএইচপি এর ফাংশন ব্যবহার করতে পারেন ।


ওপেনসেল সিএলআই এখন ব্যবহারকারীদের সাবধান করে দেয় এবং তাদের পাসওয়ার্ড হ্যাশিংয়ের জন্য পিবিকেডিএফ 2 ব্যবহার করা উচিত। তবে এর ডিফল্ট পুনরাবৃত্তি গণনা খুব কম, এবং এটি আরও অনেক বড় হওয়া দরকার।
এন্থনি

2

একটি ওপেন সোর্স প্রোগ্রাম রয়েছে যা আমি অনলাইনে দেখতে পাই এটি ফাইলগুলি এনক্রিপ্ট এবং ডিক্রিপ্ট করার জন্য ওপেনসেল ব্যবহার করে। এটি একক পাসওয়ার্ড দিয়ে এটি করে। এই ওপেন সোর্স স্ক্রিপ্টের দুর্দান্ত জিনিসটি হ'ল এটি ফাইলটি ছাঁটাই করে মূল এনক্রিপ্ট করা ফাইলটি মুছে দেয়। তবে বিপজ্জনক বিষয়টি হ'ল একবার মূল এনক্রিপ্ট করা ফাইলটি চলে গেলে আপনাকে নিজের পাসওয়ার্ড মনে আছে তা নিশ্চিত করতে হবে অন্যথায় তারা আপনার ফাইলটি ডিক্রিপ্ট করার অন্য কোনও উপায় নয়।

এখানে লিঙ্কটি এটি গিথুবে রয়েছে

https://github.com/EgbieAnderson1/linux_file_encryptor/blob/master/file_encrypt.py


ফাইল এনক্রিপশনের জন্য ওপেনসেল ব্যবহার করার সময় জিনিসগুলি পরিবর্তিত হয়েছে, সেগুলি অনেক বেশি বিকল্প, যা আপনাকে স্মরণে রাখা দরকার যাতে আপনি এনক্রিপ্ট করা ফাইলগুলি সাফল্যের সাথে ডিক্রিপ্ট করতে পারেন। এই ওয়ান সমাধান "keepout" হয় antofthy.gitlab.io/software/#keepout
এন্থনি

2

অন্যান্য উত্তরে উল্লিখিত হিসাবে, ওপেনসেলের পূর্ববর্তী সংস্করণগুলি পাসওয়ার্ড থেকে একটি এইএস এনক্রিপশন কী অর্জন করতে একটি দুর্বল কী ডেরাইভেশন ফাংশন ব্যবহার করেছে। যাইহোক, ওপেনসেল ভি 1.1.1 একটি শক্তিশালী কী ডেরিভিশন ফাংশন সমর্থন করে, যেখানে পাসওয়ার্ড ব্যবহার করে কীটি উত্পন্ন হয়েছেpbkdf2 এলোমেলোভাবে উত্পন্ন লবণের উত্পন্ন হয়েছে, এবং sha256 হ্যাশিংয়ের একাধিক পুনরাবৃত্তি (ডিফল্টরূপে 10,000)।

একটি ফাইল এনক্রিপ্ট করতে:

 openssl aes-256-cbc -e -salt -pbkdf2 -iter 10000 -in plaintextfilename -out encryptedfilename

একটি ফাইল ডিক্রিপ্ট করতে:

  openssl aes-256-cbc -d -salt -pbkdf2 -iter 10000 -in encryptedfilename -out plaintextfilename

কোনটি এই বিকল্পগুলি পরিবর্তিত রাখে, তার মানে প্রতিটি ওপেনসেল এনক্রিপ্ট করা ফাইল তৈরি করার সময় আপনাকে কী বিকল্পগুলি ব্যবহার করা হয়েছিল তা রেকর্ড রাখতে হবে। বিশেষত সময়ের সাথে পুনরাবৃত্তির সংখ্যা বাড়ানো উচিত! একটি সমাধানের জন্য ওপেনএসএল এনক্রের আশেপাশে তুলনামূলকভাবে সহজ মোড়ক হিসাবে দেখুন ... "কিপআউট" antofthy.gitlab.io/software/#keepout এটি আরও ওপেনসেল অন্তর্ভুক্ত করতে প্রসারিত হতে পারে সময় চলে গেছে।
এন্থনি

@ অ্যান্থনি দেখতে একটি দরকারী প্রকল্পের মতো। এছাড়াও github.com/meixler/web-browser-based-file-encryption-decryption দেখুন
mti2935

0

ভাল উত্তর mti2935 অতিরিক্ত মন্তব্য।

মনে হয় উচ্চতর পুনরাবৃত্তিটি ব্রুটের বিরুদ্ধে প্রতিরোধের আরও ভাল সুরক্ষা, এবং আপনার উচ্চতর পুনরাবৃত্তিটি ব্যবহার করা উচিত কারণ আপনি দক্ষতা / সংস্থান অনুসারে দক্ষতা অর্জন করতে পারেন afford

আমার পুরানো ইন্টেল i3-7100 এর পরিবর্তে একটি বড় ফাইল 1.5 জিবি এনক্রিপ্ট করছে:

 time openssl enc -aes256 -e -pbkdf2 -iter 10000 -pass pass:"mypassword" -in "InputFile" -out "OutputFile"
 Seconds: 2,564s

 time openssl enc -aes256 -e -pbkdf2 -iter 262144 -pass pass:"mypassword" -in "InputFile" -out "OutputFile"
 Seconds:  2,775s

আসলে কোনও পার্থক্য নয়, যদিও (?) মেমরির ব্যবহার পরীক্ষা করে নি

আজকের জিপিইউ এবং আরও দ্রুতগতির সাথে, আমি অনুমান করি বিলিয়ন ব্রুট ফোর্স পুনরাবৃত্তি প্রতি সেকেন্ডে সম্ভব বলে মনে হচ্ছে।

12 বছর আগে কNVIDIA GeForce 8800 Ultra 200.000 মিলিয়ন / সেকেন্ড পুনরাবৃত্তি পুনরুক্তি করতে পারে (যদিও MD5 হ্যাশিং)

উত্স: আইনেন-ব্যারেট-জনসন-ভিভার-ওপেনএসএসএল.পিডিএফ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.