প্রযুক্তিগত গাইড
সম্পূর্ণ প্রযুক্তিগত গাইড: আর্কিটেকচার ও .nik ফরম্যাট, কম্প্রেশন ইঞ্জিন ও মিডিয়া কোডেক, এনক্রিপশন ডিজাইন ও কোয়ান্টাম প্রতিরোধ, হার্ডেনিং, সব বেঞ্চমার্ক, এবং বিল্ড, পরীক্ষা ও রোডম্যাপ নোট।
1 ভূমিকা
.nik ফরম্যাটের জন্য একটি কমান্ড-লাইন আর্কাইভার। এটি চারটি লক্ষ্যকে ঘিরে নকশা করা হয়েছে: প্রতিষ্ঠিত টুলগুলোর চেয়ে ভালো কমপ্রেস করা, আরও দ্রুত করা, আধুনিক ক্রিপ্টোগ্রাফি দিয়ে ডেটা সুরক্ষিত করা এবং Windows, macOS ও Linux-এ একটি একক ছোট এক্সিকিউটেবল হিসেবে অপরিবর্তিতভাবে চালানো।1.1 নকশার লক্ষ্য
ছোট। মানুষ যে ডেটা আসলে বাল্কে আর্কাইভ করে, তাতে RAR 7-কে হারানো। অডিও, ছবি ও ট্র্যাকার মিউজিক কনটেন্ট দিয়ে শনাক্ত করা হয় এবং বিশেষায়িত লসলেস কোডেক দিয়ে কমপ্রেস করা হয়; বাকি সবকিছু একটি টিউন করা, মাল্টি-থ্রেডেড Zstandard স্ট্রিম ব্যবহার করে। দ্রুত। কম্প্রেশন ও এক্সট্র্যাকশন CPU নয়, ডিস্ক দ্বারা সীমাবদ্ধ হওয়া উচিত। এর দ্রুত স্তর -m2-তে nikpak একটি কোর-এ প্রায় 200 MB সোর্স ফাইল এক সেকেন্ডেরও কম সময়ে আর্কাইভ করে। নিরাপদ। মেমরি-হার্ড কী ডেরিভেশন ফাংশনসহ অথেন্টিকেটেড এনক্রিপশন, ফাইলের নাম সবসময় গোপন, বিকৃতি সবসময় শনাক্ত, এবং এমন একটি এক্সট্র্যাক্টর যাকে তার গন্তব্য ফোল্ডারের বাইরে লেখার জন্য প্রতারিত করা যায় না। কোয়ান্টাম-প্রতিরোধী। শুধুমাত্র 256-বিট সিমেট্রিক ক্রিপ্টোগ্রাফি ব্যবহৃত হয়। nikpak-এর কোথাও কোনো RSA, কোনো ইলিপ্টিক-কার্ভ এবং কোনো Diffie-Hellman কোড নেই, তাই Shor-এর অ্যালগরিদমের ভাঙার মতো কিছুই নেই। পোর্টেবল এবং স্ক্রিপ্টযোগ্য। একটি স্ট্যাটিকভাবে লিংক করা এক্সিকিউটেবল, RAR-সামঞ্জস্যপূর্ণ কমান্ড লাইন, অনুমানযোগ্য এক্সিট কোড এবং একটি -helpযা প্রতিটি অপশন নথিভুক্ত করে।
1.2 এক নজরে ফলাফল
| 0.9 s | ||
সব পরিমাপ এসেছে একটি মেশিন (Linux x86-64 ভার্চুয়াল মেশিন, একটি CPU কোর) থেকে, RAR 7.00 এবং nikpak 1.1.0 সহ। প্রতিটি আর্কাইভ আবার এক্সট্র্যাক্ট করে মূলের সাথে বাইট-বাই-বাইট তুলনা করা হয়েছে। সম্পূর্ণ পদ্ধতি, কর্পোরা এবং যে ক্ষেত্রে RAR দ্রুত, তা 11 অধ্যায়ে বর্ণিত হয়েছে। |
1.3 এটি কার জন্য?
1.4 এই গাইড কীভাবে পড়বেন
1.5 কমিউনিটি ও যোগাযোগ
Telegramhttps://t.me/cryptonikko Xhttps://x.com/cryptonikkoid Discordhttps://discord.com/users/1537826350759415811
2 বৈশিষ্ট্যের সংক্ষিপ্ত বিবরণ
2.1 ক্ষমতা
2.2 nikpak এবং RAR পাশাপাশি
|
| ||
|---|---|---|
| 9.7 - 16.7 s (-m3) | ||
3 কমান্ড-লাইন রেফারেন্স
nikpak [options] [files...]। অপশন আর্কাইভ নামের আগে বা পরে যেকোনো জায়গায় আসতে পারে; -- অপশন পার্সিং শেষ করে।3.1 কমান্ড
a | .nik যুক্ত হয়। ফোল্ডার সবসময় রিকার্সিভভাবে নেওয়া হয়। |
x | -d dir) গন্তব্য নির্বাচন করে। |
e | |
l | |
v | |
lb | |
t | |
p | |
d | |
mt | |
(none) |
3.2 অপশন
-p |
-e | |
-p |
-P | |
-hp[password] |
| |
-m0
.. -m5 |
-0
.. -9 | |
-mt |
| |
-mc- / -mc+ |
| |
-r |
| |
-ep |
-j | |
-ep1 |
| |
-o+ |
-o | |
-o- |
-n | |
-or |
| name (1).ext। |
-y |
| |
-x |
-x | |
-d |
-d | x ও e-এর জন্য গন্তব্য ফোল্ডার। |
-inul -idq |
-q | |
@listfile |
| |
-h -help -? |
| -V ভার্সন প্রিন্ট করে। |
-s, -ma5, -md64m, -ibck, -idp, -rr, -ts*, -w এবং অনুরূপ) সেগুলো গৃহীত ও উপেক্ষা করা হয়, যাতে বিদ্যমান টুল কনফিগারেশন কাজ করতে থাকে। অন্য যেকোনো কিছু একটি স্পষ্ট ত্রুটি বার্তা ও এক্সিট কোড 7 উৎপন্ন করে।nikpak --add ও --add-here দেওয়া আইটেমগুলোকে একটি নতুন আর্কাইভে কমপ্রেস করে, nikpak --install-menu ও --uninstall-menu রাইট-ক্লিক মেনু যোগ বা সরিয়ে দেয় (--all-users সব ব্যবহারকারীর ইনস্টলের জন্য), এবং unNik --extract, --extract-here ও --extract-to মেনু থেকে এক্সট্র্যাকশন চালায়।3.3 পাসওয়ার্ড বিস্তারিতভাবে
-p দিয়ে একটি আর্কাইভ তৈরি হয়, nikpak এই ক্রমে পাসওয়ার্ড নির্ধারণ করে, এবং কিছু না দেওয়া হলে কখনো শুধু সেজন্য ব্যর্থ হয় না:কমান্ড লাইনে -pবা-P: যেমন আছে তেমন ব্যবহৃত হয় (সর্বনিম্ন 8 অক্ষর)।এনভায়রনমেন্ট ভেরিয়েবল NIKPAK_PASSWORD, যা পাসওয়ার্ডকে প্রসেস তালিকার বাইরে রাখে।একটি ইন্টারঅ্যাক্টিভ প্রম্পট, নিশ্চিতকরণের জন্য দুবার জিজ্ঞাসা করা হয়। খালি এন্ট্রি একটি র্যান্ডম পাসওয়ার্ড তৈরি করে। টার্মিনাল ছাড়া (উদাহরণস্বরূপ একটি GUI-এর ভেতরে), stdin-এ পাইপ করা পাসওয়ার্ড; কিছু না থাকলে একটি র্যান্ডম পাসওয়ার্ড তৈরি হয়।
3.4 এক্সিট কোড
| 0 |
| |
| 1 | ||
| 2 | ||
| 3 | ||
| 7 | ||
| 10 | ||
| 11 |
3.5 উদাহরণ
nikpak a backup.nik C:\Docs\*.txt Photos\ # create an archive
nikpak a -m5 -mt8 big.nik Projects\ # maximum, 8 threads
nikpak a -p secret.nik Taxes2026\ # encrypted, prompts
nikpak a -pMyLongPassw0rd s.nik f.pdf # password given
nikpak x backup.nik C:\Restore\ # extract with paths
nikpak e backup.nik *.jpg C:\Pics\ # only *.jpg, flat
nikpak x backup.nik Docs/report.pdf # extract ONE file
nikpak e backup.nik Docs/report.pdf -d C:\Out # one file, no path
nikpak x backup.nik Photos -d C:\Restore # one folder
nikpak l backup.nik *.pdf # list only PDFs
nikpak p backup.nik notes.txt # show a file
nikpak d backup.nik Temp *.bak # delete entries
nikpak l backup.nik # list
nikpak t secret.nik # test (asks password)
nikpak mt song.wav tracker.mod photo.bmp # which filter wins?
3.6 Total Commander ও অন্যান্য ফ্রন্ট-এন্ডের সাথে সংযুক্তি
a, x, e, l, t, @listfile, -p, -ep1, -o+, -y, -m), তাই একটি প্রোগ্রাম যা একটি বাহ্যিক rar.exe চালাতে পারে, তা nikpak.exe চালাতে পারে। Total Commander-এ, Configuration, Packer, Additional packer programs-এর অধীনে nik এক্সটেনশন রেজিস্টার করুন এবং প্যাকার ও আনপ্যাকার কমান্ড nikpak.exe-তে নির্দেশ করুন। অটেন্ডেড এক্সট্র্যাকশনের জন্য -o+ বা -y ব্যবহার করুন, কারণ কনসোল ছাড়া nikpak ওভাররাইট করতে জিজ্ঞাসা করতে পারে না এবং বরং বিদ্যমান ফাইল এড়িয়ে যাবে। মেনুর নাম Total Commander ভার্সন অনুযায়ী ভিন্ন হয়; সঠিক ফিল্ডগুলোর জন্য এর বিল্ট-ইন সাহায্য দেখুন।একটি উদ্ধৃত পাথ যা একটি ব্যাকস্ল্যাশ দিয়ে শেষ হয়, যেমন "C:\My Folder\", Windows ভুলভাবে পার্স করে (শেষ উদ্ধৃতিটি এস্কেপড বলে ধরা হয়)। স্পেসযুক্ত গন্তব্যের জন্য বরং -d "C:\My Folder" ব্যবহার করুন। |
3.7 গ্রাফিক্যাল ইন্টারফেস

