ฉันจะสร้างแฮช SHA1 เป็นทับทิมได้อย่างไร


คำตอบ:


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

41
นอกจากนี้ยังมีDigest::SHA1.base64digest 'foo'
andrewrk

13
FYI: Digestเป็นส่วนหนึ่งของ Ruby Standard Library ( ruby-doc.org/stdlib-1.9.2/libdoc/digest/rdoc/index.html ) มันรวมถึงการใช้งานสำหรับ SHA1, SHA2, MD5 และอัลกอริทึมแฮชอื่น ๆ
jwfearn

8

สำหรับแฮชที่เข้ารหัส Base64 เพื่อตรวจสอบลายเซ็น Oauth ฉันใช้

require 'base64'
require 'hmac-sha1'

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

6
FYI ความต้องการ 'hmac-sha1' เป็นไปตามอัญมณี 'ruby-hmac'
andrewrk


-25

โดยที่ 'ซีเรียลไลซ์' คือฟังก์ชั่นผู้ใช้บางอย่างที่กำหนดไว้ที่อื่น

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

นี่ไม่ใช่คำตอบที่ซ้ำกันของ @ devstopfix ใช่ไหม
Andrew Grimm

แม้ว่ามันจะเป็นรหัสทับทิมที่น่าเกลียดที่จะแนะนำและไม่แม้แต่จะกล่าวถึงว่ามันต้องการ `ต้องการ \ 'digest / sha1 \' '-1
Rixius

16
อย่าลืมว่า stackoverflow มีผู้เข้าชมจำนวนมากเกินไปทำไมคุณไม่แสดงวิธีที่ถูกต้องให้เรา นักวิจารณ์น้อยลงตัวอย่างโค้ดเพิ่มเติม
Davidslv

1
ฟังก์ชัน 'ทำให้เป็นอันดับ' นี้คืออะไร นั่นไม่ใช่ส่วนหนึ่งของทับทิม ยิ่งกว่านั้นสตริงที่ส่งผ่านไปยัง hexdigest นั้นยังไม่ไดนามิคเลย! วิธีนี้จะคืนค่าแฮชเดียวกันโดยไม่คำนึงถึงข้อมูลที่คุณให้!
Blixxy

2
จำเป็นต้องrequire 'digest/sha1'ใช้SHA1วิธีการ
Gus Shortz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.