当前位置:首页 > 开发 > 编程语言 > Ruby > 正文

Ruby中HmacMD5加密

发表于: 2014-07-28   作者:hotsunshine   来源:转载   浏览次数:
摘要: 跟Java方面做接口,中间有一个HmacMD5的加密算法需要我们来实现 so,so结果如下 gem install ruby-hmac require 'hmac-md5' HMAC::MD5.new("test_key").update("test_string").hexdigest.upcase() ruby的输出
跟Java方面做接口,中间有一个HmacMD5的加密算法需要我们来实现
so,so结果如下

gem install ruby-hmac

require 'hmac-md5'
HMAC::MD5.new("test_key").update("test_string").hexdigest.upcase()



ruby的输出结果

引用

=> "3FD9B6B4901DAF25BFB9DAA0718B3698"


package com.study;


import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;


public class HmacMD5 {

    private static byte[] encryptHMAC(String data, String secret) {
        byte[] bytes = null;
            SecretKey secretKey;
            try {
                secretKey = new SecretKeySpec(secret.getBytes(Constants.CHARSET_UTF8), "HmacMD5");
                Mac mac = Mac.getInstance(secretKey.getAlgorithm());
                mac.init(secretKey);
                bytes = mac.doFinal(data.getBytes(Constants.CHARSET_UTF8));
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchAlgorithmException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InvalidKeyException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        return bytes;
    }

    private static String byte2hex(byte[] bytes) {
        StringBuilder sign = new StringBuilder();
        for (int i = 0; i < bytes.length; i++) {
            String hex = Integer.toHexString(bytes[i] & 0xFF);
            if (hex.length() == 1) {
                sign.append("0");
            }
            sign.append(hex.toUpperCase());
        }
        return sign.toString();
    }
    

    public abstract class Constants
    {
      public static final String CHARSET_UTF8 = "UTF-8";
    }


    public static void main(String[] args) throws UnsupportedEncodingException,
            IOException {
        String str = "test_string";
        byte[] bytes = encryptHMAC(str,"test_key");
        String data = byte2hex(bytes);
        System.out.println(data);
    }
}



java的输出结果
引用

3FD9B6B4901DAF25BFB9DAA0718B3698


补充一下:

如果不用secret key直接MD5的话,调用下面ruby代码即可。
Digest::MD5.hexdigest('test_string').upcase
 => "3474851A3410906697EC77337DF7AAE4" 

MD5方面的库还是比较多的,Openssl里面也有

Ruby中HmacMD5加密

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
看看如何调试Ruby的性能问题 李哲 — APRIL 08, 2015 Ruby内置的profiler 内置的profiler实现的很简
看看如何调试Ruby的性能问题 Ruby内置的profiler 内置的profiler实现的很简单,在ruby2.2中只有150
记录 一、java中的数据加密 Java提供的安全模型和API 加密基础知识 使用JAVA实现加密 二、Java提供
开发环境 Ruby: Ruby1.9.1 Rails: Rails2.3.5 Mysql:Mysql5.0.9 Driver:mysql-2.8.1-x86-mingw32.ge
原文:Ruby on Rails Rake Tutorial (aka. How rake turned me into an alcoholic) 引言:作为一个r
原文:Ruby on Rails Rake Tutorial (aka. How rake turned me into an alcoholic) 引言:作为一个r
grid虽然简单,但是本人想通过grid,说些其它的问题。tk的资料本来就比较少,而ruby tk的资料当然就
简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程。在SQL Server中,加密并不能替代其他的
简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程。在SQL Server中,加密并不能替代其他的
简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程。在SQL Server中,加密并不能替代其他的
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号