একটি ফাইল বা একটি ফোল্ডার ড্রপ করুন, বা একসাথে একাধিক, উইন্ডোর উপর; অথবা একটি ডায়ালগে বেছে নিতে বৃত্তটিতে ক্লিক করুন (বা choose files / choose a folder লিংকে); বৃত্তে ক্লিক করলে রিং-এর ভেতরে Choose files ও Choose a folder দুটি বাটন দেখায়। সেগুলো সেরা কম্প্রেশনে (-m5) একটি আর্কাইভে কমপ্রেস হয়, যার নাম ফাইলের (এক্সটেনশন ছাড়া), ফোল্ডারের, বা একাধিক আইটেমের ক্ষেত্রে যে ফোল্ডার থেকে এসেছে তার নামে হয়। একটি বিদ্যমান আর্কাইভ কখনো ওভাররাইট হয় না: report.nik হয় report (2).nik। প্রগ্রেস একটি বৃত্তাকার মিটারের ভেতরে বড় শতাংশ হিসেবে দেখানো হয়, সাথে ধাপ (বিশ্লেষণ, কমপ্রেস, শেষ করা), প্রসেস করা পরিমাণ ও সময়। এর নিচের বাতিল বাটনটি (বা Esc কী) একটি দীর্ঘ কম্প্রেশন সাথে সাথে থামিয়ে দেয় এবং অসমাপ্ত আর্কাইভ সরিয়ে দেয়; উইন্ডোটি পরেরটির জন্য খোলা থাকে। কম্প্রেশনের সময় উইন্ডো বন্ধ করলেও একই ঘটে। সম্পন্ন: রিংটি সবুজ হয়ে যায় এবং আর্কাইভের নাম, মূলের তুলনায় এর আকার ও সময় দেখায়। Show in folder এটি Explorer, Finder বা ফাইল ম্যানেজারে খোলে; Compress more (বা বৃত্তে একটি ক্লিক) পরেরটি শুরু করে। যেখানে সংরক্ষণ হবে: নিচের গন্তব্য ফোল্ডারটি টাইপ করে বা Browse দিয়ে বেছে নেওয়া যায়। এটি পরের বারের জন্য মনে রাখা হয় (Windows: %APPDATA%\nikpak\settings.txt; macOS: ~/Library/Application Support/nikpak; Linux: ~/.config/nikpak)। প্রথমবার এটি ডেস্কটপ হয়। কমিউনিটি: নিচে ডানদিকের তিনটি গোল বাটন nikpak-এর Telegram, X ও Discord পেজ খোলে (অনুচ্ছেদ 1.5)। unNik-এ যান: i বাটনের বামে, উপরের দিকে তীরওয়ালা গোল বাটনটি NikPak বন্ধ করে unNik চালু করে (অনুচ্ছেদ 3.9)। একটি কম্প্রেশনের পরে, এটি এবং সম্পন্ন স্ক্রিনের unNik-এ খুলুন লিংকটি নতুন আর্কাইভটি সাথে সাথে খোলে। কম্প্রেশনের সময় বাটনটি নিষ্ক্রিয় থাকে। গন্তব্য ফোল্ডার খুলুন: Save to ফিল্ড ও Browse-এর মাঝের ফোল্ডার বাটনটি সেই ফোল্ডারটি Explorer বা Finder-এ খোলে; একটি কম্প্রেশনের পরে এটি নতুন আর্কাইভটি নির্বাচিত অবস্থায় খোলে। শব্দ: বাটন, লিংক ও অপশনের জন্য একটি নরম ক্লিক, এবং প্রতিটি কাজের জন্য একটি ছোট শব্দ (কাজ শুরু, সফল, ত্রুটি, বাতিল, প্রোগ্রাম পরিবর্তন, উইন্ডোর উপর ফাইল ভাসা)। এগুলো প্রোগ্রাম নিজেই তৈরি করে, কোনো সাউন্ড ফাইল নেই। টাইটেল বারের স্পিকার বাটন সেগুলো বন্ধ ও চালু করে; ডিফল্টে সেগুলো চালু থাকে, এবং পছন্দটি unNik-এর সাথে ভাগ করা হয়। ভাষা: নিচে বামদিকের বাটনটি, একটি পতাকা ও ভাষার নিজস্ব নামসহ, বিশ্বের দশটি সবচেয়ে বেশি কথ্য ভাষার একটি মেনু খোলে (Ethnologue 2025): English, 中文 (Mandarin Chinese), हिन्दी (Hindi), Español, العربية (Arabic), Français, বাংলা (Bengali), Português, Русский (Russian) এবং Bahasa Indonesia। একটি বেছে নিলে সেটি সংরক্ষিত হয় এবং nikpak সেই ভাষায় পুনরায় চালু হয়। প্রথমবার, nikpak Windows-এর (বা সিস্টেমের) ভাষা অনুসরণ করে, নাহলে English। কমান্ড লাইন English-এই থাকে। অ্যাডমিনিস্ট্রেটর হিসেবে চালানো: Windows অ্যাডমিনিস্ট্রেটর হিসেবে চলা কোনো প্রোগ্রামের উপর Explorer থেকে ফাইল টেনে আনা অনুমোদন করে না। যখন nikpak.exe অ্যাডমিনিস্ট্রেটর হিসেবে চালু হয় (উদাহরণস্বরূপ একটি অ্যাডমিনিস্ট্রেটর PowerShell থেকে), এটি নিজেকে একবার একজন সাধারণ ব্যবহারকারী হিসেবে Explorer দিয়ে পুনরায় চালু করে যাতে ড্র্যাগ অ্যান্ড ড্রপ কাজ করে। তা সম্ভব না হলে উইন্ডোটি একটি নোটিশ দেখায়; তখন বাটন দিয়ে ফাইল বেছে নিন। স্ট্যাটাস ও About: উপরে বামে EVALUATION COPY · REGISTER (একটি ক্লিক রেজিস্ট্রেশন বক্স খোলে) বা REGISTERED TO এবং লাইসেন্সধারীর নাম দেখানো হয়। উপরে ডানদিকের ছোট i বাটনটি, মিনিমাইজ ও ক্লোজের পাশে, About বক্স খোলে: ভার্সন, © 2026 Nicolas Choukroun, Nikkoid LLC দ্বারা পরিবেশিত, লাইসেন্স স্ট্যাটাস, ওয়েব সাইট ও লাইসেন্স শর্তাবলি (LICENSE.txt)।
cargo build --release --no-default-features দিয়ে।
3.8 লাইসেন্স ও রেজিস্ট্রেশন (শেয়ারওয়্যার)


রিমাইন্ডারটি দেখা দেয় যখন একটি অনিবন্ধিত কপি তার উইন্ডো খোলে। এতে দুটি বাটন আছে, রেজিস্টার করুন ও বিনামূল্যে পরীক্ষা করুন, যাদের বাম/ডান ক্রম প্রতিটি শুরুতে এলোমেলোভাবে বদলায়। বিনামূল্যে পরীক্ষা করুন (বা Esc) এটি বন্ধ করে; এরপর nikpak কোনো সীমাবদ্ধতা ছাড়াই কাজ করে। রেজিস্ট্রেশন বক্সটি নাম, ই-মেইল ঠিকানা ও লাইসেন্স কী চায়। তিনটিই মিলতে হবে: কীটি নাম ও ই-মেইলের একটি স্বাক্ষর। বড়/ছোট হাতের অক্ষর, অতিরিক্ত স্পেস এবং দেখতে একই রকম অক্ষর O/0 ও I/L/1 কোনো ব্যাপার নয়। লাইসেন্স কিনুন খোলে https://nikpak.nikkoid.com/buy.php। একবার রেজিস্টার হলে nikpak সেই কম্পিউটারে সেই ব্যবহারকারীর জন্য আর কখনো জিজ্ঞাসা করে না। লাইসেন্সটি %APPDATA%\nikpak\license.txt-তে সংরক্ষিত হয় (macOS: ~/Library/Application Support/nikpak; Linux: ~/.config/nikpak)। একটি কোম্পানি বরং nikpak.exe-এর পাশে একটি ফাইল nikpak.keyরাখতে পারে, যা সেই PC-র প্রতিটি ব্যবহারকারীকে রেজিস্টার করে।কমান্ড লাইন: nikpak register "Jane Doe" jane@example.com NPK1-…রেজিস্টার করে;nikpak licenseস্ট্যাটাস দেখায়;nikpak unregisterলাইসেন্স সরিয়ে দেয়।nikpak -Vওnikpak -helpস্ট্যাটাসও দেখায়। অনিবন্ধিত কপি ত্রুটি আউটপুটে (stderr) একটি এক-লাইনের মূল্যায়ন নোটিশ প্রিন্ট করে, কখনো স্ট্যান্ডার্ড আউটপুটে নয়; -q এটি চাপা দেয়।
কীগুলো কীভাবে কাজ করে
NPK1- দিয়ে, এরপর পাঁচটির দলে 108টি অক্ষর (Crockford base32)। এতে লাইসেন্স টাইপ (ব্যক্তিগত বা কোম্পানি), সিট সংখ্যা এবং NIKPAK-LICENSE-1, টাইপ, সিট, নাম ও ই-মেইল ঠিকানার একটি Ed25519 স্বাক্ষর থাকে, প্রতিটি নরমালাইজ করা (স্পেস গুটিয়ে ফেলা, ছোট হাতের অক্ষর)। nikpak-এ শুধু 32-বাইট পাবলিক কী থাকে, src/license_pubkey.rs-এ, তাই প্রোগ্রামটি পড়াশোনা করলে কেউ কী তৈরি করতে পারবে না।nikpak-keygen দিয়ে (cargo run --release --features keygen --bin nikpak-keygen -- make --name "Jane Doe" --email jane@example.com; কোম্পানির জন্য --company --seats 25; newkeys একটি নতুন কী জোড়া তৈরি করে) অথবা ওয়েব সার্ভারে server/-এর PHP কিট দিয়ে (PHP 7.2+, MySQL 5.7), যা প্রতি পেমেন্টে একটি কী ইস্যু করে এবং হুবহু একই কী তৈরি করে। server/README.md সেটআপ ও পেমেন্ট প্রবাহ বর্ণনা করে।3.9 unNik, বিনামূল্যের আর্কাইভ ব্রাউজার


নেভিগেট করুন ফোল্ডার ট্রি, ব্রেডক্রাম্ব, Back, Forward ও Up (Alt+Left, Alt+Right, Backspace) এবং ডাবল-ক্লিক দিয়ে। সার্চ (Ctrl+F) পুরো আর্কাইভে নাম দিয়ে ফাইল খুঁজে পায়; প্রতিটি ফলাফল তার ফোল্ডার দেখায়। নির্বাচন করুন একটি ক্লিক, Ctrl+ক্লিক, Shift+ক্লিক, চেক বক্স, Ctrl+A বা অ্যারো কী দিয়ে। নাম, আকার, টাইপ বা তারিখ অনুযায়ী সাজাতে একটি কলামের শিরোনামে ক্লিক করুন। একটি রাইট-ক্লিক প্রতিটি কাজসহ একটি মেনু খোলে। সব এক্সট্র্যাক্ট করুন, বা নির্বাচনটি (Ctrl+E): গন্তব্য বেছে নিন (ডিফল্টে আর্কাইভের নামে একটি ফোল্ডার, এর পাশে), ফোল্ডার রাখবেন কি না, এবং একটি ফাইল ইতিমধ্যে থাকলে কী করবেন: প্রতিস্থাপন করুন, দুটোই রাখুন (name (1).ext) বা এড়িয়ে যান। একটি ফোল্ডারের ভেতর থেকে নেওয়া ফাইল সেই ফোল্ডারের পাথ ছাড়াই তৈরি হয়, WinRAR-এর মতো। শেষ নির্বাচিত ফাইলের ঠিক পরেই পড়া থামে। দেখুন (F3, বা একটি টেক্সট ফাইলে ডাবল-ক্লিক): লাইন নম্বরসহ টেক্সট, হাইলাইটিংসহ সার্চ, লাইন র্যাপিং ও কপি; বাইনারি ফাইল হেক্সাডেসিমালে। প্রথম 16 MB দেখানো হয়; Notepad-এ খুলুন পুরো ফাইলটি খোলে। খুলুন একটি ফাইলকে তার নিজস্ব প্রোগ্রাম দিয়ে চালু করে (প্রথমে এটি একটি অস্থায়ী ফোল্ডারে এক্সট্র্যাক্ট হয়)। মুছুন (Del) একটি নিশ্চিতকরণের পরে আর্কাইভ থেকে ফাইল ও ফোল্ডার সরিয়ে দেয়। আর্কাইভটি সলিড, তাই এটি তাদের ছাড়া আবার লেখা হয়, একটি অস্থায়ী ফাইলে যা শুধুমাত্র সবকিছু সফল হলে মূলটিকে প্রতিস্থাপন করে। এনক্রিপ্টেড আর্কাইভ তাদের পাসওয়ার্ড ধরে রাখে; অন্য এন্ট্রিগুলো তাদের মিডিয়া বা Deflate ফিল্টার ও তাদের -m5 ইঞ্জিন ধরে রাখে। টেস্ট পুরো আর্কাইভটি ডিকমপ্রেস করে এবং প্রতিটি ফাইল পরীক্ষা করে। বিবরণ প্যানেলটি আকার, তারিখ, ফোল্ডার, CRC32, ফাইলটি কীভাবে সংরক্ষিত ও এর অ্যাট্রিবিউট দেখায়; আর্কাইভের নিজের জন্য এর আকার, পদ্ধতি ও এনক্রিপশন। ট্রির নিচের সারাংশটি কত জায়গা সাশ্রয় হলো তা দেখায়। NikPak-এর মতোই একই দশটি ভাষা, ভাষা বাটন, About বক্স (i) ও কমিউনিটি বাটন। যেকোনো লিপির ফাইলের নাম ফলব্যাক হিসেবে সিস্টেমের ফন্ট দিয়ে আঁকা হয়। NikPak-এ যান: i বাটনের বামে, নিচের দিকে তীরওয়ালা গোল বাটনটি unNik বন্ধ করে NikPak চালু করে। দুটি প্রোগ্রামই একই ফোল্ডারে পাওয়া যায়। তারা একটি সেটিংস ফাইল ভাগ করে, তাই একটিতে বেছে নেওয়া ভাষা অন্যটি ব্যবহার করে, এবং ইতিমধ্যে খোলা একটি উইন্ডো দুই সেকেন্ডের মধ্যে পরিবর্তনটি অনুসরণ করে। গন্তব্য ফোল্ডার খুলুন: ইজেক্ট বাটনের বামের বাটনটি শেষ এক্সট্র্যাকশনের ফোল্ডারটি Explorer বা Finder-এ খোলে (কোনো এক্সট্র্যাকশনের আগে, আর্কাইভের ফোল্ডার)। unNik NikPak-এর মতোই শব্দ বাজায়, আর্কাইভ খোলা, এক্সট্র্যাক্ট করা, মুছে ফেলা ও টেস্ট করার শব্দসহ; এর স্পিকার বাটন ও NikPak-এর সেটিং একটিই ভাগ করে।

