আমি গিতটি একটি সংশোধনের জন্য আইডি হিসাবে SHA-1 ডাইজেস্ট ব্যবহার করে সে সম্পর্কে পড়েছি। কেন এটি SHA এর আরও আধুনিক সংস্করণ ব্যবহার করে না?
আমি গিতটি একটি সংশোধনের জন্য আইডি হিসাবে SHA-1 ডাইজেস্ট ব্যবহার করে সে সম্পর্কে পড়েছি। কেন এটি SHA এর আরও আধুনিক সংস্করণ ব্যবহার করে না?
উত্তর:
কেন এটি SHA এর আরও আধুনিক সংস্করণ ব্যবহার করে না?
ডিসেম্বর 2017: এটি হবে। এবং গিট 2.16 (কিউ 1 2018) হ'ল সেই উদ্দেশ্যটি চিত্রিত ও বাস্তবায়নের জন্য প্রথম প্রকাশ।
দ্রষ্টব্য: নীচে গিটটি দেখুন: এটি SHA-256 হবে ।
গিট ২.১it গিটে হ্যাশ ফাংশনটি কী ব্যবহৃত হয় তা সংজ্ঞায়িত করার জন্য একটি অবকাঠামো প্রস্তাব করবে এবং এটি বিভিন্ন কোডেপাথ জুড়ে নদীর গভীরতানিষ্টার প্রচেষ্টা শুরু করবে।
দেখুন কমিট c250e02 (28 নভেম্বর 2017) দ্বারা ( ``) র্যামজে জোন্স । প্রতিশ্রুতিবদ্ধ eb0ccfd
দেখুন , প্রতিশ্রুতিবদ্ধ 78a6766 , প্রতিশ্রুতি f50e766 , আবদ্ধ 65 (12 নভেম্বর 2017) দ্বারা ব্রায়ান এম। কার্লসন ( ) । (দ্বারা একীভূত junio সি Hamano - - মধ্যে কমিট 721cc43 , 13 ডিসেম্বর 2017)bk2204
gitster
হ্যাশ অ্যালগরিদমের প্রতিনিধিত্বকারী কাঠামো যুক্ত করুন
ভবিষ্যতে যেহেতু আমরা একটি অতিরিক্ত হ্যাশ অ্যালগরিদম সমর্থন করতে চাই, এমন একটি কাঠামো যুক্ত করুন যা একটি হ্যাশ অ্যালগরিদমকে প্রতিনিধিত্ব করে এবং এর সাথে অবশ্যই যেতে হবে এমন সমস্ত ডেটা । হ্যাশ অ্যালগরিদমের সহজ গণনার অনুমতি দেওয়ার জন্য
একটি ধ্রুবক যুক্ত করুন । একটি বিমূর্ত API তৈরি করতে ফাংশন
প্রয়োগ করুন যা যে কোনও হ্যাশ অ্যালগরিদম ব্যবহার করতে পারে এবং এই এপিআই অনুসারে বিদ্যমান SHA1 ফাংশনগুলির জন্য মোড়ক ব্যবহার করতে পারে।typedefs
বাইনারি আকারের পাশাপাশি হেক্স আকারের জন্য একটি মান প্রকাশ করুন ।
যদিও একটি সর্বদা অন্যটির দ্বিগুণ হয়ে থাকে, দুটি মান দুটিই কোডবেজ জুড়ে ব্যবহার করা হয় এবং উভয়ই উন্নত পাঠযোগ্যতার জন্য সরবরাহ করে।নাল অবজেক্ট আইডির জন্য হ্যাশ অ্যালগরিদম কাঠামোতে কোনও প্রবেশ অন্তর্ভুক্ত করবেন না।
যেহেতু এই মানটি সমস্ত শূন্য, উপযুক্ত আকারের যে কোনও আকারের সমস্ত শূন্য আইটেম আইডি ব্যবহার করা যেতে পারে এবং প্রতি-হ্যাশ ভিত্তিতে প্রদত্ত একটি সংরক্ষণ করার দরকার নেই।বর্তমান হ্যাশ ফাংশন ট্রানজিশন পরিকল্পনা এমন একটি সময় কল্পনা করেছিল যখন আমরা SHA-1 বা নিউহ্যাশ ফর্ম্যাটে থাকা ব্যবহারকারী থেকে ইনপুট গ্রহণ করব।
যেহেতু আমরা বুঝতে পারি না ব্যবহারকারীটি কী সরবরাহ করেছে, তাই অজানা অ্যালগরিদমের প্রতিনিধিত্ব করে একটি ধ্রুবক যুক্ত করুন যাতে আমাদের নির্দেশ করতে পারে যে আমাদের সঠিক মানটি দেখতে হবে।
রেপো সেটআপের সাথে হ্যাশ অ্যালগরিদম সমর্থন সংহত করুন
গীতের ভবিষ্যতের সংস্করণগুলিতে আমরা একটি অতিরিক্ত হ্যাশ অ্যালগরিদম সমর্থন করার পরিকল্পনা করি।
সংগ্রহস্থল সেটআপের সাথে হ্যাশ অ্যালগরিদমগুলির গণনার সংহত করুন এবং স্ট্রাক্ট সংগ্রহস্থলে গণিত ডেটাতে একটি পয়েন্টার সংরক্ষণ করুন ।
অবশ্যই, আমরা বর্তমানে কেবল SHA-1 সমর্থন করি, তাই এই মানটিকে হার্ড-কোড করুনread_repository_format
।
ভবিষ্যতে, আমরা কনফিগারেশন থেকে এই মানটি গণনা করব।একটি ধ্রুবক যুক্ত
the_hash_algo
করুন , যাhash_algo
বিশ্বব্যাপী সংগ্রহস্থলের কাঠামোর পয়েন্টারে নির্দেশ করে ।
দ্রষ্টব্য যে এটি হ্যাশ যা ব্যবহারকারীর কাছে আইটেম প্রদর্শন করতে ব্যবহৃত হ্যাশ নয়, যা ডিস্কে ডেটা সিরিয়ালাইজ করতে ব্যবহৃত হয়।
রূপান্তর পরিকল্পনা অনুমান করে যে এগুলি আলাদা হতে পারে। এই কেস সরবরাহ করার জন্য
আমরা ভবিষ্যতে একটি অতিরিক্ত উপাদান যুক্ত করতে পারি (বলুনui_hash_algo
)।
অগাস্ট 2018 আপডেট করুন, গিট 2.19 (Q3 2018) এর জন্য, গিট SHA-256 কে নিউহ্যাশ হিসাবে বেছে নেবে বলে মনে হচ্ছে ।
দেখুন 0ed8d8d কমিট দ্বারা (04 আগস্ট 2018) জনাথন মধ্যে Nieder ( artagnon
) ।
দেখুন কমিট 13f5e09 দ্বারা (25 জুলাই 2018) Ævar Arnfjörð Bjarmason ( avar
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 34f2297 , 20 আগস্ট 2018)
ডক
hash-function-transition
: SHA-256 কে নিউহ্যাশ হিসাবে চয়ন করুনসুরক্ষার দৃষ্টিকোণ থেকে, দেখে মনে হচ্ছে SHA-256, BLAKE2, SHA3-256, K12 এবং আরও অনেকগুলি একই সুরক্ষার বৈশিষ্ট্য রয়েছে বলে বিশ্বাস করা হচ্ছে।
সুরক্ষার দৃষ্টিকোণ থেকে সমস্ত ভাল বিকল্প।SHA-256 এর অনেকগুলি সুবিধা রয়েছে:
এটি প্রায় কিছুকাল ধরে হয়েছে, ব্যাপকভাবে ব্যবহৃত হয় এবং প্রায় প্রতিটি একক ক্রিপ্টো লাইব্রেরি দ্বারা সমর্থিত হয় (ওপেনএসএসএল, এমবেডটিএলএস, ক্রিপ্টোএনজি, সিকিউর ট্রান্সপোর্ট, ইত্যাদি)।
আপনি যখন SHA1DC এর সাথে তুলনা করেন, বেশিরভাগ ভেক্টরাইজড SHA-256 বাস্তবায়ন ত্বরণ ছাড়াই প্রকৃতপক্ষে দ্রুত।
যদি আমরা ওপেনজিপি (বা এমনকি, আমি মনে করি, সিএমএস) সহ স্বাক্ষরগুলি করছি, আমরা SHA-2 ব্যবহার করতে যাচ্ছি, সুতরাং যখন সেগুলির কোনও একটি পৃথক পৃথক অ্যালগরিদমের উপর নির্ভর করে আমাদের সুরক্ষা বোধ করা যায় না যখন আমরা কেবল একজনের উপর নির্ভর করতে পারি তখন একা সুরক্ষা ভঙ্গ করতে পারে।
সুতরাং SHA-256 এটি ।
এটি বলার জন্য হ্যাশ-ফাংশন-ট্রানজিশন ডিজাইন ডকটি আপডেট করুন।এই প্যাচের পরে, স্ট্রিংয়ের "
NewHash
" পরিবর্তনশীল নামt/t9700/test.pl
হিসাবে ২০০৮ সাল থেকে কোনও সম্পর্কযুক্ত ব্যবহার ব্যতীত আর কোনও উদাহরণ নেই ।
আপনি এই রূপান্তরটি SHA 256 এ গিট 2.20 (Q4 2018) এর সাথে অগ্রগতিতে দেখতে পাচ্ছেন:
দেখুন কমিট 0d7c419 , dda6346 কমিট , eccb5a5 কমিট , 93eb00f কমিট , d8a3a69 কমিট , কমিট fbd0e37 , কমিট f690b6b , কমিট 49d1660 , কমিট 268babd , কমিট fa13080 , কমিট 7b5e614 , 58ce21b কমিট , কমিট 2f0c9e9 , 825544a কমিট (15 অক্টোবর 2018) দ্বারা ব্রায়ান মি । কার্লসন ( bk2204
) । SZEDER Gábor ( ) দ্বারা 6afedba (15 অক্টোবর 2018) কমিট করুন
দেখুন । (দ্বারা মার্জডszeder
Junio সি Hamano - gitster
- মধ্যে d829d49 কমিট , 30 অক্টোবর 2018)
হার্ড-কোডেড ধ্রুবকগুলি প্রতিস্থাপন করুন
যথাযথ হিসাবে উল্লেখ হিসাবে
GIT_MAX_HEXSZ
বা 40 টি-ভিত্তিক স্থির প্রতিস্থাপন করুনthe_hash_algo
। ব্যবহারের
সমস্ত ব্যবহারকে রূপান্তর করুন যাতে কোনও হ্যাশ দৈর্ঘ্যের জন্য উপযুক্ত হয় appropriate একটি হেক্স অবজেক্ট আইডি আকারের জন্য হার্ড-কোডড ধ্রুবক ব্যবহার না করে পার্সড অবজেক্ট আইডির পরে সেই বিন্দু থেকে গণিত পয়েন্টারটি ব্যবহার করতে স্যুইচ করুন ।GIT_SHA1_HEXSZ
the_hash_algo
parse_oid_hex
GIT_SHA1_HEXSZ
আরও Git 2.22 (Q2 2019) এর সাথে সরিয়ে / প্রতিস্থাপন করা হবে এবং d4e568b কমিট করুন ।
এই রূপান্তরটি গিট ২.২১ (Q1 2019) দিয়ে অব্যাহত রয়েছে, যা sha-256 হ্যাশ যুক্ত করে এবং "নিউহ্যাশ" দিয়ে গিট নির্মাণের অনুমতি দেওয়ার জন্য কোডের মাধ্যমে প্লাগ করে।
দেখুন কমিট 4b4e291 , 27dc04c কমিট , 13eeedb কমিট , কমিট c166599 , কমিট 37649b7 , কমিট a2ce0a7 , কমিট 50c817e , 9a3a0ff কমিট , কমিট 0dab712 , কমিট 47edb64 (14 নভেম্বর 2018), এবং 2f90b9d কমিট , 1ccf07c কমিট (22 অক্টোবর 2018) দ্বারা ব্রায়ান মি । কার্লসন ( bk2204
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 33e4ae9 , 29 জানুয়ারী 2019)
SHA-256 সমর্থন (ফেব্রুয়ারী 2019) এর একটি বেস বাস্তবায়ন যুক্ত করুন
SHA-1 দুর্বল এবং আমাদের একটি নতুন হ্যাশ ফাংশনে রূপান্তর করতে হবে।
কিছু সময়ের জন্য, আমরা এই নতুন ফাংশনটিকে হিসাবে উল্লেখ করেছিNewHash
।
সম্প্রতি, আমরা SHA-256 হিসাবে বেছে নেওয়ারNewHash
সিদ্ধান্ত নিয়েছি ।
SHA-256-র পছন্দের কারণগুলি এই থ্রেডে এবং হ্যাশ ফাংশন ট্রানজিশন ডকুমেন্টের প্রতিশ্রুতিবদ্ধ ইতিহাসে বর্ণিত হয়েছে ।SHA-256 ভিত্তিক অফের বেসিক বাস্তবায়ন যুক্ত করুন
libtomcrypt
, যা পাবলিক ডোমেনে রয়েছে।
আমাদের কোডিং মানগুলি পূরণ করার জন্য এটি অনুকূলিত করুন এবং এটি পুনর্গঠন করুন।
SHA-1 ব্লক বাস্তবায়ন থেকে আপডেট এবং চূড়ান্ত ফাংশনগুলিতে টানুন, কারণ আমরা সমস্ত সংকলকগুলির সাথে এই ফাংশনটি সঠিকভাবে জানি। এই বাস্তবায়নটি SHA-1 এর চেয়ে ধীর, তবে ভবিষ্যতে কমিটগুলিতে আরও পারফরম্যান্ট বাস্তবায়ন চালু করা হবে।হ্যাশ অ্যালগরিদমের তালিকায় SHA-256 ওয়্যার আপ করুন এবং অ্যালগোরিদম সঠিকভাবে কাজ করে এমন একটি পরীক্ষা যুক্ত করুন।
মনে রাখবেন যে এই প্যাচটি দিয়ে, এখনও গিতে SHA-256 ব্যবহার করে স্যুইচ করা সম্ভব নয়।
একটি বৃহত্তর হ্যাশ অ্যালগরিদম পরিচালনা করতে কোড তৈরি করতে অতিরিক্ত প্যাচগুলির প্রয়োজন এবং আরও পরীক্ষার সংশোধন করা দরকার।
hash
: ওপেনএসএসএল ব্যবহার করে একটি SHA-256 বাস্তবায়ন যুক্ত করুনআমাদের কাছে ইতিমধ্যে SHA-1 এর জন্য ওপেনএসএসএল রুটিন রয়েছে, তাই এসএএএ-256 এর জন্য রুটিনগুলিও যুক্ত করুন।
একটি কোর i7-6600U এ, এই SHA-256 বাস্তবায়ন SHA1DC SHA-1 প্রয়োগের সাথে অনুকূলভাবে তুলনা করে:
SHA-1: 157 MiB/s (64 byte chunks); 337 MiB/s (16 KiB chunks) SHA-256: 165 MiB/s (64 byte chunks); 408 MiB/s (16 KiB chunks)
sha256
: ব্যবহার করে একটি SHA-256 বাস্তবায়ন যুক্ত করুনlibgcrypt
সাধারণত, সি এর চেয়ে অ্যাসেমব্লিতে লেখা ক্রিপ্টোগ্রাফিক রুটিনগুলির মধ্যে একজন আরও ভাল পারফরম্যান্স পান এবং এটি SHA-256 এর ক্ষেত্রেও সত্য।
এছাড়াও, বেশিরভাগ লিনাক্স ডিস্ট্রিবিউশন লাইসেন্সের কারণে ওপেনএসএসএলের বিপরীতে গিট লিঙ্ক বিতরণ করতে পারে না।GnuPG সহ বেশিরভাগ সিস্টেমে থাকতে হবে
libgcrypt
, কারণ এটি GnuPG এর নির্ভরতা a
libgcrypt
কয়েকটি কিবি বা বৃহত্তর বার্তাগুলির জন্য SHA1DC প্রয়োগের চেয়েও দ্রুত।তুলনার জন্য, একটি কোর i7-6600U এ, এই বাস্তবায়নটি 35 কিউবি / s এ 16 কিবি খণ্ড প্রক্রিয়াজাত করে যখন এসএএএডিসিডি 337 মাইবি / সেকেন্ডে সমতুল্য অংশগুলি প্রসেস করে।
এছাড়াও, এলবিজিক্রিপ্ট এলজিপিএল ২.১ এর অধীনে লাইসেন্সযুক্ত, যা জিপিএলের সাথে সামঞ্জস্যপূর্ণ। SHA-256 এর একটি বাস্তবায়ন যুক্ত করুন যা libgcrypt ব্যবহার করে।
আপগ্রেড প্রচেষ্টা গিট 2.24 (Q4 2019) এর সাথে চলছে
দেখুন aaa95df কমিট , be8e172 কমিট , 3f34d70 কমিট , fc06be3 কমিট , 69fa337 কমিট , 3a4d7aa কমিট , e0cb7cd কমিট , 8d4d86b কমিট , f6ca67d কমিট , কমিট dd336a5 , কমিট 894c0f6 , কমিট 4439c7a , কমিট 95518fa , e84f357 কমিট , fe9fec4 কমিট , 976ff7e কমিট , কমিট 703d2d4 , 9d958cc কমিট , কমিট 7962e04 , কমিট fee4930(18 আগস্ট 2019) ব্রায়ান মি। কার্লসন ( bk2204
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে 676278f কমিট , 11 অক্টোবর 2019)
GIT_SHA1_HEXSZ
হার্ড-কোডেড ধ্রুবক ব্যবহার করার পরিবর্তে ব্যবহারে স্যুইচ করুনthe_hash_algo
।
গিট 2.26 (কিউ 12020) দিয়ে, পরীক্ষার স্ক্রিপ্টগুলি সেই দিনের জন্য প্রস্তুত থাকে যখন বস্তুর নামগুলি SHA-256 ব্যবহার করবে।
দেখুন 277eb5a কমিট , 44b6c05 কমিট , 7a868c5 কমিট , 1b8f39f কমিট , a8c17e3 কমিট , 8320722 কমিট , 74ad99b কমিট , ba1be1a কমিট , cba472d কমিট , 82d5aeb কমিট , কমিট 3c5e65c , কমিট 235d3cd , 1d86c8f কমিট , কমিট 525a7f1 , 7a1bcb2 কমিট , cb78f4f কমিট , কমিট 717c939 , প্রতিশ্রুতি 08a9dd8 , 215b60b প্রতিশ্রুতিবদ্ধ , 194264c প্রতিশ্রুতিবদ্ধ(21 ডিসেম্বর 2019) ব্রায়ান মি। কার্লসন ( bk2204
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে f52ab33 কমিট , 05 ফেব্রুয়ারী 2020)
উদাহরণ:
t4204
: হ্যাশ আকার স্বাধীন করতেসাইন-অফ-বাই: ব্রায়ান মি। কার্লসন
$OID_REGEX
হার্ড-কোডেড নিয়মিত এক্সপ্রেশনের পরিবর্তে ব্যবহার করুন ।
সুতরাং, পরিবর্তে ব্যবহার করুন:
grep "^[a-f0-9]\{40\} $(git rev-parse HEAD)$" output
পরীক্ষাগুলি ব্যবহার করছে
grep "^$OID_REGEX $(git rev-parse HEAD)$" output
এবং কমিট bdee9cd (13 মে 2018) OID_REGEX
থেকে এসেছেন ব্রায়ান এম। কার্লসন ( bk2204
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে 9472b13 কমিট , 30 মে 2018, গীত v2.18.0-rc0)
t/test-lib
: পরিচয় করিয়ে দিনOID_REGEX
সাইন-অফ-বাই: ব্রায়ান মি। কার্লসন
বর্তমানে আমাদের একটি চলক
$_x40,
রয়েছে , যার মধ্যে একটি রেইজেক্স রয়েছে যা পুরো 40-অক্ষরের হেক্স ধ্রুবকের সাথে মেলে।তবে, এর সাথে
NewHash
, আমাদের অবজেক্ট আইডি থাকবে যা 40 টির চেয়ে বেশি অক্ষরের।যেমন একটি ক্ষেত্রে,
$_x40
একটি বিভ্রান্তিকর নাম হবে।একটি
$OID_REGEX
ভেরিয়েবল তৈরি করুন যা বর্তমান হ্যাশের দৈর্ঘ্য নির্বিশেষে যথাযথ অবজেক্ট আইডির সাথে মিলিত একটি রেজেক্সকে সর্বদা প্রতিফলিত করবে।
এবং, এখনও পরীক্ষার জন্য:
দেখুন কমিট f303765 , edf0424 কমিট , 5db24dc কমিট , d341e08 কমিট , কমিট 88ed241 , 48c10cc কমিট , f7ae8e6 কমিট , কমিট e70649b , a30f93b কমিট , a79eec2 কমিট , 796d138 কমিট , 417e45e কমিট , dfa5f53 কমিট , f743e8f কমিট , 72f936b কমিট , 5df0f11 কমিট , কমিট 07877f3 , 6025e89 প্রতিশ্রুতিবদ্ধ , প্রতিশ্রুতি 7b1a182 , 94db7e3 প্রতিশ্রুতিবদ্ধ ,কমিট ডিবি 12505 (07 ফেব্রুয়ারী 2020) ব্রায়ান মি। কার্লসন ( bk2204
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে কমিট 5af345a , 17 ফেব্রুয়ারী 2020)
t5703
: SHA-256 দিয়ে পরীক্ষার কাজ করুন makeসাইন-অফ-বাই: ব্রায়ান মি। কার্লসন
এই পরীক্ষায় একটি অবজেক্ট আইডি ব্যবহার করা হয়েছিল যা দৈর্ঘ্যে 40 হেক্স অক্ষর ছিল, যার ফলে পরীক্ষার উত্তরণ কেবল নয়, বরং হ্যাশ হয়ে যখন SHA-256 দিয়ে চালানো হয় hang
এই মানটি একটি নির্দিষ্ট ডামি অবজেক্ট আইডি
test_oid_init
এবং ব্যবহার করে পরিবর্তন করুনtest_oid
।তদতিরিক্ত, নিশ্চিত করুন যে আমরা স্থির দৈর্ঘ্যের পরিবর্তে ক্ষেত্রগুলি দিয়ে কাট ব্যবহার করে উপযুক্ত দৈর্ঘ্যের একটি অবজেক্ট আইডি বের করি।
কিছু কোডপথগুলিকে ভান্ডারটিতে কাজ করার জন্য প্যারামিটার হিসাবে একটি সংগ্রহস্থল উদাহরণ দেওয়া হয়েছিল, তবে the_repository
এর কলিগুলিতে উদাহরণ দেওয়া হয়েছিল, যা গিট 2.26 (Q1 2020) দিয়ে পরিষ্কার করা হয়েছে (কিছুটা))
দেখুন b98d188 কমিট , 2dcde20 কমিট , 7ad5c44 কমিট , c8123e7 কমিট , 5ec9b8a কমিট , a651946 কমিট , eb999b3 কমিট (30 জানুয়ারী 2020) দ্বারা Matheus Tavares ( matheustavares
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে 78e67cd কমিট , 14 ফেব্রুয়ারী 2020)
sha1-file
:check_object_signature()
যে কোনও রেপো হ্যান্ডেল করার অনুমতি দিনসাইন-অফ-বাই: ম্যাথিউস টাভারেস
কিছু কলার
check_object_signature()
ইচ্ছামত সংগ্রহস্থলগুলিতে কাজ করতে পারে তবে রেপো এই ফাংশনে পাস হয় না। পরিবর্তে,the_repository
সর্বদা অভ্যন্তরীণভাবে ব্যবহৃত হয়।
সম্ভাব্য অসঙ্গতিগুলি ঠিক করতে, ফাংশনটিকে স্ট্রাক্ট সংগ্রহের অনুমতি দিন এবং সেই কলারগুলি হস্তান্তরিত হওয়া রেপোগুলিতে পাস করুন।
উপর ভিত্তি করে:
sha1-file
: পাসgit_hash_algo
করারhash_object_file()
সাইন-অফ-বাই: ম্যাথিউস টাভারেস
hash_object_file()
একটিgit_hash_algo
পরামিতি প্রবর্তন করে সালিশী রেপোসে কাজ করার অনুমতি দিন । কলার পরিবর্তন করুন যার স্ট্র্যাপে স্ট্রাক্ট রেপোজিটরি পয়েন্টার রয়েছেgit_hash_algo
সেই রেপো থেকে পাস করার জন্য ।
অন্যান্য সমস্ত কলারের জন্য, পাস করুনthe_hash_algo
, যা ইতিমধ্যে অভ্যন্তরীণভাবে ব্যবহৃত হয়েছিলhash_object_file()
।
এই কার্যকারিতাটি নিম্নোক্ত প্যাচে ব্যবহৃত হবেcheck_object_signature()
স্বেচ্ছাসেবীর রেপোগুলিতে কাজ করতে সক্ষম করার জন্য (যা পরিবর্তে, এখানে কোনও অসঙ্গতি ঠিক করতে ব্যবহৃত হবেobject.c
: পার্স_বজেক্ট ())।
git rev-parse
এখন কি হ্যাশ ব্যবহৃত হবে তা মুদ্রণ করতে সক্ষম: stackoverflow.com/a/58862319/6309 । : এবং খালি গাছ একটি নতুন SHA2 আইডি রয়েছে stackoverflow.com/a/9766506/6309
আপডেট : উপরোক্ত প্রশ্ন এবং এই উত্তরটি ২০১৫ সালের then এর পর থেকে গুগল প্রথম SHA-1 সংঘর্ষের ঘোষণা দিয়েছে: https://security.googleblog.com/2017/02/annoucing-first-sha1-collision.html
স্পষ্টতই আমি বাইরে থেকে কেবল অনুমান করতে পারি যে গিট কেন SHA-1 ব্যবহার করে চলেছে, তবে এগুলির কারণগুলি হতে পারে:
unsigned char[20]
বাফারগুলি কেবল কল্পনা করুন ;-), পরে এটি পুনরায় লেখার চেয়ে শুরুতে ক্রিপ্টোগ্রাফিক তত্পরতার জন্য প্রোগ্রাম করা অনেক সহজ।কিছু লিঙ্ক:
আমার ব্যক্তিগত দৃষ্টিভঙ্গিটি হ'ল সম্ভবত ব্যবহারিক আক্রমণগুলি সম্ভবত কিছুটা সময় বন্ধ ছিল এবং এমনকি যখন তারা ঘটে তখন লোকেরা প্রাথমিকভাবে তাদের বিরুদ্ধে হ্যাশ অ্যালগরিদম পরিবর্তন করার পরিবর্তে অন্য উপায়গুলি কমিয়ে দেবে, যদি আপনি সুরক্ষা সম্পর্কে যত্ন নেন তবে আপনাকে ভুল হওয়া উচিত আপনার অ্যালগরিদমগুলির পছন্দগুলি সম্পর্কে সতর্কতার সাথে এবং ক্রমাগত আপনার সুরক্ষা শক্তিগুলিকে উপরের দিকে সংশোধন করা, কারণ আক্রমণকারীদের সক্ষমতাও কেবল এক দিক দিয়ে চলেছে, সুতরাং গিটকে একটি ভূমিকা হিসাবে গ্রহণ করা বুদ্ধিমানের কাজ হবে, বিশেষত এর উদ্দেশ্য হিসাবে SHA-1 ব্যবহার করা ক্রিপ্টোগ্রাফিক সুরক্ষা হতে পারে না।
এটি মার্চুরিয়ালের জন্য SHA1 থেকে দূরে সরে যাওয়ার জরুরিতার আলোচনা, তবে এটি গিটের ক্ষেত্রেও প্রযোজ্য: https://www.mercurial-scm.org/wiki/mpm/SHA1
সংক্ষেপে: আপনি যদি আজ খুব চর্বিহীন হন না তবে আপনার কাছে sha1 এর চেয়েও খারাপ দুর্বলতা রয়েছে। তবে তা সত্ত্বেও, ম্যচুরিয়াল 10 বছর আগে শ 1 থেকে দূরে সরে যাওয়ার প্রস্তুতি নিতে শুরু করেছিলেন।
মার্চুরিয়াল এর ডেটা স্ট্রাকচার এবং এসএএএ 1 এর উত্তরসূরিদের প্রোটোকলগুলির পুনর্নির্মাণের কাজ বছরের পর বছর ধরে চলছে। 10 বছর পূর্বে রেভলগএনজি প্রবর্তনের সাথে মার্কুরিয়াল ০.৯-তে আমাদের রেগলগ কাঠামোতে বৃহত্তর হ্যাশগুলির জন্য স্টোরেজ স্পেস বরাদ্দ করা হয়েছিল। সম্প্রতি চালু হওয়া বান্ডেল 2 ফর্ম্যাটটি নেটওয়ার্কের মাধ্যমে বিভিন্ন হ্যাশ ধরণের বিনিময়কে সমর্থন করে। কেবলমাত্র অবশিষ্ট টুকরা হ'ল একটি প্রতিস্থাপন ফাংশন এবং পিছনের দিকে সামঞ্জস্য কৌশল বেছে নেওয়া।
যদি মুরচুরিয়াল করার আগে গিটটি sha1 থেকে দূরে সরে না যায়, আপনি এইচজি-গিটের সাথে স্থানীয় মার্চুরিয়াল আয়না রেখে সর্বদা সুরক্ষার আরেকটি স্তর যুক্ত করতে পারেন ।
একটি শক্তিশালী হ্যাশে এখন একটি রূপান্তর পরিকল্পনা রয়েছে , তাই ভবিষ্যতে দেখে মনে হচ্ছে এটি SHA-1 এর চেয়ে আরও আধুনিক হ্যাশ ব্যবহার করবে। থেকে বর্তমান রূপান্তরটি পরিকল্পনা :
কিছু হ্যাশ বিবেচনায় রয়েছে SHA-256, SHA-512/256, SHA-256x16, K12, এবং BLAKE2bp-256