আমি রুবিতে কীভাবে একটি 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.