3.10 স্কিন
স্কিন বাটন (একটি প্যালেট, উভয় প্রোগ্রামের টাইটেল বারে): স্কিন মেনু খোলে, যেখানে প্রতিটি স্কিন তার নিজস্ব রঙে আঁকা হয়। একটি স্কিনের দিকে ইশারা করলে তা পুরো উইন্ডোতে দেখানো হয়; একটি ক্লিক তা রাখে; Esc বা বাইরে একটি ক্লিক আগের স্কিনে ফিরে যায়। এর পাশের সূর্য / চাঁদ বাটন এক ক্লিকে Nikkoid Blue (গাঢ়) ও Nikkoid Bright-এর মধ্যে বদলায়। স্কিন বক্সটি প্রোগ্রামের বাইরে দাঁড়িয়ে থাকে। বক্সটি খোলা থাকাকালীন উইন্ডোটি বক্সের প্রস্থ পরিমাণ ডানদিকে বড় হয়: প্রোগ্রামটি তার 500 × 560 প্যানেল ধরে রাখে এবং বক্সটি পাশের অতিরিক্ত স্বচ্ছ জায়গায় বসে, তাই চেষ্টা করা স্কিনের পেছনে পুরো ইন্টারফেস দৃশ্যমান থাকে। বক্সটিকে তার টাইটেল বার ধরে প্রোগ্রামের উপর বা উইন্ডোর অন্য যেকোনো জায়গায় টেনে নেওয়া যায়, এবং এতে Apply Skin ও বাতিল বাটন আছে। একটি স্কিনে ক্লিক করলে তা পুরো উইন্ডোতে চেষ্টা হয়; Apply তা রাখে এবং উভয় প্রোগ্রামের জন্য সংরক্ষণ করে; বাতিল (বা Esc বা ×) আগের স্কিনে ফিরে যায়। প্রোগ্রামে একটি ক্লিক আর বক্সটি বন্ধ করে না। unNik-এর উইন্ডো বড় হয় না। নির্বাচিত স্কিনটি সংরক্ষিত হয় (সেটিংস ফাইলে skin=) এবং ভাগ করা হয়: এক প্রোগ্রামে বেছে নেওয়া একটি স্কিন দুই সেকেন্ডের মধ্যে অন্যটি গ্রহণ করে।আপনার নিজস্ব স্কিন: মেনুর নিচে “Import a skin…” একটি Nikkomander .skin.jsonফাইল পড়ে (একটি নাম ও রঙের একটি তালিকা) এবং সেটিংস ফাইলের পাশেরskinsফোল্ডারে কপি করে; একটি ইমপোর্ট করা স্কিনের টাইলের × এটি সরিয়ে দেয়।আঁকা স্কিনগুলো ইন্টারফেসের পেছনে চলে যায়। আঁকা ব্যাকগ্রাউন্ডগুলো src/skin_scenes.rsদিয়ে আঁকা হয়, CSS গ্র্যাডিয়েন্ট দিয়ে নয়, তাই সেগুলো যেকোনো উইন্ডো আকারে স্কেল করে। 1.6.2 থেকে প্রতিটি একটিdiscreet()পাসের মধ্য দিয়ে যায়src/skin.rs-এ: শিল্পটি তার নিজস্ব স্থানীয় গড়ের দিকে টানা হয়, হালকাভাবে ঝাপসা করা হয় এবং স্কিনের ব্যাকগ্রাউন্ড রঙের দিকে মিলিয়ে দেওয়া হয় — সবচেয়ে বেশি ড্রপ রিং ও টেক্সট কলামের পেছনে, লোগোর উপর একটু বেশি — যাতে শিরোনাম, রিং ও স্ট্যাটাস টেক্সট চৌদ্দটিতেই পরিষ্কার থাকে।
3.11 ফাইল-ম্যানেজার মেনু
nikpak --install-menu; macOS: Finder Quick Actions)।ফাইল ও ফোল্ডারে: আর্কাইভে যোগ করুন… (নাম ও ফোল্ডার চায়, তারপর NikPak উইন্ডোতে কমপ্রেস করে) এবং এখানে আর্কাইভে যোগ করুন (আর্কাইভটি আইটেমগুলোর পাশে যায়, উইন্ডোতে ড্রপের মতো নামকরণ করা হয়)। .nik আর্কাইভে: unNik দিয়ে খুলুন, ফাইল এক্সট্র্যাক্ট করুন…, এখানে এক্সট্র্যাক্ট করুন এবং নিজস্ব ফোল্ডারে এক্সট্র্যাক্ট করুন। একাধিক আইটেম একটি আর্কাইভে যায়; একাধিক নির্বাচিত আর্কাইভ এক উইন্ডোতে একটির পর একটি এক্সট্র্যাক্ট হয়। কমান্ডগুলো unNik.exe দিয়ে চলে, তাই কোনো কনসোল উইন্ডো ফ্ল্যাশ করে না; লেবেলগুলো NikPak-এর ভাষা অনুসরণ করে। Windows 10 সাবমেনুটি সরাসরি দেখায়, Windows 11 আরও অপশন দেখুন (Shift+F10)-এর অধীনে; Linux যোগ করে KDE Dolphin সার্ভিস মেনু, Nemo অ্যাকশন ও Nautilus স্ক্রিপ্ট, আর macOS যোগ করে Finder Quick Actions। মেনুর ব্যবহৃত নতুন কমান্ড-লাইন অপশন: nikpak --addও--add-here(দেওয়া আইটেমগুলো কমপ্রেস করে),nikpak --install-menu,--uninstall-menuও--all-users;unNik --extract,--extract-hereও--extract-to। Extract here / to its own folder প্রগ্রেস রিংসহ unNik-এর ছোট উইন্ডো দেখায় (এনক্রিপ্টেড আর্কাইভের জন্য পাসওয়ার্ড বক্স) এবং সব এক্সট্র্যাক্ট হয়ে গেলে তা বন্ধ করে; সতর্কতা ও ত্রুটি স্ক্রিনে থাকে।একটি দ্বিতীয় সেটআপ, unnik--setup.exe, শুধুমাত্র unNik (বিনামূল্যের ব্রাউজার) ইনস্টল করে, যারা শুধু .nik আর্কাইভ গ্রহণ করে তাদের জন্য; NikPak ইতিমধ্যে ইনস্টল থাকলে এটি শুধু প্রোগ্রামটি ইনস্টল করে, তাই মেনুগুলো কখনো দ্বিগুণ হয় না।
4 আর্কিটেকচার
4.1 একটি আর্কাইভ তৈরি করার সময় ডেটা প্রবাহ

