ক্রিপ্টো ++ "টি" - শৈলী ফিল্টার

কিছু শর্তের উপর ভিত্তি করে আমি একটি তথ্য-প্রক্রিয়াকরণের কাজ করছি।

Data is read from an input pipe, processed, and pushed down a Crypto++ CBC_Mode filter ending in a FileSink.

এখন, আমি এনকৃপশন এবং ফাইল-স্টোরে, একটি চেকসাম গণনা মধ্যে ডুবে তথ্য নেভিগেশন "snoop" চাই। কর্মক্ষমতা কারণে, আমি স্ট্রিমিং সময় এই করতে চান, আউটপুট ফাইল পুনরায় খোলার এবং একটি হ্যাশ-সমতুল্য গণনা করার পরে আমার প্রয়োজনের জন্য যুক্তিসঙ্গত নয়।

আমি কি দেখতে পাচ্ছি, এই কাজ করার জন্য কি অনুপস্থিত, "Tee" ফিল্টারের কিছু ফর্ম কয়েকটি নতুন চেইন, ফাইল সংরক্ষণের জন্য এক এবং ডাটা হাউস-গণনার জন্য একটি শৃঙ্খলে কিছু বিভক্ত।

Crypto ++ এ যেমন কার্যকারিতা আছে কি? আমি কি এই ধরনের ফিল্টার নিজেকে প্রয়োগ করতে পারি, এবং যদি তাই হয়, তবে কাস্টম ক্রিপ্টো ++ ফিল্টারের জন্য কি কিছু নির্দেশিকা বা প্রয়োজন আছে? মাছি চেকসাম গণনা করার অন্য কোন উপায় আছে?

0
টিপ জন্য ধন্যবাদ. তবে, AFACTT, এটি উভয় একটি স্বাক্ষর উৎপাদিত সমর্থন করে না, এবং ডেটা এগিয়ে প্রবাহিত, এটা কি?
যোগ লেখক Rawler, উৎস
এটা কি স্বাক্ষরকারী , filter.cpp তে প্রয়োগ করা যায়, তার অনুরূপ শব্দ করে।
যোগ লেখক Christopher Creutzig, উৎস
আমি বিশ্বাস করি এটি যখন আপনি সত্য এ কন্সট্রাকটরের শেষ প্যারামিটারটি সেট করেন। একইভাবে আমার মনে হয় স্বাক্ষর ভেরিফিকেশন ফিল্টার , যদি তার পতাকাতে প্রদত্ত PUT_MESSAGE , যেমন NextPutMultiple মত ফাংশনগুলিতে, কিছু আরও ফিল্টারে বার্তা পাঠান, তার হ্যাশ আপডেট ছাড়াও কিন্তু আমি এটি পরীক্ষা করার জন্য কোন কোড লিখতে পারিনি।
যোগ লেখক Christopher Creutzig, উৎস

1 উত্তর

আমি যা দেখতে পাচ্ছি তা থেকে কাজ করার জন্য যা অনুপস্থিত, তা "তেজ" ফিল্টারের কিছু ফর্ম।   ...   Crypto ++ এ যেমন কার্যকারিতা আছে কি? ?

হ্যাঁ, এটি একটি ChannelSwitch নামে পরিচিত। নিম্নলিখিতটি ক্রিপ্টো + + চ্যানেলসুইচ এ উইকি পাতা থেকে এসেছে, এবং এটি ওয়েই দাই এর ক্লাসের ব্যবহার অনুসরণ করে তার পরীক্ষা ফাইল

MD5 hashMD5;
HashFilter filterMD5(hashMD5);

SHA1 hashSHA1;
HashFilter filterSHA1(hashSHA1);

std::auto_ptr channel( new ChannelSwitch );

channel->AddDefaultRoute(filterMD5);
channel->AddDefaultRoute(filterSHA1);

StringSource ss( "abcdefghijklmnopqrstuvwxyz", true, channel.release());

string digest;
HexEncoder encoder( new StringSink( digest ), true /* uppercase */ ); 

filterMD5.TransferTo( encoder );
cout << filterMD5.AlgorithmName() << ": " << digest << endl;
digest.erase();

filterSHA1.TransferTo( encoder );
cout << filterSHA1.AlgorithmName() << ": " << digest << endl;
digest.erase();

এখানে উপরে উদাহরণের আউটপুট হয়:

$ ./cryptopp-test.exe
MD5: C3FCD3D76192E4007DFB496CCA67E13B
SHA-1: 32D10C7B8CF96570CA04CE37F2A19D84240D3A89

এখানে আরেকটি উদাহরণ যা আলাদা sinks ব্যবহার করে এবং অনুসরণ করা সহজ হতে পারে:

byte data[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
string e1, e2, e3;

HexEncoder r1(new StringSink(e1));
Base32Encoder r2(new StringSink(e2));
Base64Encoder r3(new StringSink(e3));

ChannelSwitch chsw;
chsw.AddDefaultRoute(r1);
chsw.AddDefaultRoute(r2);
chsw.AddDefaultRoute(r3);

chsw.Put(data, sizeof(data));
chsw.MessageEnd();

cout << e1 << endl;
cout << e2 << endl;
cout << e3 << endl;

এখানে উদাহরণের আউটপুট:

$ ./cryptopp-test.exe
0102030405060708090A
AEBAGBAFA2DSSCIK
AQIDBAUGBwgJCg==
0
যোগ