ruby技巧001:求md5散列

    ruby核心库中未包含md5之类的功能,不过在其标准库digest中可以方便的使用该功能:

= Digest

(from ruby core)
------------------------------------------------------------------------------

This module provides a framework for message digest libraries.

You may want to look at OpenSSL::Digest as it supports more algorithms.

A cryptographic hash function is a procedure that takes data and returns a
fixed bit string: the hash value, also known as digest. Hash
functions are also called one-way functions, it is easy to compute a digest
from a message, but it is infeasible to generate a message from a digest.

== Examples

  require 'digest'

  # Compute a complete digest
  Digest::SHA256.digest 'message'       #=> "\xABS\n\x13\xE4Y..."

  sha256 = Digest::SHA256.new
  sha256.digest 'message'               #=> "\xABS\n\x13\xE4Y..."

  # Other encoding formats
  Digest::SHA256.hexdigest 'message'    #=> "ab530a13e459..."
  Digest::SHA256.base64digest 'message' #=> "q1MKE+RZFJgr..."

  # Compute digest by chunks
  md5 = Digest::MD5.new
  md5.update 'message1'
  md5 << 'message2'                     # << is an alias for update

  md5.hexdigest                         #=> "94af09c09bb9..."

  # Compute digest for a file
  sha256 = Digest::SHA256.file 'testfile'
  sha256.hexdigest

Additionally digests can be encoded in "bubble babble" format as a sequence of
consonants and vowels which is more recognizable and comparable than a
hexadecimal digest.

  require 'digest/bubblebabble'

  Digest::SHA256.bubblebabble 'message' #=> "xopoh-fedac-fenyh-..."

See the bubble babble specification at
http://web.mit.edu/kenta/www/one/bubblebabble/spec/jrtrjwzi/draft-huima-01.txt
.

== Digest algorithms

Different digest algorithms (or hash functions) are available:

HMAC:
  See FIPS PUB 198 The Keyed-Hash Message Authentication Code (HMAC).

RIPEMD-160:
  As Digest::RMD160. See
  http://homes.esat.kuleuven.be/~bosselae/ripemd160.html.

SHA1:
  See FIPS 180 Secure Hash Standard.

SHA2 family:
  See FIPS 180 Secure Hash Standard which defines the following algorithms:
  * SHA512
  * SHA384
  * SHA256

The latest versions of the FIPS publications can be found here:
http://csrc.nist.gov/publications/PubsFIPS.html.

------------------------------------------------------------------------------
= Class methods:

  bubblebabble
  hexencode

代码实例如下:

irb(main):006:0> h=Digest::MD5.new
=> #<Digest::MD5: d41d8cd98f00b204e9800998ecf8427e>
irb(main):007:0> h.methods
=> [:reset, :update, :<<, :digest_length, :block_length, :==, :inspect, :new, :digest, :digest!, :hexdigest, :hexdigest!,
:to_s, :length, :size, :file, :base64digest, :base64digest!, :nil?, :===, :=~, :!~, :eql?, :hash, :<=>, :class, :singleton_class,
 :clone, :dup, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :freeze, :frozen?, :methods, :singleton_methods,
 :protected_methods, :private_methods, :public_methods, :instance_variables, :instance_variable_get, :instance_variable_set,
:instance_variable_defined?, :remove_instance_variable, :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?,
:extend, :display, :method, :public_method, :singleton_method, :define_singleton_method, :object_id, :to_enum, :enum_for, :equal?,
:!, :!=, :instance_eval, :instance_exec, :__send__, :__id__]
irb(main):008:0> h<<"aaa"
=> #<Digest::MD5: 47bce5c74f589f4867dbd57e9ca9f808>
irb(main):009:0> h.hexdigest
=> "47bce5c74f589f4867dbd57e9ca9f808"
irb(main):010:0> h<<"aaa"
=> #<Digest::MD5: 0b4e7a0e5fe84ad35fb5f95b9ceeac79>
irb(main):011:0> h.hexdigest
=> "0b4e7a0e5fe84ad35fb5f95b9ceeac79"
时间: 2024-11-08 18:15:31

ruby技巧001:求md5散列的相关文章

《解读NoSQL》——2.4 使用一致性散列算法维护当前的缓存