Write ট্রেইটের একটি ইমপ্লিমেন্টেশন, তাই একই কোড পাথ একটি প্লেইন আর্কাইভ, একটি এনক্রিপ্টেড আর্কাইভ এবং মিডিয়া ট্রায়াল পরিবেশন করে।4.2 সোর্স কোড মানচিত্র
main.rs | nikpak lb x | head)। |
cli.rs | -help টেক্সট। Clap-শৈলীর লাইব্রেরিগুলো -pSECRET বা -m5-এর মতো সুইচ সঠিকভাবে প্রকাশ করতে পারে না। |
archive.rs | |
media.rs | |
nac.rs | |
bits.rs | |
crypto.rs | |
format.rs | |
util.rs | |
error.rs | |
engine.rs | |
recomp.rs | |
gui.rs | |
unnik.rs | |
lib.rs, bin/unnik.rs | |
license.rs | |
i18n.rs | |
textshape.rs |
4.3 একটি আর্কাইভ তৈরি, ধাপে ধাপে
যাচাই করুন আউটপুট অবস্থান। একটি বিদ্যমান আর্কাইভ শুধু -o+(বা একটি ইন্টারঅ্যাক্টিভ হ্যাঁ) দিয়ে প্রতিস্থাপিত হয়; নাহলে nikpak ব্যাখ্যা করে যে অ্যাপেন্ডিং সমর্থিত নয়।সংগ্রহ করুন ইনপুট: ওয়াইল্ডকার্ড সম্প্রসারিত হয় (PowerShell তা করে না), @listfilesপড়া হয়, বর্জন প্রয়োগ হয়, সিমলিংক ও বিশেষ ফাইল সতর্কতাসহ এড়িয়ে যাওয়া হয়, এবং আর্কাইভটি কখনো নিজের সাথে যোগ হয় না।নির্ধারণ করুন পাসওয়ার্ড যদি এনক্রিপশন চাওয়া হয় (অনুচ্ছেদ 3.3) এবং Argon2id দিয়ে কী ডেরাইভ করুন। লিখুন হেডার, তারপর রাইটার চেইন তৈরি করুন: ফাইল, বাফারড রাইটার, ঐচ্ছিক চাংক এনক্রিপ্টর, Zstandard এনকোডার। লিখুন প্রতিটি এন্ট্রি। মিডিয়া ফাইল শনাক্তকরণ ও ট্রায়ালের মধ্য দিয়ে যায় (7 অধ্যায়); বাকি সবকিছু 256 KiB টুকরোয় কপি হয় যখন একটি CRC32 গণনা হয়। লিখুন এন্ড মার্কার এন্ট্রি সংখ্যাসহ, Zstandard ফ্রেম শেষ করুন, চূড়ান্ত এনক্রিপ্টেড চাংকটি সিল করুন এবং ডিস্কে ফ্লাশ করুন। নাম বদলান name.nik.tmpথেকেname.nik। আগে কিছু ব্যর্থ হলে, একটি গার্ড অবজেক্ট অস্থায়ী ফাইলটি মুছে দেয়, তাই একটি অর্ধ-লেখা আর্কাইভ কখনো একটি ভালোটিকে প্রতিস্থাপন করে না।
4.4 একটি আর্কাইভ এক্সট্র্যাক্ট করা, ধাপে ধাপে
পড়ুন ও যাচাই করুন হেডার: ম্যাজিক, ভার্সন, ফ্ল্যাগ, পদ্ধতি এবং, এনক্রিপ্টেড আর্কাইভের ক্ষেত্রে, Argon2id প্যারামিটার, যা কোনো মেমরি বরাদ্দের আগে রেঞ্জ-চেক করা হয়। পান পাসওয়ার্ড এবং কী ডেরাইভ করুন। প্রথম অথেন্টিকেটেড চাংকটি তারপর পাসওয়ার্ডটি প্রমাণ বা অপ্রমাণ করে। হাঁটুন এন্ট্রি স্ট্রিম। প্রতিটি এন্ট্রি নাম যেকোনো ফাইল সিস্টেম অ্যাক্সেসের আগে স্যানিটাইজ করা হয় (অনুচ্ছেদ 10.1)। লিখুন ফাইল create_newদিয়ে, টাইমস্ট্যাম্প ও অনুমতি সেট করুন, এবং পুনর্গঠিত বাইটের CRC32 যাচাই করুন। একটি ফাইল যার CRC ব্যর্থ হয় তা রাখার বদলে মুছে ফেলা হয়।যাচাই করুন আর্কাইভের শেষ: এন্ড মার্কারের পরে স্ট্রিমটি সত্যিই শেষ হতে হবে এবং, এনক্রিপ্টেড হলে, চূড়ান্ত অথেন্টিকেটেড চাংকটি প্রসেস হয়েছে কি না তা দেখতে হবে। এটি কাটা ও যোগ করা ডেটা ধরে।
4.5 মেমরি ও থ্রেডিং
-mt)। ডিকম্প্রেশন, অডিও কোডেক ও এনক্রিপশন কলিং থ্রেডে চলে। Argon2id-এর কী ডেরিভেশনের জন্য 64 MiB লাগে, এবং সর্বোচ্চ দুটি স্তর একটি 128 MiB ম্যাচ উইন্ডো ব্যবহার করে, তাই এমন আর্কাইভ ডিকমপ্রেস করতে ততটুকু মেমরি লাগে।5 .nik কন্টেইনার ফরম্যাট
.nik ফাইল হলো একটি ছোট স্থির হেডার এবং তারপর একটি বডি। বডিটি একটি সলিড স্ট্রিম: সব এন্ট্রি সংযোজিত, একসাথে কমপ্রেস, এবং ঐচ্ছিকভাবে এনক্রিপ্ট করা হয়। ফরম্যাটের ভার্সন 2 মিডিয়া রেকর্ড যোগ করে; ভার্সন 1 আর্কাইভ পাঠযোগ্য থাকে।5.1 হেডার
| 0 | 8 | 89 4E 49 4B 0D 0A 1A 0A (PNG ধারণা: টেক্সট-মোড স্থানান্তরের ক্ষতি শনাক্ত করে) | |
| 8 | 1 | ||
| 9 | 1 | ||
| 10 | 1 | ||
| 11 | 1 | 0 | |
| 12 | 4 | ||
| 16 | 4 | ||
| 20 | 4 | ||
| 24 | 16 | ||
| 40 | 19 |
5.2 এন্ট্রি রেকর্ড
0 END | count:u64। শেষ চিহ্নিত করে এবং এর আগে কতটি এন্ট্রি আছে তা বলে। |
1 FILE | name_len:u16 name mtime:i64 mode:u32 size:u64 data[size] crc32:u32 |
2 DIR | name_len:u16 name mtime:i64 mode:u32 |
3 MEDIA | name_len:u16 name mtime:i64 mode:u32 size:u64 filter:u8 method:u8 params_len:u8 params framed_stream crc32:u32 |
নামগুলো /বিভাজকসহ UTF-8, সর্বোচ্চ 4096 বাইট।mtimeহলো Unix সেকেন্ড;modeহলো Unix অনুমতি শব্দ (Windows ফাইল পায় 0644 বা 0755, রিড-অনলি হলে 0444)।CRC32 সবসময় মূল বাইট কভার করে, যা মিডিয়া ফিল্টারগুলোকে যাচাইযোগ্য করে তোলে। একটি MEDIA রেকর্ডে sizeহলো মূল আকার।framed_streamহলো[u32 length][bytes]চাংকের একটি ধারা যা একটি শূন্য দৈর্ঘ্য দিয়ে শেষ হয়, তাই একটি রিডার তার ফিল্টার না বুঝেই সবসময় একটি মিডিয়া এন্ট্রি এড়িয়ে যেতে পারে।
মিডিয়া প্যারামিটার
offset:u64 frames:u64 channels:u8 bits:u8 flags:u8 (ফ্ল্যাগ বিট 0 = বিগ এন্ডিয়ান, বিট 1 = সাইনড) | ||
offset:u64 width:u32 rows:u32 bpp:u8 stride:u32 | ||
none: the framed stream holds raw segments and recompressed Deflate streams (section 7.9) |
offset-এর আগের সবকিছু (হেডার, ট্যাগ, প্যালেট, MOD প্যাটার্ন) এবং স্যাম্পল বা পিক্সেল অঞ্চলের পরের সবকিছু (ট্রেইলিং চাংক) ফিল্টার করা ডেটার চারপাশে অপরিবর্তিত সংরক্ষিত হয়।5.3 এনক্রিপ্টেড বডি ফ্রেমিং
5.4 কেন একটি সলিড স্ট্রিম?
5.5 ভার্সনিং
5.6 মাল্টি-ইঞ্জিন বডি (ভার্সন 3)
6 কম্প্রেশন ইঞ্জিন
6.1 কেন Zstandard
6.2 স্তর ম্যাপিং
-m0 .. -m5) এবং zip-শৈলীর স্তর (-0 .. -9) উভয়ই গ্রহণ করে এবং সেগুলোকে Zstandard স্তরে ম্যাপ করে:
-m0 | ||
-m1 | 1 | |
-m2 | 3 | |
-m3 | 9 | |
-m4 | 15 | |
-m5 (default) |
-0 স্টোর করে, -1 থেকে -6 Zstandard 1 থেকে 6 ব্যবহার করে, -7 9 ব্যবহার করে, -8 12 ব্যবহার করে এবং -9 হলো -m5-এর মতোই।6.3 বড় উইন্ডো ও লং-ডিস্ট্যান্স ম্যাচিং
-m5-এ 26.3 MB থেকে 24.4 MB-তে এবং -m4-এ 29.5 MB থেকে 26.8 MB-তে নামিয়েছে, -m4-এর গতিতে কোনো খরচ ছাড়া এবং -m5-এ সামান্য খরচে। 2^27-এর একটি উইন্ডো Zstandard-এর ডিফল্ট ডিকোডার সীমার ভেতরে, তাই যেকোনো স্ট্যান্ডার্ড ডিকোডার ডেটা পড়তে পারে।6.4 মাল্টি-থ্রেডিং
6.5 স্ট্রিমের ভেতরে অখণ্ডতা
6.6 স্টোর মোড
-m0 এন্ট্রিগুলো অসংকোচিতভাবে লেখে। এটি ইতিমধ্যে কমপ্রেস করা ডেটার জন্য কার্যকর, এবং এটিই একমাত্র মোড যেখানে মিডিয়া ফিল্টার ইচ্ছাকৃতভাবে বাইপাস হয়: যে ব্যবহারকারী store চান তিনি ডেটা রূপান্তরিত হবে এমন আশা করেন না।6.7 সর্বোচ্চ স্তর: LZMA2 ও PPMd
বাইনারি ব্লক। ফোল্ডার, বাইনারি ফাইল, মিডিয়া এন্ট্রি ও Deflate-রিকম্প্রেস করা এন্ট্রি LZMA2 দিয়ে কমপ্রেস হয়: preset 9, nice length 273, match-finder depth 32, এবং ডেটার সাথে মানানসই একটি ডিকশনারি (1 থেকে 128 MiB)। টেক্সট ব্লক। যেসব ফাইলের প্রথম 64 KiB-এ কোনো শূন্য বাইট নেই এবং প্রায় কোনো কন্ট্রোল অক্ষর নেই (সোর্স কোড, টেক্সট, CSV, HTML, XML ...) সেগুলো দ্বিতীয় ব্লকে যায়। এই ফাইলগুলোর চারটি সংলগ্ন 1 MiB রান PPMd ভ্যারিয়েন্ট I (order 8, 192 MiB মডেল) এবং টেক্সটের জন্য টিউন করা LZMA2 (lc 4, pb 0) দিয়ে ট্রায়াল-কমপ্রেস হয়, এবং ছোট ফলাফলটি জেতে। গদ্য PPMd-কে পছন্দ করে; অনেক প্রায়-অভিন্ন ফাইলসহ বড় সোর্স ট্রি LZMA2-কে পছন্দ করে, কারণ এটি ফাইলের জুড়ে দীর্ঘ পুনরাবৃত্তি কপি করতে পারে। ক্রম। প্রতিটি ব্লকের ভেতরে, ফাইল এক্সটেনশন অনুযায়ী, তারপর ফাইলের নাম অনুযায়ী সাজানো হয়, যেমন 7-Zip করে, যাতে অভিন্ন বা অনুরূপ ফাইল পাশাপাশি থাকে। সংলগ্ন ট্রায়াল নমুনার সাথে মিলে, এটি সাধারণ ডেটা সেটকে 7.5 % ছোট করেছে।
7 মিডিয়া বুদ্ধিমত্তা
7.1 কনটেন্ট দ্বারা শনাক্তকরণ
.dat নাম দেওয়া একটি WAV এখনো পাওয়া যায় এবং .wav নামের একটি টেক্সট ফাইল পাওয়া যায় না।RIFF..WAVE, পূর্ণসংখ্যা PCM সহ একটি fmt চাংক (format 1, বা PCM সাব-ফরম্যাটসহ WAVE_FORMAT_EXTENSIBLE), 8/16/24/32 বিট, 1 থেকে 8 চ্যানেল, সামঞ্জস্যপূর্ণ ব্লক অ্যালাইনমেন্ট; তারপর data চাংক | ||
FORM..AIFF বা AIFC (compression NONE বা twos), COMM ও SSND চাংক, বিগ-এন্ডিয়ান সাইনড স্যাম্পল | ||
BM, 40 বাইট বা তার বেশি একটি DIB হেডার, কোনো কম্প্রেশন নেই, প্রতি পিক্সেলে 8, 24 বা 32 বিট, পিক্সেল সারি যা ফাইলে ফিট করে, অঞ্চল 4 KiB থেকে 256 MiB-এর মধ্যে |
7.2 ট্রায়াল: প্রতি ফাইলে সেরা ফিল্টার নির্বাচন
একটি নমুনা নিন: স্যাম্পল অঞ্চল 3 MiB পর্যন্ত হলে পুরোটা, নাহলে অডিওর 5 %, 45 % ও 85 %-এ 768 KiB-এর তিনটি উইন্ডো। ছবির জন্য, প্রায় 4 MiB পর্যন্ত প্রথম সারিগুলো। নমুনাটি প্লেইন Zstandard স্তর 3 (বেসলাইন) এবং প্রযোজ্য প্রতিটি ফিল্টার দিয়ে কমপ্রেস করুন: 16/24/32-বিট অডিওর জন্য NAC, Shuffle ও Shuffle+Delta; 8-বিট অডিওর জন্য NAC ও Shuffle+Delta; ছবির জন্য MED। সবচেয়ে ছোট অনুমানওয়ালা ফিল্টার রাখুন, কিন্তু শুধু যদি তা বেসলাইনকে কমপক্ষে 2 % হারায়। নাহলে ফাইলটি সাধারণ কম্প্রেশনে সংরক্ষিত হয়। বিজয়ীটি দিয়ে ফাইলটি লিখুন। এই সব প্রতি ফাইলে ঘটে, তাই একটি আর্কাইভে সাধারণ ফাইলের পাশে ভিন্ন পদ্ধতিতে কোড করা WAV থাকতে পারে।
nikpak mt পুরো ফাইলে একই পরিমাপ চালায় এবং একটি টেবিল প্রিন্ট করে, যা দিয়ে 11 অধ্যায়ের বেঞ্চমার্ক অনুসন্ধান করা হয়েছিল। অপশনে, -mc- ফিল্টার নিষ্ক্রিয় করে এবং -mc+ ট্রায়াল ছাড়া ডিফল্ট ফিল্টার জোর করে।প্রতিটি ফিল্টার হুবহু বিপরীতযোগ্য। প্রতিটি এন্ট্রির সাথে সংরক্ষিত CRC32 মূল বাইটের উপর গণনা করা হয় এবং এক্সট্র্যাকশনে পরীক্ষা করা হয়, NAC এনকোডার লেখার সময় প্রতিটি ব্লক যাচাই করে (অনুচ্ছেদ 7.4), এবং -mc- পুরো স্তরটি বন্ধ করে দেয়। |
7.3 NAC অডিও কোডেক

