আমি রুবিতে কীভাবে একটি SHA1 হ্যাশ তৈরি করব?


158

3
এসএএএএ -৩ নিরাপত্তাহীন বলে দেখানো হয়েছে। নিরাপদ বিকল্পগুলি যেমন SHA-256 বা SHA-3 ব্যবহার করার কথা বিবেচনা করুন। ছিন্নভিন্ন.ইও
— জোনাস এলফস্ট্রোম

উত্তর:


384
require 'digest/sha1'
Digest::SHA1.hexdigest 'foo'

41
এছাড়াও রয়েছেDigest::SHA1.base64digest 'foo'
— অ্যান্ড্রুর্ক

13
এফওয়াইআই: Digestরুবি স্ট্যান্ডার্ড লাইব্রেরির অংশ ( রুবি- ডক.আর.অর্গ / স্ট্ডলিব ১.৯.২ / লিবিডোক / ডিজেস্ট / আরডোক / ইন্ডেক্স এইচটিএমএল )। এটিতে SHA1, SHA2, MD5 এবং অন্যান্য হ্যাশ অ্যালগরিদমের জন্য বাস্তবায়ন রয়েছে।
— jwfearn

8

একটি বেস 64 এনকোডড হ্যাশের জন্য, একটি ওউথ স্বাক্ষর যাচাই করতে, আমি ব্যবহার করেছি

require 'base64'
require 'hmac-sha1'

Base64.encode64((HMAC::SHA1.new('key') << 'base').digest).strip

6
FYI, 'hmac-sha1' রত্নটি 'রুবি-এইচএমএসি' থেকে পূরণ হয়
— অ্যান্ড্রুক

7

আমি একটি সহায়ক রত্ন তৈরি করেছি যা কিছু শ 1 কোডের চারপাশে একটি সাধারণ মোড়ক

require 'rickshaw'
> Rickshaw::SHA1.hash('LICENSE.txt')

 => "4659d94e7082a65ca39e7b6725094f08a413250a" 

> "hello world".to_sha1

 => "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed" 

-25

যেখানে 'সিরিয়ালাইজ' হ'ল অন্য কোথাও নির্ধারিত কিছু ব্যবহারকারীর ফাংশন।

 def generateKey(data)
    return Digest::SHA1.hexdigest ("#{serialize(data)}")
 end

এটি কি @ ডেভস্টপফিক্সের উত্তরের ডুপ্লিকেট নয়?
— অ্যান্ড্রু গ্রিম

এমনকি যদি এটি প্রস্তাবিত হয় তবে এটি বেশ কিছু কুৎসিত রুবি
— কোডও রয়েছে

16
ভুলে যাবেন না যে স্ট্যাকওভারফ্লোতে অনেক বেশি দর্শক রয়েছে, আপনি কেন এটি করার সঠিক উপায়টি আমাদের দেখান না? কম সমালোচক আরও কোড উদাহরণ
— ডেভিডস্লভ

1
এই 'সিরিয়ালাইজ' ফাংশনটি কী? এটি রুবির অঙ্গ নয়। সবচেয়ে খারাপ বিষয়, হেক্সডিজাস্টে স্ট্রিংটি পাস করা মোটেও গতিশীল নয়! আপনি যে ডেটা দিন তা নির্বিশেষে এই পদ্ধতিটি একই হ্যাশটি ফিরিয়ে দেবে!
— Blixxy

2
দরকার require 'digest/sha1'ব্যবহার করার জন্য SHA1পদ্ধতি।
— গাস শর্টজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.