2.4 使用一致性散列算法维护当前的缓存 我们已经知道了将经常使用的数据保存在RAM缓存中的重要性,以及如何通过减少非必要的磁盘访问来提升数据库性能.NoSQL系统将基于这个概念进行深入探讨,并采用了一致性散列(consistent hashing)的算法使访问最频繁的数据保存在缓存中. 在评估NoSQL系统如何工作时,一致性散列算法是一种有效的通用流程.一致性散列算法能很快判断出一个新的查询或者文档是否和缓存中的某一个对象是相同的.了解这些将有助于减少不必要的磁盘访问并且使数据库保持高速运行的

JS+CSS3实现超炫的散列画廊特效_javascript技巧

下面来介绍下我按照网上的视频讲解实现的照片墙效果图. 最终实现的效果包括如下:  •当点击某张图片时,该图片移到中间区域并放大显示.当图片被点击时正反面切换显示. •某张图片被点击时,所有的图片的位置被随机重排 •某个控制按钮被点击时,对应的图片显示到正中间,控制按钮进行相应的样式切换.当连续点击某个控制按钮时,图片伴随着按钮的点击进行正反面切换  对整个效果进行VCD分解,如下图:  按照计算机能理解的方式来分解案例.  •View视觉 : HTML + css 基本界面模板 •Control

求C# SHA-256的HMAC散列算法

问题描述 求C#SHA-256的HMAC散列算法,贴代码!!!! 解决方案 解决方案二:byte[]key=...;byte[]content=...;using(HMAChmac=newHMACSHA256(key)){byte[]hash=hmac.ComputeHash(content);}

java加密算法--MD5加密和哈希散列带秘钥加密算法源码_java

java加密算法--MD5加密和哈希散列带秘钥加密算法源码              最近学习加密算法的知识,利用MD5 加密,百度一下网上资料很多,不是很详细,这里就整理下如何实现用MD5加密和 哈希散列带秘钥加密算法,大家可以看下. 实现代码: package com.ompa.common.utils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java

谈表达式树的缓存(5):引入散列值

到目前为止,我们已经实现了三种缓存方式:首先我们设法构建唯一字符串,但是由于它的代价较高 ,于是我们使用了前缀树进行存储:又由于前缀树在实际操作中所花的时间和空间都有不令人满意之处, 我们又引入了二叉搜索树.那么二叉搜索树又有什么缺点呢?其实前文已经谈到过了,那就是从理论上来 说,它的时间复杂度相对前两个要高,在最坏情况下将会出现O(m * log(n))的时间复杂度--每次比较 两个前缀树需要耗费O(m),共比较O(log(n))次. 很显然,与最理想的时间复杂度O(m)相比,其差距就在于n,

Android数据加密之SHA安全散列算法_Android

前言: 对于SHA安全散列算法,以前没怎么使用过,仅仅是停留在听说过的阶段,今天在看图片缓存框架Glide源码时发现其缓存的Key采用的不是MD5加密算法,而是SHA-256加密算法,这才勾起了我的好奇心,所以趁着晚上没啥事,来学习一下. 其他几种加密方式:  •Android数据加密之Rsa加密  •Android数据加密之Aes加密  •Android数据加密之Des加密  •Android数据加密之MD5加密  •Android数据加密之Base64编码算法 SHA加密算法      SH

ruby-Ruby 基础的散列输出中文问题

问题描述 Ruby 基础的散列输出中文问题 例如wday = {sunday"" => ""星期天""monday"" => ""星期一""tuesday"" => ""星期二""} p wday[""sunday""]puts wday[""sund

.Net加密与解密——散列运算

  一,散列运算的特点             1,散列运算是不可逆的,可以将散列运算理解为单向的加密: 2,任何两个不相同的文件,哪怕只有一个字节的细微差别,得到的摘要都是完全不同的.这个特点的意义在于,可以用来判断消息是否被篡改,即解决完整性的问题. 3,无论原始消息的大小如何,运算得出的摘要的信息是固定长度,摘要的长度根据散列算法的不同而不同. 二,利用散列运算判断消息是否被篡改的流程  1,发送放对消息进行散列运算,得到消息摘要,发送消息和摘要,并说明获得摘要所使用的散列算法. 2,接收

数据加密、散列和数据签名

问题描述 什么是数据散列?它有什么作用?和数据加密有什么关系吗? 解决方案 解决方案二:google:散列(哈希hash)md5加密