ব্লক ও স্টেরিও ডিকোরিলেশন
| 0 | ||
| 1 | R = L - S | |
| 2 | L = R + S | |
| 3 | sum = (M << 1) | (S & 1), L = (sum + S) >> 1, R = (sum - S) >> 1 |
Side = L - R এবং Mid = (L + R) >> 1। সাইড চ্যানেলে একটি সাধারণ চ্যানেলের চেয়ে একটি বিট বেশি লাগে এবং bits + 1 দিয়ে কোড হয়। মোডটি সস্তায় বেছে নেওয়া হয়: এনকোডার L, R, M ও S-এর order-2 ফিক্সড-প্রেডিক্টর রেসিডুয়ালের পরম মানের যোগফল করে এবং সবচেয়ে ছোট মোটওয়ালা জোড়াটি নেয়। যেসব রেকর্ডিংয়ের চ্যানেল দৃঢ়ভাবে সম্পর্কিত, সেখানে Mid/Side সাধারণত কয়েক শতাংশ বাঁচায়।সাব-ফ্রেম টাইপ
ফিক্সড প্রেডিক্টর
order 0: e[i] = x[i]
order 1: e[i] = x[i] - x[i-1]
order 2: e[i] = x[i] - 2*x[i-1] + x[i-2]
order 3: e[i] = x[i] - 3*x[i-1] + 3*x[i-2] - x[i-3]
order 4: e[i] = x[i] - 4*x[i-1] + 6*x[i-2] - 4*x[i-3] + x[i-4]
orderটি স্যাম্পল ওয়ার্ম-আপ মান হিসেবে verbatim সংরক্ষিত হয়।লিনিয়ার প্রেডিক্টিভ কোডিং (LPC)
ব্লকে একটি Tukey উইন্ডো প্রয়োগ করুন (প্রথম ও শেষ চতুর্থাংশের উপর টেপার), যাতে এর কিনারা পরিসংখ্যান বিকৃত না করে। উইন্ডো করা সিগন্যালের অটোকোরিলেশন r[0..32]গণনা করুন।Levinson-Durbin রিকার্শন চালান, যা এক পাসে 1 থেকে 32-এর প্রতিটি অর্ডারের জন্য সর্বোত্তম সহগ সেট দেয়: k = (r[i] - sum a[j] r[i-j]) / err,a[i] = k,a[j] = a[j] - k a[i-j],err = err (1 - k^2)।কোয়ান্টাইজ করুন বাস্তব সহগগুলোকে পূর্ণসংখ্যায়, 12, 14 বা 15 বিটের নির্ভুলতায় (স্যাম্পল প্রস্থের উপর নির্ভর করে), একটি পাওয়ার-অফ-টু স্কেল বেছে নিয়ে ( shift, 0 থেকে 20) যাতে সবচেয়ে বড় সহগটি ঠিক ফিট হয়। রাউন্ডিং এরর ফিডব্যাক ব্যবহার করে, তাই কোয়ান্টাইজেশন ত্রুটি সহগ জুড়ে জমা হয় না।কয়েকটি অর্ডার মূল্যায়ন করুন (সেটটি নিচের ইফোর্ট স্তরের উপর নির্ভর করে), প্রতিটির রেসিডুয়াল গণনা করুন, এবং যেটির আনুমানিক মোট আকার সবচেয়ে ছোট সেটি রাখুন, এর সহগ পাঠানোর খরচসহ।
pred[i] = (q[0]*x[i-1] + q[1]*x[i-2] + ... + q[n-1]*x[i-n]) >> shift
e[i] = x[i] - pred[i] (n = order; the sum uses 64 bits)
রেসিডুয়াল কোডিং
u = (e << 1) XOR (e >> 63), যাতে ছোট ধনাত্মক ও ঋণাত্মক মান ছোট সংখ্যায় পরিণত হয়) এবং পার্টিশন করা Rice কোড দিয়ে কোড হয়। একটি ব্লকের রেসিডুয়াল 2^p পার্টিশনে ভাগ হয় (p 0 থেকে 8, এনকোডার দ্বারা নির্বাচিত); প্রতিটি পার্টিশন নিজস্ব Rice প্যারামিটার k পায় (5 বিট)। একটি মান u >> k হিসেবে ইউনারিতে লেখা হয় (ততটি শূন্য ও একটি এক) এবং তারপর নিচু k বিট। একটি পার্টিশনের সেরা k তার মানগুলোর যোগফল থেকে নির্ণীত হয়, তাই প্রতিটি প্রার্থী প্রেডিক্টরের খরচ এনকোড করার বদলে চলমান যোগফল থেকে সস্তায় অনুমান করা যায়।ইফোর্ট স্তর
-m অপশন) নির্বাচন করে প্রতি ব্লকে কতটি LPC অর্ডার চেষ্টা হবে। বেশি অর্ডার মানে সামান্য ছোট ফলাফল ও ধীর এনকোডার; ডিকোডারের গতি একই।| -m1 | 0 | 8, 16 |
| -m2, -m3 | 1 | 4, 8, 12, 16, 24, 32 |
| -m4, -m5 | 2 | 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 24, 28, 32 |
একটি ব্লকের বিট বিন্যাস
block := [stereo mode: 2 bits] sub-frame [sub-frame] (byte-padded)
sub-frame := type:2 ...
CONSTANT : value:width
VERBATIM : wasted:5 samples:(n x (width - wasted))
FIXED : wasted:5 order:3 warm-up residual
LPC : wasted:5 order-1:5 precision-1:4 shift:5
coefficients warm-up residual
residual := partition-order:4 per partition: k:5 Rice-coded values
7.4 স্ব-যাচাই
-mc- ব্যবহারের পরামর্শ দিয়ে থামে। ফলব্যাক পাথটি ইউনিট টেস্ট দ্বারা অনুশীলিত হয়, যা বিট গভীরতা ও চ্যানেল সংখ্যার প্রতিটি সংমিশ্রণের জন্য verbatim কোডিং জোর করে, এবং প্রক্রিয়াটি একটি সম্ভাব্য নীরব ডেটা-লস বাগকে একটি শনাক্ত, পুনরুদ্ধারযোগ্য অবস্থায় রূপান্তর করে।7.5 Shuffle ও Shuffle+Delta
Shuffle স্যাম্পলের বাইটগুলোকে প্লেনে আলাদা করে: চ্যানেল 0-এর সব লিস্ট-সিগনিফিক্যান্ট বাইট, তারপর চ্যানেল 0-এর সব মোস্ট-সিগনিফিক্যান্ট বাইট, তারপর চ্যানেল 1, ইত্যাদি, 32768 ফ্রেমের ব্লকে। উঁচু-বাইট প্লেন মসৃণ এবং নিচু-বাইট প্লেনের বর্ণমালা খুব সীমিত; Zstandard-এর এনট্রপি কোডার প্রতিটিকে ইন্টারলিভড মিশ্রণের চেয়ে অনেক ভালো মডেল করে। Shuffle+Delta প্রথমে প্রতিটি স্যাম্পলকে একই চ্যানেলের আগের স্যাম্পলের সাথে তার পার্থক্য দিয়ে প্রতিস্থাপন করে (স্যাম্পল প্রস্থ মডুলো, তাই এটি হুবহু বিপরীতযোগ্য, ব্লক জুড়ে স্টেট বহন করা হয়) এবং তারপর শাফল করে। এটি সাহায্য করে যখন সিগন্যাল মসৃণ কিন্তু NAC জেতার জন্য যথেষ্ট অনুমানযোগ্য নয়।
-m2-এ মূল আকারের 51 % এবং -m5-এ 47 %, প্লেইন Zstandard-এর 63 %-এর বিপরীতে।7.6 ProTracker MOD ফাইল
patterns = max(order table) + 1
sample_start = 1084 + patterns * 256 * channels (4 ch: 1024 B per pattern)
sample_bytes = sum of (length in words * 2) over the 31 descriptors,
clamped to the end of the file
7.7 BMP ছবি
ভাগ করুন পিক্সেল অঞ্চলকে প্রতি চ্যানেলে একটি প্লেনে (B, G, R, এবং 32-বিটের জন্য A), প্রতি-সারির প্যাডিং বাইট আলাদাভাবে মনে রেখে। রঙ ডিকোরিলেট করুন। নীল ও লাল প্লেন থেকে সবুজ প্লেন বিয়োগ করুন (modulo 256)। ফটোগ্রাফে তিনটি চ্যানেল দৃঢ়ভাবে সম্পর্কিত, তাই পার্থক্যগুলো ছোট হয়। প্রতিটি পিক্সেল অনুমান করুন তার প্রতিবেশীদের থেকে MED (মিডিয়ান এজ ডিটেক্টর) প্রেডিক্টর দিয়ে, যা LOCO-I ছবি কোডার ব্যবহার করে: বাম a, উপরেbও উপর-বামc-এর জন্য, অনুমান হলোmin(a,b)যদিc >= max(a,b)হয়,max(a,b)যদিc <= min(a,b)হয়, নাহলেa + b - c। প্রেডিকশন ত্রুটি পিক্সেলটিকে প্রতিস্থাপন করে (modulo 256)। কিনারায় প্রেডিক্টর কিনারা অনুসরণ করে; মসৃণ গ্র্যাডিয়েন্টে এটি গ্র্যাডিয়েন্ট এক্সট্রাপোলেট করে।সংযোজিত করুন রেসিডুয়াল প্লেন ও প্যাডিং বাইট এবং Zstandard-কে সেগুলো কমপ্রেস করতে দিন। মসৃণ অঞ্চল প্রায়-শূন্য বাইটের ধারায় পরিণত হয়।
7.8 কেন এটি RAR-কে হারায়
7.9 অফিস ডকুমেন্ট, PDF ও gzip: Deflate রিকম্প্রেশন
কনটেন্ট দ্বারা শনাক্তকরণ। ফাইলের শুরুতে একটি ZIP লোকাল হেডার (PK\x03\x04), %PDF- বা একটি gzip হেডার; এক্সটেনশন কখনো ব্যবহৃত হয় না। ডিকোডিং। প্রতিটি Deflate স্ট্রিম পাওয়া যায় (পদ্ধতি 8 সহ ZIP এন্ট্রি, zlib হেডারসহ PDF স্ট্রিম, প্রতিটি gzip সদস্য) এবং preflate (Microsoft-এর preflate-rs) দিয়ে বিশ্লেষণ করা হয়। preflate প্লেইন ডেটা ও একটি ছোট সংশোধন রেকর্ড ফেরায় যা হুবহু বর্ণনা করে মূল এনকোডার কীভাবে তার পছন্দ করেছে, সেটি যেই এনকোডারই হোক। সংরক্ষণ। ফাইলটি র সেগমেন্ট ও (plain, corrections) জোড়ার একটি ধারা হিসেবে সংরক্ষিত হয়। প্লেইন XML বা পেজ বিবরণ তারপর সলিড স্ট্রিমে যায়, যেখানে LZMA2 তা তার Deflate আকারের একটি ভগ্নাংশে কমপ্রেস করে। যাচাই। ফলাফল ব্যবহারের আগে, nikpak প্রতিটি Deflate স্ট্রিম পুনর্নির্মাণ করে এবং পুরো ফাইলের দৈর্ঘ্য ও CRC32 মূলের সাথে তুলনা করে। কিছু ভিন্ন হলে, বা একটি বিকৃত ফাইলে preflate ব্যর্থ বা প্যানিক হলে, ফাইলটি সহজভাবে স্বাভাবিকভাবে সংরক্ষিত হয়। এক্সট্র্যাকশন। Deflate স্ট্রিমগুলো বিট-ফর-বিট পুনরায় তৈরি হয়, তাই এক্সট্র্যাক্ট করা .docx বা .pdf বাইট-অভিন্ন, এবং এর CRC32 প্রতিটি এন্ট্রির মতোই পরীক্ষা করা হয়।
8 এনক্রিপশন
8.1 হুমকি মডেল
ফাইলের কনটেন্ট এবং তাদের সম্পর্কে সবকিছুর গোপনীয়তা: নাম, আকার, টাইমস্ট্যাম্প, অনুমতি ও ফাইলের সংখ্যা। অখণ্ডতা ও সত্যতা: আর্কাইভের যেকোনো পরিবর্তন, ডেটা, হেডার, ডেটার ক্রম বা এর দৈর্ঘ্য যাই হোক, ভুল ডেটা গৃহীত হওয়ার আগে শনাক্ত হয়। অনুমান-প্রতিরোধ: প্রতিটি পাসওয়ার্ড অনুমানকে যথাসম্ভব ব্যয়বহুল করা হয়।
8.2 পাসওয়ার্ড থেকে কী: Argon2id
| 3 | ||
| 4 | ||
8.3 STREAM নির্মাণে XChaCha20-Poly1305
nonce (24 bytes) = random prefix (19 bytes)
| chunk counter (4 bytes, big endian)
| last-chunk flag (1 byte)
u32 length + সাইফারটেক্সট + 16-বাইট ট্যাগ হিসেবে সংরক্ষিত | |
8.4 একজন পর্যবেক্ষক কী দেখতে পারে ও পারে না
8.5 পাসওয়ার্ড পরিচালনা
সর্বনিম্ন দৈর্ঘ্য। একটি আর্কাইভ তৈরি করার সময় 8 অক্ষর; ছোট পাসওয়ার্ড ব্যাখ্যাসহ প্রত্যাখ্যাত হয়। নিশ্চিতকরণ। ইন্টারঅ্যাক্টিভ প্রম্পট দুবার জিজ্ঞাসা করে, টাইপ করা অক্ষর প্রতিধ্বনিত করে না, এবং অমিল প্রত্যাখ্যান করে। জেনারেশন। পাসওয়ার্ড না থাকলে, nikpak একটি 56-প্রতীকের বর্ণমালা থেকে 24টি অক্ষর টানে যা দেখতে-একই অক্ষর বাদ দেয় (0/O, 1/l/I), অপারেটিং সিস্টেমের ক্রিপ্টোগ্রাফিকভাবে নিরাপদ র্যান্ডম জেনারেটরে রিজেকশন স্যাম্পলিং ব্যবহার করে যাতে কোনো প্রতীক অন্যটির চেয়ে বেশি সম্ভাব্য না হয়। তা হলো 24 x log2(56), প্রায় 139 বিট এনট্রপি, এবং এটি একবার, একটি স্পষ্ট চিহ্নিত বাক্সে দেখানো হয়। মেমরি পরিচ্ছন্নতা। ডেরাইভ করা কী ও পাসওয়ার্ড স্ট্রিং মেমরি থেকে মুছে ফেলা হয় যখন আর প্রয়োজন নেই ( zeroizeক্রেট)।চ্যানেল। কমান্ড লাইন ( -p), এনভায়রনমেন্ট ভেরিয়েবলNIKPAK_PASSWORD, ইন্টারঅ্যাক্টিভ প্রম্পট, বা টার্মিনাল না থাকলে stdin। কমান্ড-লাইন ফর্ম সুবিধাজনক কিন্তু প্রসেস তালিকায় দৃশ্যমান; অন্য ফর্মগুলো পছন্দনীয়।
8.6 আক্রমণ পরীক্ষা
একটি দুর্বল পাসওয়ার্ড সবসময় অনুমান করা যায়; Argon2id এটিকে ব্যয়বহুল করে কিন্তু password123-কে রক্ষা করতে পারে না। nikpak স্বাধীনভাবে অডিট হয়নি। এটি কীলগার, ম্যালওয়্যার বা চলমান প্রসেসের মেমরি পড়ার কারও বিরুদ্ধে রক্ষা করতে পারে না। যেসব ডেটা ফাঁস হলে গুরুতর ক্ষতি হতো, সেগুলোর জন্য প্রথমে একজন ক্রিপ্টোগ্রাফার দিয়ে ইমপ্লিমেন্টেশন পর্যালোচনা করান। |
9 কোয়ান্টাম প্রতিরোধ
9.1 কোয়ান্টাম কম্পিউটার কী পরিবর্তন করে
9.2 nikpak-এর অবস্থান
9.3 পাসওয়ার্ডের কী হবে?
9.4 "এখন সংগ্রহ করুন, পরে ডিক্রিপ্ট করুন"
9.5 সৎ সীমাবদ্ধতা ও সামনের পথ
"কোয়ান্টাম-প্রতিরোধী" মানে এই প্রিমিটিভগুলোর বিরুদ্ধে কোনো পরিচিত কোয়ান্টাম অ্যালগরিদম জেনেরিক সার্চকে হারায় না। এটি কোনো প্রমাণ নয়; ChaCha20 ও Argon2-এর ক্রিপ্ট্যানালাইসিস চলমান, এবং ফরম্যাট ভার্সনযুক্ত যাতে প্যারামিটার বা অ্যালগরিদম পরিবর্তন করা যায়। পাবলিক-কী শেয়ারিং কখনো যোগ করা হলে (একটি প্রাপকের কী-তে একটি আর্কাইভ এনক্রিপ্ট করা), এটি একটি হাইব্রিড স্কিম ব্যবহার করবে, ML-KEM-এর সাথে মিলিয়ে X25519, যাতে যেকোনো একটি উপাদান টিকে থাকলেও তা নিরাপদ হয়। কোয়ান্টাম প্রতিরোধ ইমপ্লিমেন্টেশন ত্রুটির বিরুদ্ধে রক্ষা করে না। দেখুন অনুচ্ছেদ 8.6 ও 10।
10 হার্ডেনিং ও দৃঢ়তা
10.1 নিরাপদ এক্সট্র্যাকশন
পাথ ট্রাভার্সাল ("zip slip")। প্রতিটি এন্ট্রি নাম নরমালাইজ করা হয়: ব্যাকস্ল্যাশ স্ল্যাশে পরিণত হয়, খালি ও .উপাদান বাদ যায়, এবং যেকোনো..উপাদান এন্ট্রিটিকে একটি সতর্কতাসহ এড়িয়ে যেতে বাধ্য করে। অ্যাবসোলিউট নাম তাদের মূল হারায়, তাই/etc/passwdগন্তব্য ফোল্ডারের ভেতরে এক্সট্র্যাক্ট হয়।Windows নাম। Windows-এ চলার সময়, < > : " | ? *বা কন্ট্রোল অক্ষরযুক্ত, স্পেস বা ডটে শেষ হওয়া, বা একটি সংরক্ষিত ডিভাইস নামের (CON, PRN, AUX, NUL, COM1-9, LPT1-9) সমান উপাদান প্রত্যাখ্যাত হয়।সিম্বলিক লিংক। লেখার আগে, গন্তব্যের নিচে লক্ষ্য পাথের প্রতিটি বিদ্যমান উপাদান পরীক্ষা করা হয়; একটি লিংক কখনো অনুসরণ করা হয় না। একটি বিদ্যমান ফাইল আগে মুছে ফেলা হয় এবং নতুনটি create_newদিয়ে তৈরি হয়, যা একটি বিদ্যমান পাথ খুলতে অস্বীকার করে, তাই লেখা পুনঃনির্দেশ করতে একটি লিংক ব্যবহার করা যায় না।সুবিধাপ্রাপ্ত বিট। Setuid, setgid ও sticky বিট কখনো পুনরুদ্ধার করা হয় না; অনুমতি সাধারণ rwx বিটে সীমাবদ্ধ করা হয়। ব্যর্থ ফাইল। একটি ফাইল যার CRC32 মেলে না তা রেখে না দিয়ে মুছে ফেলা হয়।
../../evil.txt, /tmp/evil.txt, ..\..\evil.txt ও ok/../../evil.txt ধারণকারী একটি হাতে বানানো আর্কাইভ এক্সট্র্যাক্ট করা হয়েছিল: কিছুই গন্তব্যের বাইরে যায়নি, অনিরাপদ এন্ট্রিগুলো রিপোর্ট ও এড়িয়ে যাওয়া হয়েছিল, এবং গন্তব্যে রাখা একটি সিমলিংক প্রত্যাখ্যাত হয়েছিল।10.2 সীমাবদ্ধ ডিকোডার
Argon2id প্যারামিটার যেকোনো বরাদ্দের আগে রেঞ্জ-চেক করা হয় (অনুচ্ছেদ 8.2)। এনক্রিপ্টেড চাংকের দৈর্ঘ্য 16 বাইট থেকে 64 KiB + 16-এর মধ্যে হতে হবে; নাম সর্বোচ্চ 4096 বাইট; অডিও ব্লককে একটি যুক্তিসঙ্গত দৈর্ঘ্য ঘোষণা করতে হবে; BMP অঞ্চল 256 MiB-এ সীমিত; ইউনারি Rice কোড সীমাবদ্ধ। অডিও ও মিডিয়া ডিকোডারকে ইউনিট টেস্টে হাজার হাজার র্যান্ডম ও বিট-ফ্লিপ করা ইনপুট দেওয়া হয়েছিল এবং সেগুলোকে একটি ত্রুটি ফেরাতে হবে, কখনো প্যানিক বা অ্যাবর্ট নয়। nikpak-এর নিজস্ব কোডে কোনো unsafeব্লক নেই, এবং Rust-এর বাউন্ড চেকিং C-তে একটি মেমরি-দুর্নীতির বাগ হওয়ার মতো যেকোনো লজিক ত্রুটিকে একটি পরিচ্ছন্ন ব্যর্থতায় রূপান্তর করে।
t দিয়ে পরীক্ষা করুন।10.3 নিরাপদ সৃষ্টি ও সৎ ত্রুটি
আর্কাইভটি name.nik.tmp-তে লেখা হয় এবং শুধু সম্পূর্ণ হলে নাম বদলানো হয়; যেকোনো ব্যর্থতায় একটি গার্ড অস্থায়ী ফাইলটি মুছে দেয়, তাই একটি বিঘ্নিত রান কখনো একটি অর্ধ-লেখা বা প্রতিস্থাপিত আর্কাইভ ফেলে রাখে না।একটি ফাইল আর্কাইভ করার সময় ছোট হয়ে গেলে, nikpak একটি অসামঞ্জস্যপূর্ণ এন্ট্রি লেখার বদলে একটি স্পষ্ট বার্তাসহ বাতিল করে। অপাঠ্য ফাইল, সিম্বলিক লিংক ও বিশেষ ফাইল একটি সতর্কতাসহ (এক্সিট কোড 1) এড়িয়ে যাওয়া হয় এবং আর্কাইভটি কখনো নিজের সাথে যোগ হয় না। ত্রুটিগুলো শ্রেণিবদ্ধ করা হয় যাতে স্ক্রিপ্ট প্রতিক্রিয়া জানাতে পারে: একটি আর্কাইভের ভেতরে চেকসাম বা ফ্রেম ত্রুটি দূষণ (exit 3), একটি অথেন্টিকেশন ব্যর্থতা ভুল পাসওয়ার্ড বা বিকৃতি (exit 11), একটি প্রত্যাখ্যাত লেখা মারাত্মক ত্রুটি (exit 2)।
11 বেঞ্চমার্ক
11.1 পদ্ধতি
-ma5 ফরম্যাট); nikpak 1.1.0 LTO সহ release মোডে বিল্ট; অডিও রেফারেন্স হিসেবে FLAC 1.x -8। | |
-m3 (RAR-এর ডিফল্ট) ও -m5 (সেরা)। সাধারণ-ডেটা টেস্টের জন্য -s (সলিড) ও -md256m (256 MB ডিকশনারি)-ও, কারণ nikpak আর্কাইভ সবসময় সলিড এবং একটি ন্যায্য তুলনার জন্য RAR-কে একই সুবিধা দিতে হবে। | |
cmp, সাধারণ সেটের সব 10,949টি ফাইলের SHA-256)। |
টেস্ট উপাদান
মিউজিকটি কৃত্রিম: এটি MIDI থেকে রেন্ডার করা এবং এতে পুনরাবৃত্ত অংশ আছে, যা প্রতিটি LZ-ভিত্তিক টুলকে সাহায্য করে, NAC-এর পরের Zstandard ধাপসহ। বাস্তব রেকর্ডিংয়ে সঠিক পুনরাবৃত্তি কম থাকে, তাই অ্যাবসোলিউট আকার ভিন্ন হবে। তুলনাটি সব টুলকে সমানভাবে গণ্য করে, এবং একই ফাইলে FLAC-এর ফলাফল নিশ্চিত করে যে অডিও কোডেকটি নিজেই প্রতিযোগিতামূলক, কিন্তু নির্দিষ্ট উপাদানওয়ালা পাঠকদের তা মাপা উচিত: nikpak mt হুবহু সেটাই করে। |
11.2 মিডিয়া ফাইল
| 9,183,956 | 2,862,744 | 2,035,223 | 1,750,706 | ||
| 2,507,557 | 1,070,290 | 966,622 | 927,973 | ||
| 2,991,820 | 1,605,879 | 1,529,219 | 1,418,532 | ||
| 17,371,848 | 11,024,411 | 9,415,519 | 9,411,898 | ||
| 4,342,996 | 3,112,135 | 2,635,819 | 2,634,669 | ||
| 2,171,520 | 844,160 | 742,462 | 740,751 | ||
| 28,362,206 | 21,467,283 (-m3) | 18,689,529 | 18,688,030 |
-m3-তে মাপা হয়েছিল, তাই সেই সারিটি অন্যগুলোর চেয়ে দুর্বল তুলনা।

