首页 > 编程语言 >python hmac_sha256 转为 java

python hmac_sha256 转为 java

时间:2023-05-24 16:24:49浏览次数:38  
标签:__ hasher java python sign import message sha256 hmac

Java hmac sha256
package com.example;

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;

public class Main {

    public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException {
        String secretKey = "BCDSGS_3ccfa7d4c44c2b2f48df1062dec79a9c";
        String message = "POST\n" + "/restapi/prod/IC33000020221014000001/webapi/govmessage/message/send\n" + "\n" + "BCDSGA_c52c72dcfbddc8f48ffea57974d959c3\n" + "Wed, 24 May 2023 07:16:48 GMT\n";
        Mac hasher = Mac.getInstance("HmacSHA256");
        hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));
        byte[] hash = hasher.doFinal(message.getBytes());
        DatatypeConverter.printHexBinary(hash);
        String sign = DatatypeConverter.printBase64Binary(hash);
        System.out.printf(sign);

    }

}

python

import hmac
import hashlib
import base64

if __name__ == '__main__':
    try:
        secret_key = "BCDSGS_3ccfa7d4c44c2b2f48df1062dec79a9c";
        message = "POST\n" + "/restapi/prod/IC33000020221014000001/webapi/govmessage/message/send\n" + "\n" + "BCDSGA_c52c72dcfbddc8f48ffea57974d959c3\n" + "Wed, 24 May 2023 07:16:48 GMT\n"
        hasher = hmac.new(bytes(secret_key, 'utf-8'), bytes(message, 'utf-8'), hashlib.sha256)
        sign_hex = hasher.hexdigest()
        sign_base64 = base64.b64encode(hasher.digest()).decode()
        print(sign_base64)
    except Exception as e:
        print(e)

标签:__,hasher,java,python,sign,import,message,sha256,hmac
From: https://www.cnblogs.com/guanchaoguo/p/17428638.html

相关文章

  • java 多线程:synchronized 详解
    总结一个锁对象只能同时被一个线程持有,分为对象锁和类锁对象锁:每个对象都可以作为锁(几个不同的对象就是几个锁)类锁:字节码对象也能作为锁(全局唯一)同步方法不能自定义锁,只能是默认的锁(非静态:this,静态:class);同步代码块默认的锁和方法一样(非静态:this,静态:class,普通方法里面可以......
  • Python文件读写、StringIO和BytesIO
    StringIO和BytesIO很多时候,数据读写不一定是文件,也可以在内存中读写。StringIO就是在内存中读写str。要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可:>>>fromioimportStringIO>>>f=StringIO()>>>f.write('hello')5>>>f.write('')......
  • centos7安装Python3.9
      yumremovepython-3*先卸载所有之前装的python-3。yum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgccmakeyum-yinstallepel-releaseyum-yinstallpython-pipwgethttps://www.python.org/ftp/python/3.......
  • Python从0到1丨了解图像形态学运算中腐蚀和膨胀
    摘要:这篇文章将详细讲解图像形态学知识,主要介绍图像腐蚀处理和膨胀处理。本文分享自华为云社区《[Python从零到壹]四十七.图像增强及运算篇之腐蚀和膨胀详解》,作者:eastmount。一.形态学理论知识数学形态学的应用可以简化图像数据,保持它们基本的形状特征,并出去不相干的结构。......
  • Java开启异步的两种方式
    二、Java开启异步的两种方式1、注解开启:@Async1.1、配置异步的线程池必须配置异步线程池,否则异步不会生效。@EnableAsync注解:指定异步线程池。不指定默认使用:SimpleAsyncTaskExecutor线程池SimpleAsyncTaskExecutor是一个最简单的线程池,它没有任何的线程相关参数配置,它会为......
  • 用命令行工具运行java文件
     1、若java文件有packagepackagequitStu;publicclassMain{publicstaticvoidmain(String[]args){for(Stringstr:args){if(str.equals("11")){System.out.println("-v1.0");brea......
  • Java如何生成随机数?要不要了解一下!
    前言我们在学习Java基础时就知道可以生成随机数,可以为我们枯燥的学习增加那么一丢丢的乐趣。本文就来介绍Java随机数。一、Random类介绍在Java中使用Random工具类来生成随机数,该类在java.util包下,在JDK1.0版本就存在了。Random单词本身就是随机、随意、任意的意思......
  • Java配置线程池
    一、Java配置线程池1、线程池分类、其他1.1、分类IO密集型和CPU密集型任务的特点不同,因此针对不同类型的任务,选择不同类型的线程池可以获得更好的性能表现。1.1.IO密集型任务​ IO密集型任务的特点是需要频繁读写磁盘、网络或者其他IO资源,执行时间长,CPU占用率较低。对......
  • Python输出带颜色字体
    规则“\033[”+标志符+m字符串控制着后面字符串的显示格式例子print("\033[4m这是一段文字") #下划线(4) print("\033[0;31m这是一段文字") #红字(31)print("\033[1;32;43m这是一段文字") #加粗(1);绿字(32);黄底(43)备注标志符用分号隔开,无顺序要求如果想要后面的文字......
  • python嵌入HTTP代理代码示例
    以下是使用Python嵌入HTTP代理的示例代码:```pythonimporturllib.request#设置代理服务器地址和端口号proxy_handler=urllib.request.ProxyHandler({'http':'http://proxy.example.com:8080'})#创建opener对象opener=urllib.request.build_opener(proxy_handler)#使用opene......