`

Ruby中HmacMD5加密

    博客分类:
  • 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里面也有
分享到:
评论
1 楼 qgm168 2018-06-23  

相关推荐

    HmacMd5Helper加密辅助类

    对HmacMd5加密的一些封装,方便在开发过程中直接使用的静态工厂方法类

    Python实现的HMacMD5加密算法示例

    主要介绍了Python实现的HMacMD5加密算法,简单说明了HMAC-MD5加密算法的概念、原理并结合实例形式分析了Python实现HMAC-MD5加密算法的相关操作技巧,,末尾还附带了Java实现HMAC-MD5加密算法的示例,需要的朋友可以参考...

    基于.net的hmacMD5,MD5加密工具

    标题中的“基于.net的hmacMD5,MD5加密工具”指的是一个专为.NET平台设计的程序或库,它集成了HMAC-MD5和MD5算法,用于数据的安全处理。HMAC-MD5通过将MD5哈希函数与密钥相结合,提高了安全性能,常用于网络通信中的...

    c++ hmac_md5加密

    文件`hmacMd5.txt`可能包含了一些示例用法、测试用例或者进一步解释HMAC-MD5加密的详细步骤。在使用这段代码时,需要确保已经安装了OpenSSL库,并链接相应的动态或静态库。同时,要注意对密钥和消息的管理,确保密钥...

    Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法

    Kettle中使用JavaScript调用jar包对文件内容进行MD5加密.本文主要知识点: JavaScript调用jar包对文件内容进行MD5加密,返回加密md5值 Kettle实现对文件内容的加密,返回加密md5值 2.使用方法 1)下载jar包 ...

    Javascript实现MD5加密算法

    在JavaScript中实现MD5加密算法是常见的需求,特别是在前端开发中用于数据的安全传输或者存储。 MD5的主要特点包括: 1. **不可逆性**:MD5哈希结果不能通过哈希值反推出原始信息,因此常用于验证数据完整性和身份...

    hmac_md5加密源码

    简单几行代码实现HMAC_MD5加密,写好了函数可以直接使用。

    hmacmd5.zip

    《HMAC-MD5加密算法在C语言中的实现详解》 HMAC(Hash-based Message Authentication Code,基于哈希的消息认证码)是一种用于消息完整性验证和身份认证的密码学技术,它结合了散列函数(如MD5)和密钥来产生一个...

    ASP版hmac和md5加密函数,支持中文,带unicode和utf8转码

    上次曾经传过一个易宝、...调用方法:HmacMd5(text,key)-加密内容支持中文,但key最好用非中文的。 md5(text)-简版,ASP_MD5(text)-标准版 支付宝一定要用ASP_MD5,财付通的加密内容一般没中文的,所以两者均可。

    hmacmd5c++.zip

    在这个场景中,我们关注的是一个使用C++实现的HMACMD5库,特别适用于连接阿里云服务。 首先,HMAC是一种基于哈希函数的安全协议,它使用密钥来生成一个固定长度的摘要,以验证消息是否被篡改。HMAC利用密钥对消息...

    Esp8266 细聊HmacMD5的加密方法带来的安全性,并实践在esp8266上,最大保障传输的过程的信息的安全性

    Esp8266 细聊HmacMD5的加密方法带来的安全性,并实践在esp8266上,最大保障传输的过程的信息的安全性。 博文对应地址:https://blog.csdn.net/xh870189248/article/details/83751704

    MD5和HMACMD5 C语言实现,亲测有效

    在C语言中实现MD5,需要理解其算法流程,包括初始化、更新、最终化等步骤。 HMAC(Hash-based Message Authentication Code)是基于密钥的哈希消息认证码,结合了密钥和哈希函数来提供数据完整性和源认证。HMAC-MD5...

    HMACMD5-C语言.zip

    Hmacmd5加密算法,C语言实现,适用连接阿里云的物联网平台做加密处理

    golang的md5和hmacMd5的详细代码,开箱即用,保证可运行成功

    1、适合新手使用,详细的代码和举例 2、hmacMd5的方法网上资料少

    Qt加密算法md5,sha256,sha1

    ## 说明 此程序可以进行sha1,sha256,md5的加密 在input输入框内输入所需加密的数据,然后点击"encryption"按扭即可实现加密; 默认input输入框内的数据为123456

    hmac.dll (HMACSHA1、HMACSHA256、HMACMD5)

    HMACSHA1、HMACSHA256和HMACMD5是使用不同哈希算法实现的HMAC变体: 1. HMAC-SHA1:使用SHA-1哈希算法。SHA-1虽然在安全性上较弱,但速度相对较快,曾经被广泛使用。然而,由于其存在碰撞攻击的风险,现在已被更...

    asp-hmac-md5加密方法-md5函数文件-支持中文.rar_asp_asp md5_asp-md5-hmac_md5_中

    ASP-HMAC-MD5加密方法是ASP(Active Server Pages)中实现的一种安全的哈希算法,主要用于数据的完整性校验和认证。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,能将任意长度的信息转化为固定长度...

    HMAC-MD5加密C++源码

    HMACMD5 是从 MD5 哈希函数构造的一种键控哈希算法,被用作基于哈希的消息验证代码 (HMAC)。此 HMAC 进程将密钥与消息数据混合,使用哈希函数对混合结果进行哈希计算,将所得哈希值与该密钥混合,然后再次应用哈希...

    HmacMD5.zip

    在C#环境中实现HMAC-MD5,首先需要创建一个`System.Security.Cryptography.HMACMD5`类的实例。由于题目提到不依赖MD5相关的DLL,我们可以手动实现MD5算法,或者使用.NET Framework内置的MD5类。下面是一个简单的HMAC...

Global site tag (gtag.js) - Google Analytics