মিডিয়া ফিল্টার কী যোগ করে
| 3,580,971 | 2,035,223 | 43.2 % | |
| 1,260,607 | 966,622 | 23.3 % | |
| 1,876,722 | 1,529,219 | 18.5 % | |
| 15,585,422 | 9,415,519 | 39.6 % | |
| 3,887,183 | 2,635,819 | 32.2 % | |
| 1,078,493 | 742,462 | 31.2 % |
FLAC-এর সাথে তুলনা
-8, নিবেদিত রেফারেন্স এনকোডার, 9,407,019 বাইট তৈরি করে। একই অডিওর NAC স্ট্রিম 9,425,305 বাইট, 0.2 %-এর মধ্যে, এবং সমাপ্ত nikpak আর্কাইভ 9,415,519 বাইট। 22 kHz মনো ও 8-বিট ভার্সনের জন্য NAC FLAC-এর চেয়ে ছোট (2,635,446 বনাম 2,638,954, এবং শুধু অডিও অঞ্চলের জন্য 785,890 বনাম 798,810), এবং 24-বিটের জন্য আর্কাইভটি (18.69 MB) FLAC-এর 19.12 MB-এর চেয়ে ছোট। গ্যালারি ফাইলে FLAC অনেক দুর্বল (RAR-এর 1.61 MB-এর বিপরীতে 2.50 MB), যে কারণে তা অনুচ্ছেদ 7.5-এ ব্যাখ্যা করা হয়েছে; এই ক্ষেত্রেই অন্য ফিল্টারগুলো তাদের স্থান অর্জন করে।11.3 সাধারণ ডেটা
| 24,443,483 | 45.6 s | 1.8 s | |
| 25,862,475 | 36.2 s |
| |
| 26,002,812 | 26.7 s |
| |
| 26,536,863 | 16.7 s | 1.5 s | |
| 26,814,023 | 13.5 s |
| |
| 30,329,965 | 2.0 s |
| |
| 36,266,743 | 0.9 s | 0.8 s | |
| 50,851,230 | 14.8 s |
| |
| 50,974,773 | 9.7 s | 2.3 s |

সর্বোচ্চ স্তর: nikpak RAR-এর সেরা (24.4 বনাম 25.9 MB) থেকে 5.5 % ছোট একটি আর্কাইভ তৈরি করে। RAR এই স্তরে দ্রুত (45.6 s-এর বিপরীতে 26.7 থেকে 36.2 s)। সমান আকার: nikpak -m4RAR-এর ডিফল্ট সলিড স্তরের প্রায় 1 %-এর মধ্যে, 81 % সময়ে (16.7 s-এর বিপরীতে 13.5 s)।দ্রুত স্তর: -m2গতির জন্য অনুপাত বিনিময় করে: RAR সলিড-m3-এর চেয়ে 18 গুণ দ্রুত, এবং 37 % বড়। এটি ব্যাকআপ ও পাইপলাইনের জন্য স্তর, যেখানে শেষ কয়েক মেগাবাইটের চেয়ে সময় বেশি গুরুত্বপূর্ণ।সলিড নয়: RAR-এর ডিফল্ট (নন-সলিড) আর্কাইভ এই অনেক-ছোট-ফাইল ডেটায় তার সলিডগুলোর প্রায় দ্বিগুণ আকার। যে কেউ nikpak-কে RAR-এর সাথে তুলনা করবে তার RAR-এ -sযোগ করা উচিত।
11.4 একটি একক বড় মিডিয়া ফাইলে গতি

