HMAC-SHA1
হ্যাশ তৈরির জন্য কি কোনও বাশ স্ক্রিপ্ট রয়েছে ?
আমি নিম্নলিখিত পিএইচপি কোডের সমতুল্য কিছু খুঁজছি:
hash_hmac("sha1", "value", "key");
উত্তর:
আমি বুঝতে পেরেছিলাম যে এটি আপনি যা চেয়েছিলেন ঠিক তা নয়, তবে চাকাটি পুনর্নবীকরণ এবং ব্যাশ সংস্করণ লেখার কোনও অর্থ নেই।
আপনি openssl
আপনার স্ক্রিপ্টের মধ্যে হ্যাশ উত্পন্ন করতে কমান্ডটি কেবল ব্যবহার করতে পারেন ।
[me@home] echo -n "value" | openssl dgst -sha1 -hmac "key"
57443a4c052350a44638835d64fd66822f813319
বা সহজভাবে:
[me@home] echo -n "value" | openssl sha1 -hmac "key"
57443a4c052350a44638835d64fd66822f813319
ব্যবহার করতে মনে রাখুন -n
সঙ্গে echo
বা অন্য একটি লাইন বিরতি চরিত্র স্ট্রিং যোগ করা হয় এবং আপনার তথ্য এবং হ্যাশ পরিবর্তন।
এই কমান্ডটি ওপেনএসএসএল প্যাকেজ থেকে এসেছে যা ইতিমধ্যে আপনার লিনাক্স / ইউনিক্স, সাইগউইন এবং পছন্দগুলি পছন্দ হিসাবে ইনস্টল করা উচিত (বা সহজেই ইনস্টল করা উচিত)।
মনে রাখবেন যে পুরানো সংস্করণগুলি openssl
(যেমন আরএইচইএল 4 সহ প্রেরিত) -hmac
বিকল্প সরবরাহ করতে পারে না ।
বিকল্প সমাধান হিসাবে, তবে প্রধানত ফলাফলগুলি একই প্রমাণ করার জন্য আমরা পিএইচপি'র hmac_sha1()
সাথে কমান্ড লাইন থেকে কল করতে পারি :
[me@home]$ echo '<?= hash_hmac("sha1", "value", "key") ?>' | php
57443a4c052350a44638835d64fd66822f813319
sha1
sha256
openssl genrsa
? এছাড়াও, 404. মধ্যে OpenSSL ডকুমেন্টেশন লিংক ফলাফল
এখানে একটি বাশ ফাংশন যা hash_hmac
পিএইচপি থেকে শুরু করে:
#!/bin/bash
function hash_hmac {
digest="$1"
data="$2"
key="$3"
shift 3
echo -n "$data" | openssl dgst "-$digest" -hmac "$key" "$@"
}
# hex output by default
hash_hmac "sha1" "value" "key"
# raw output by adding the "-binary" flag
hash_hmac "sha1" "value" "key" -binary | base64
# other algos also work
hash_hmac "md5" "value" "key"
hash_hmac "sha1" "$(cat your-json-file)" "key"
। বিকল্পভাবে আপনি openssl dgst
এই hash_hmac
ফাংশনটি ব্যবহার না করে কেবল আপনার ফাইলটি পাইপ করতে পারেন ।
Hash_hmac ফাংশন জন্য ধন্যবাদ! তবে এটি আমার আবেদনের পক্ষে যথেষ্ট ছিল না। যদি কেউ অবাক হয়ে যায়, আমাকে আগের বারের হ্যাশিংয়ের ফলস্বরূপ একটি কী ব্যবহার করে বেশ কয়েকবার পুনরায় হ্যাশ করতে হয়েছিল এবং তাই এটি বাইনারি ইনপুট। (অ্যামাজন এডাব্লুএস প্রমাণীকরণের স্বাক্ষরটি তৈরি করা হয়েছে))
সুতরাং আমার যা দরকার তা ছিল বাইনারি কী সরবরাহ করার একটি উপায় যা কোনওভাবে অ্যালগরিদমকে ভঙ্গ করবে না। তারপরে আমি এটি পেয়েছি: http://openssl.6102.n7.nabble.com/command-line-hmac-with-key-in-hex-td6754.html
স্টিফেন হেনসনের জবাবটির জন্য হেক্স ফর্ম্যাটে মানটি ফিরিয়ে আনার জন্য hash_hmac ফাংশন প্রয়োজন। সুতরাং এটি নিম্নলিখিত প্রতিধ্বনি করা প্রয়োজন:
$ echo -n "$data" | openssl dgst "-$digest" -hmac "$key" | sed -e 's/^.* //'
তারপরে পরবর্তী কলটির হেক্সিট হিসাবে কীটি সরবরাহ করা প্রয়োজন:
$ echo -n "$data" | openssl dgst "-$digest" -mac HMAC -macopt "hexkey:$key" | sed -e 's/^.* //'
আশা করি এটি যে কাউকে সহায়তা করবে, সম্ভবত এমন কেউ যারা আডাব্লুএসে ক্লাউডফ্রন্ট এন্ট্রিগুলি অকার্যকর করতে বাশ স্ক্রিপ্টগুলি তৈরি করার চেষ্টা করছে (আমার মতো!) (আমি এখনও এটি পরীক্ষা করি নি, তবে আমি মনে করি এটিই আমার বাশ স্ক্রিপ্টের কারণ) কাজ করে না, এবং আমার পিএইচপি একটি ...)
কমান্ড লাইনে যারা আরও JWT অন্বেষণ করতে চান তাদের কাছে: শীতল jwt বাশ স্ক্রিপ্ট