| 1.45 s (-m2) | 2.54 s (-m3) | ||
| 3.14 s (-m5) | 5.87 s (-m5) | ||
| 0.28 s | 0.23 s |
11.5 এনক্রিপশন অতিরিক্ত খরচ
11.6 ফলাফল পুনরুৎপাদন
# media: which filter wins, per file
nikpak mt song.wav tracker.mod photo.bmp
# archive with nikpak and RAR, then compare
nikpak a -q -ep -m2 test.nik *.wav
rar a -ep -m5 -ma5 test.rar *.wav
# fair comparison on many files: give RAR solid mode
rar a -r -s -m5 -ma5 -md256m data.rar data
nikpak a -m5 data.nik data
# verify
nikpak x -o+ test.nik restore\
11.7 দ্বিতীয় রান: nikpak, RAR 7, 7-Zip ও ZIP
পদ্ধতি
টেস্ট উপাদান
| 8 | 6,987,840 | ||
| 16 | 2,252,604 | ||
| 35 | 2,991,820 | ||
| 4 × 1 | 53,417,226 | ||
| 18 | 11,793,318 | ||
| 60 | 39,100,915 | ||
| 11,473 | 190,454,632 |
সর্বোচ্চ স্তর: আর্কাইভ আকার
| 6,987,840 | 3,557,350 | 4,394,310 | 4,195,043 | 4,974,680 | |
| 2,252,604 | 1,127,607 | 1,264,245 | 1,166,855 | 1,408,085 | |
| 2,991,820 | 1,346,484 | 1,596,971 | 1,484,879 | 1,852,279 | |
| 17,760,408 | 8,731,989 | 10,460,042 | 10,666,922 | 15,225,764 | |
| 4,440,136 | 2,458,867 | 2,797,026 | 2,784,080 | 3,736,722 | |
| 2,220,090 | 606,840 | 725,416 | 642,341 | 836,989 | |
| 28,996,592 | 18,198,056 | 21,229,465 | 25,542,036 | 26,980,770 | |
| 11,793,318 | 2,741,898 | 3,519,622 | 3,259,868 | 4,223,579 | |
| 39,100,915 | 6,887,729 | 11,186,217 | 10,085,779 | 17,399,998 | |
| 190,454,632 | 28,175,618 | 33,606,893 | 28,879,398 | 62,198,510 |

দ্রুত স্তর: আকার ও সৃষ্টি সময়
| 54.0 % · 0.39 s | 63.0 % · 2.09 s | 60.1 % · 3.51 s | 71.2 % · 0.35 s | |
| 52.4 % · 0.61 s | 56.2 % · 0.43 s | 51.9 % · 0.69 s | 62.7 % · 0.10 s | |
| 51.1 % · 0.41 s | 53.6 % · 0.71 s | 49.6 % · 1.96 s | 61.9 % · 0.24 s | |
| 49.2 % · 1.72 s | 59.9 % · 3.60 s | 60.1 % · 14.03 s | 85.7 % · 0.82 s | |
| 55.4 % · 0.58 s | 64.1 % · 0.95 s | 62.7 % · 2.14 s | 84.2 % · 0.22 s | |
| 27.4 % · 0.77 s | 33.3 % · 0.52 s | 28.9 % · 2.13 s | 38.2 % · 0.32 s | |
| 62.8 % · 2.06 s | 73.6 % · 7.54 s | 88.1 % · 13.54 s | 93.0 % · 1.19 s | |
| 35.2 % · 0.11 s | 30.4 % · 5.53 s | 27.7 % · 11.76 s | 36.0 % · 0.89 s | |
| 38.0 % · 0.22 s | 29.5 % · 8.25 s | 26.2 % · 21.85 s | 44.7 % · 1.83 s | |
| 25.3 % · 1.67 s | 18.0 % · 48.19 s | 17.0 % · 93.71 s | 32.9 % · 7.32 s |
সাধারণ ডেটা বিস্তারিত
| 28,175,618 | 14.8 % | 154.3 s | 5.6 s | |
| 28,879,398 | 15.2 % | 120.9 s | 6.0 s | |
| 32,350,575 | 17.0 % | 73.6 s | 7.0 s | |
| 32,375,802 | 17.0 % | 93.7 s | 4.5 s | |
| 33,295,133 | 17.5 % | 37.8 s | 3.3 s | |
| 33,606,893 | 17.6 % | 72.4 s | 6.7 s | |
| 34,236,198 | 18.0 % | 48.2 s | 5.9 s | |
| 48,229,284 | 25.3 % | 1.7 s | 0.9 s | |
| 56,038,351 | 29.4 % | 20.2 s | 6.9 s | |
| 62,198,510 | 32.7 % | 28.2 s | 6.9 s | |
| 62,672,415 | 32.9 % | 7.3 s | 5.4 s |

1.1.0 থেকে 1.2.0
| 3,306,819 | 2,741,898 | 3,259,868 | ||
| 10,417,750 | 6,887,729 | 10,085,779 | ||
| 31,322,041 | 28,175,618 | 28,879,398 |
ফলাফল সৎভাবে পড়া
nikpak -m5 প্রতিটি সেটে সবচেয়ে ছোট। 7-Zip -mx9-এর বিপরীতে এটি 2.4 থেকে 31.7 % ছোট, RAR 7 -m5-এর বিপরীতে 10.8 থেকে 38.4 % এবং ZIP -9-এর বিপরীতে 19.9 থেকে 60.4 %। রেকর্ড করা অডিওতে NAC অনুমান করে যা LZ-ভিত্তিক কমপ্রেসার শুধু মেলাতে পারে: 24-বিট মিউজিকে 7-Zip বাঁচায় 12 % এবং nikpak 37 %। অফিস ফাইল: 7-Zip-এর চেয়ে 31.7 % ছোট। Deflate রিকম্প্রেশন 6.6 MB .xlsx ও 1.9 MB .docx-কে প্লেইন XML-এ রূপান্তর করে যা LZMA2 Deflate-এর চেয়ে অনেক ভালো কমপ্রেস করে (10.09 MB-এর বিপরীতে 6.89 MB)। এমনকি -m4 7-Zip -mx9-এর চেয়ে 1.3 % ছোট ও দ্রুত (26 s-এর বিপরীতে 16 s)। -m5-এ মূল্য হলো সময়: 26 s-এর বিপরীতে 81 s। টেক্সট: 15.9 % ছোট, অর্ধেক সময়ে। গদ্যে PPMd জেতে (তৈরি করতে 12.9 s-এর বিপরীতে 6.4 s)। PPMd যত ধীরে এনকোড করে ততই ধীরে ডিকোড করায়, এক্সট্র্যাকশনে 0.2 s-এর বদলে 2.7 s লাগে। সোর্স কোড: 2.4 % ছোট, একটি সরু এগিয়ে থাকা। 28.9 MB-এর বিপরীতে 28.2 MB, 121 s-এর বিপরীতে 154 s-এ। ফাইল টাইপ অনুযায়ী সাজানো ও সংলগ্ন নমুনায় ইঞ্জিন বেছে নেওয়া (6.7) পার্থক্য গড়েছে। দ্রুত স্তর -m2: দ্রুততম, ছোটতম নয়। nikpak -m2 সাধারণ সেটে 1.7 s নেয়, 7-Zip -mx5-এর 93.7 s (56 গুণ দীর্ঘ), RAR-এর 48.2 s ও ZIP-এর 7.3 s-এর বিপরীতে। এটি ছবিতে ও বেশিরভাগ অডিওতে 7-Zip -mx5-এর চেয়ে ছোট (MOD ফাইল ও গ্যালারি WAV 1 থেকে 3 % বড়), কিন্তু টেক্সট, অফিস ফাইল ও সোর্স কোডে বড় (সাধারণ সেটে 49.0 %)। এ কারণে, ভার্সন 1.2.1 থেকে nikpak ডিফল্টে -m5 ব্যবহার করে; -m2 চেয়ে নিতে হয়। ZIP দ্রুত কিন্তু সর্বত্র সবচেয়ে বড়। এমনকি nikpak -m2 প্রতিটি সেটে ZIP -9-কে হারায়। ZIP ছোট মিডিয়া আর্কাইভ nikpak -m2-এর চেয়ে দ্রুত তৈরি করে, কারণ Deflate NAC কোডেকের চেয়ে অনেক কম কাজ করে, কিন্তু এটি টেক্সট, অফিস ফাইল ও সোর্স কোডে ধীর। এক্সট্র্যাকশন। সাধারণ সেট এক্সট্র্যাক্ট হয় 0.9 s (nikpak -m2) বা 5.6 s (-m5)-এ, 7-Zip-এর 6.0 s, RAR-এর 6.7 s ও ZIP-এর 6.9 s-এর বিপরীতে। রিকম্প্রেস করা Deflate স্ট্রিমসহ আর্কাইভ আরও ধীরে এক্সট্র্যাক্ট হয়, কারণ প্রতিটি স্ট্রিম পুনর্নির্মিত হয় (অফিস সেটে 0.7 s-এর বিপরীতে 2.1 s)। এই মেশিনে RAR। RAR এখানে 11.3-এর চেয়ে ধীর ছিল (একই পরিমাণ সোর্স কোডে -m5 -s-এর জন্য 27 s-এর বদলে 72 s)। মেশিন ও ডেটা ভিন্ন, তাই দুটি অনুচ্ছেদ মেশানো উচিত নয়। এই রানের ভেতরে প্রতিটি টুল একই শর্ত পূরণ করেছে।
nikpak-এর জন্য এর অর্থ কী
12 nikpak এবং RAR-এর তুলনা
12.1 যেখানে nikpak এগিয়ে
-hp সুইচ লাগে | ||
12.2 যেখানে RAR এগিয়ে
| 45.6 s | ||
| 0.28 s | ||
12.3 দৃষ্টিকোণে কোয়ান্টাম প্রতিরোধ
12.4 কোনটি বেছে নেবেন
nikpak বেছে নিন অডিও, ছবি, ট্র্যাকার মিউজিক ও সোর্স কোডের আর্কাইভের জন্য যেখানে আকার ও গতি গুরুত্বপূর্ণ, স্ক্রিপ্ট করা ব্যাকআপের জন্য, শক্তিশালী ডিফল্ট এনক্রিপশনের জন্য, এবং যখন একটি উন্মুক্ত, নথিভুক্ত ফরম্যাট মূল্যবান। RAR বেছে নিন যখন আপনার রিকভারি রেকর্ড, মাল্টি-ভলিউম বা স্ব-নিষ্কাশনকারী আর্কাইভ, ইন-প্লেস আপডেট দরকার, বা শুধু RAR টুল আছে এমন লোকদের সাথে আর্কাইভ বিনিময় করতে হবে। দুটিই ব্যবহার করুন: একটি ওয়ার্কফ্লো বাল্ক মিডিয়া ও এনক্রিপ্টেড ব্যাকআপের জন্য nikpak ব্যবহার করতে এবং বিতরণের জন্য RAR রাখতে কিছুই বাধা দেয় না।
12.5 আর 7-Zip ও ZIP?
সবচেয়ে ছোট আর্কাইভের জন্য nikpak -m5 বেছে নিন। এটি মাপা প্রতিটি সেটে 7-Zip -mx9-এর চেয়ে 2.4 থেকে 31.7 % ছোট: অফিস ফাইলে 31.7 %, টেক্সটে 15.9 % ও সোর্স কোডে 2.4 %। দ্রুত ব্যাকআপের জন্য nikpak -m2 বেছে নিন (সোর্স কোডে 7-Zip-এর ডিফল্টের চেয়ে 56 গুণ দ্রুত)। nikpak-এর এনক্রিপশনও শক্তিশালী: 7-Zip AES-256 ব্যবহার করে একটি SHA-256 কী ডেরিভেশনসহ যা মেমরি-হার্ড নয়, এবং এটি শুধু -mhe দিয়ে ফাইলের নাম লুকায়। 7-Zip বেছে নিন যখন সর্বোচ্চ স্তরে সময় বেশি গুরুত্বপূর্ণ (এটি বড় অফিস ও সোর্স-কোড সেটে দ্রুত), যখন আপনার এর ডিফল্ট স্তর ডকুমেন্টে ছোট হওয়া দরকার, বা যখন 7-Zip পড়ে এমন বহু ফরম্যাট খুলতে হবে। শুধু সামঞ্জস্যের জন্য ZIP বেছে নিন। প্রতিটি অপারেটিং সিস্টেম অতিরিক্ত সফটওয়্যার ছাড়াই এটি খোলে, কিন্তু nikpak -m5 19.9 থেকে 60.4 % ছোট, এবং ZIP-এর ঐতিহ্যবাহী এনক্রিপশন দুর্বল।
13 বিল্ডিং, ডিপ্লয়মেন্ট ও সংযুক্তি
13.1 PowerShell-এ Windows
winget install Rustlang.Rustup
$o = '--wait --passive --add Microsoft.VisualStudio.Workload.VCTools'
$o += ' --includeRecommended'
winget install Microsoft.VisualStudio.2022.BuildTools --override $o
winget না থাকলে, rustup.rs থেকে Rust এবং Desktop development with C++ ওয়ার্কলোডসহ Build Tools for Visual Studio ইনস্টল করুন। তারপর, যে ফোল্ডারে সোর্সগুলো আছে:.\build.ps1 # builds dist\nikpak.exe and dist\unNik.exe
.\build.ps1 -Test # runs the unit tests first
# if PowerShell refuses to run scripts:
powershell -ExecutionPolicy Bypass -File .\build.ps1
build.ps1 পরীক্ষা করে Cargo ইনস্টল আছে কি না (না থাকলে কীভাবে ইনস্টল করবেন তাও বলে), বিল্ড চালায়, ব্যর্থ হলে সাধারণ কারণ ব্যাখ্যা করে, এবং এক্সিকিউটেবলটি dist\nikpak.exe-তে কপি করে।Windows ইনস্টলার
.\build.ps1 -Installer (বা npm run installer) সেটআপ প্রোগ্রাম dist\nikpak--setup.exe-ও বিল্ড করে Inno Setup 6.3 বা নতুন দিয়ে (এটি একবার winget install JRSoftware.InnoSetup দিয়ে ইনস্টল করুন)। স্ক্রিপ্টটি installer\nikpak.iss; ভার্সন Cargo.toml থেকে নেওয়া হয়। এই সেটআপ ফাইলটিই শেয়ারওয়্যার ও ডাউনলোড সাইটে আপলোড করা হয়।ডিফল্টে এটি শুধু বর্তমান ব্যবহারকারীর জন্য ইনস্টল করে, অ্যাডমিনিস্ট্রেটর অধিকার বা UAC প্রম্পট ছাড়া, %LOCALAPPDATA%\Programs\NikPak-এ। এর প্রথম পেজে "সব ব্যবহারকারীর জন্য ইনস্টল" বিকল্প থাকে (Program Files, অ্যাডমিনিস্ট্রেটর অধিকার লাগে)। এটি গ্রহণের জন্য LICENSE.txt দেখায় এবং nikpak.exe, unNik.exe, আইকন, LICENSE.txt, THIRD-PARTY-NOTICES.txt ও CHANGELOG.md ইনস্টল করে। এটি একটি Start মেনু এন্ট্রি, একটি ঐচ্ছিক ডেস্কটপ আইকন এবং, চাইলে, কমান্ড লাইনের জন্য ফোল্ডারটিকে PATH-এ যোগ করে। এটি সেটিংস > অ্যাপস-এ একটি আনইনস্টলার রেজিস্টার করে। শর্টকাট: Start মেনুতে NikPak, unNik ও লাইসেন্স; ডেস্কটপে NikPak (সবসময়) এবং বিকল্প হিসেবে ডেস্কটপে unNik। .nik ফাইল সবসময় রেজিস্টার হয় (1.5.2 থেকে): এগুলো তাদের নিজস্ব আইকন পায় (nikfile.ico, একটি জিপারসহ পেজ, .zip ফাইলের মতো), টাইপ নাম "NikPak archive", এবং একটি ডাবল-ক্লিক সেগুলো unNik-এ খোলে (রাইট-ক্লিক মেনুতে "unNik দিয়ে খুলুন")। unNik "যা দিয়ে খুলবেন"-এ ও ডিফল্ট অ্যাপ-এও তালিকাভুক্ত। আনইনস্টলার রেজিস্ট্রেশনটি সরিয়ে দেয়। .nik ফাইল ইতিমধ্যে অন্য প্রোগ্রাম দিয়ে খোলার জন্য সেট থাকলে, "যা দিয়ে খুলবেন"-এ একবার unNik বেছে নেওয়ার আগে Windows সেই পছন্দ ধরে রাখে। শেষ "NikPak চালু করুন" NikPak-কে সাধারণ ব্যবহারকারী হিসেবে চালু করে, কখনো অ্যাডমিনিস্ট্রেটর হিসেবে নয়, যাতে ড্র্যাগ অ্যান্ড ড্রপ কাজ করে। আপডেট আগের ভার্সনের উপর ইনস্টল হয় (স্থির AppId)। %APPDATA%\nikpak-এর লাইসেন্স আপডেট ও আনইনস্টলে রাখা হয়। সেটআপে কখনো কী বা কী ফাইল থাকে না। ইনস্টলারটি Windows অনুসরণ করে English বা ফরাসিতে চলে। প্রকাশের আগে, একটি কোড-সাইনিং সার্টিফিকেট দিয়ে nikpak.exe ও সেটআপে স্বাক্ষর করুন, যাতে Windows SmartScreen অজানা প্রকাশক সম্পর্কে সতর্ক না করে।
nikpak.exe, unNik.exe, দুটি সেটআপ ও SHA256SUMS.txt — সেগুলো binaries\-এ কপি করে, ওয়েব সাইটটি পুনর্নির্মাণ করে এবং FTP দিয়ে আপলোড করে (-NoUpload আপলোড বাদ দেয়)। দ্বিতীয় সেটআপ, unnik--setup.exe (installer\unnik.iss), একা unNik ইনস্টল করে, বিনামূল্যের আর্কাইভ ব্রাউজার; NikPak ইতিমধ্যে ইনস্টল থাকলে এটি শুধু প্রোগ্রামটি ইনস্টল করে, তাই মেনুগুলো কখনো দ্বিগুণ হয় না।13.2 npm দিয়ে বিল্ডিং
package.json আছে যার স্ক্রিপ্টগুলো কেবল Cargo ডাকে, যাতে একজন ডেভেলপার যে Node.js ওয়ার্কফ্লোতে অভ্যস্ত সে পরিচিত কমান্ড টাইপ করতে পারে:npm run build # cargo build --release
npm run dist # build.ps1 -> dist\nikpak.exe
npm test # cargo test --release
npm run clean # cargo clean
13.3 একটি স্বনির্ভর এক্সিকিউটেবল
.cargo/config.toml Windows MSVC টার্গেটের জন্য C রানটাইম স্ট্যাটিকভাবে লিংক করে। ফলে nikpak.exe-র (গ্রাফিক্যাল ইন্টারফেসসহ কয়েক MB, এটি ছাড়া প্রায় 2.3 MB) কোনো DLL নির্ভরতা নেই এবং যে মেশিনে চলে সেখানে Visual C++ Redistributable-এর প্রয়োজন হয় না। যেকোনো জায়গায় ব্যবহার করতে এটি PATH-এর একটি ফোল্ডারে কপি করুন। release প্রোফাইল সম্পূর্ণ অপ্টিমাইজেশন, লিংক-টাইম অপ্টিমাইজেশন, একটি একক কোড-জেনারেশন ইউনিট, সিম্বল স্ট্রিপিং ও panic = abort চালু করে একটি ছোট, দ্রুত বাইনারির জন্য।13.4 macOS ও Linux
./build.sh # builds and copies the result to dist/nikpak
# or: cargo build --release
sudo cp dist/nikpak /usr/local/bin/
xcode-select --install); Debian বা Ubuntu-তে একটি C কম্পাইলার ইনস্টল করুন (sudo apt install build-essential)। Rust নিজেই আসে curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh থেকে। কম্প্রেশন লাইব্রেরিটি Cargo তার C সোর্স থেকে কম্পাইল করে, তাই কোনো সিস্টেম লাইব্রেরির প্রয়োজন নেই।./package-unix.sh, যা nikpak ও unNik বিল্ড করে এবং একটি install.sh-এর সাথে সেগুলো প্যাক করে binaries\nikpak--macos.zip (একটি ইউনিভার্সাল বাইনারি: Intel + Apple silicon) বা binaries\nikpak--linux-.tar.gz-এ। পুরনো ডিস্ট্রিবিউশনেও প্রোগ্রাম চালানোর জন্য glibc 2.28-এর বিরুদ্ধে cargo-zigbuild দিয়ে বিল্ড করতে Linux-এ ZIG=1 সেট করুন।13.5 নির্ভরতা
Cargo.lock-এ স্থির করা, যা সোর্স প্যাকেজের অংশ, তাই প্রতিটি বিল্ড একই কোড ব্যবহার করে।zstd | |
chacha20poly1305 | |
argon2 | |
rand | |
zeroize | |
rpassword | |
crc32fast | |
glob | |
liblzma | |
ppmd-rust | |
preflate-rs | |
eframe / egui | |
rfd | |
ed25519-dalek | |
rustybuzz, unicode-bidi |
13.6 স্ক্রিপ্টিং
$archive = "D:\Backups\docs-$(Get-Date -Format yyyy-MM-dd).nik"
# the password comes from a file or secret store, not from the script
$env:NIKPAK_PASSWORD = Get-Content "$env:USERPROFILE\.nikpak-secret"
nikpak a -p -m3 -inul $archive "$env:USERPROFILE\Documents"
if ($LASTEXITCODE -gt 1) { throw "nikpak failed: $LASTEXITCODE" }
nikpak t -inul $archive # verify what was written
if ($LASTEXITCODE -ne 0) { throw "archive verification failed" }
export NIKPAK_PASSWORD="$(cat ~/.nikpak-secret)"
nikpak a -p -m3 -inul "backup-$(date +%F).nik" ~/Documents || [ $? -eq 1 ]
nikpak lb backup-2026-10-16.nik | grep -i '\.wav$'
13.7 Total Commander
nik এক্সটেনশন রেজিস্টার করুন; প্যাকিংয়ের জন্য a ও আনপ্যাকিংয়ের জন্য x ব্যবহার করুন; দীর্ঘ ফাইল তালিকার জন্য ফ্রন্ট-এন্ডকে @listfile দিতে দিন; অটেন্ডেড এক্সট্র্যাকশনের জন্য -o+ বা -y দিন; এবং পাসওয়ার্ড দিন -p বা NIKPAK_PASSWORD ভেরিয়েবল দিয়ে, যেহেতু একটি গ্রাফিক্যাল ফ্রন্ট-এন্ডের প্রম্পট করার জন্য কোনো কনসোল নেই।14 টেস্টিং ও যাচাই
14.1 ইউনিট টেস্ট
cargo test --release দিয়ে:
14.2 এন্ড-টু-এন্ড টেস্ট
প্রতিটি বেঞ্চমার্ক আর্কাইভ এক্সট্র্যাক্ট করে তার উৎসের সাথে বাইট-বাই-বাইট তুলনা করা হয়েছিল (10,949-ফাইল সেটের জন্য SHA-256), কয়েকটি স্তরে। একটি মিশ্র আর্কাইভ (WAV, MOD, BMP, টেক্সট, র্যান্ডম ডেটা, সাবফোল্ডার) তৈরি, তালিকাভুক্ত, পরীক্ষিত, সম্পূর্ণ এক্সট্র্যাক্ট করা হয়েছিল, এবং এর মাঝ থেকে একটি একক ফাইল এক্সট্র্যাক্ট করা হয়েছিল। একই আর্কাইভ এনক্রিপশন দিয়ে তৈরি, সঠিক ও ভুল পাসওয়ার্ড দিয়ে পরীক্ষিত এবং এক্সট্র্যাক্ট করা হয়েছিল। পূর্ববর্তী ফরম্যাট ভার্সনে (1.0) লেখা আর্কাইভ 1.1 খুলেছিল। ইন্টারঅ্যাক্টিভ পাসওয়ার্ড প্রবেশ একটি সিউডো-টার্মিনালের মধ্য দিয়ে অনুশীলিত হয়েছিল: মিলে যাওয়া পাসওয়ার্ড, একটি অমিল, একটি খালি এন্ট্রি (জেনারেশন), খোলার সময় সঠিক ও ভুল পাসওয়ার্ড।
14.3 আক্রমণ পরীক্ষা
14.4 টেস্টিংয়ে পাওয়া ত্রুটি
15 সীমাবদ্ধতা ও রোডম্যাপ
15.1 বর্তমান সীমাবদ্ধতা
-o+ দিয়ে ওভাররাইট করুন। | |
-m4 ও -m5 আর্কাইভ একটি 128 MiB উইন্ডো ব্যবহার করে; সেগুলো ডিকমপ্রেস করতে ততটুকু মেমরি লাগে। | |
Single-threaded and the slowest level. Creating needs up to about 1.1 GB of memory, extracting up to about 350 MB. | |
cargo test --release চালান। |
15.2 রোডম্যাপ
Cargo.lock রিপোজিটরিতে রাখুন যাতে বিল্ড পুনরুৎপাদনযোগ্য হয়, এবং আপনি সমর্থন করেন এমন প্রতিটি প্ল্যাটফর্মের continuous-integration জবে cargo test --release চালান।A পরিশিষ্ট A: ফরম্যাট ধ্রুবক ও সীমা
89 4E 49 4B 0D 0A 1A 0A | |
u32 বিগ-এন্ডিয়ান দৈর্ঘ্য | |
-mt) |
B পরিশিষ্ট B: শব্দকোষ