将基于groovy代码的HmacSHA256生成Python

2024-06-01 06:27:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一些groovy中的代码,并被要求将其转换为Python

def generateHmac(String data){
        String secretKey = '123445667777'
        byte[] digest

        Mac mac = Mac.getInstance("HmacSHA256")
        SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(), "HmacSHA256")
        mac.init(secretKeySpec)
        digest = mac.doFinal(data.getBytes())
        
        //we use hex encoding for our tokens.
        String token = digest.encodeHex().toString()

        return token
    }

我尝试过很多次,但都失败了:

def generateHmac(String data):
    data = "my_url"
    secret_key = b"123445667777"

    h = SHA256.new()
    h.update(secret_key)
    h.update(b"data")
    print(h.hexdigest())

Tags: tokennewdatasecretstringmacdefdigest
1条回答
网友
1楼 · 发布于 2024-06-01 06:27:39

hmac与摘要不是一回事。HmacSHA26使用SHA256,它与SHA256不同。您需要使用hmac library来获得正确的结果

hmac.digest(secretKey, message, "Sha256")

应该给您想要的,其中secretKeymessage是字节

上述内容相当于较长的形式:

hmac.new(secretKey, message, "Sha256").digest()

但是一旦你有了hmac对象,你就可以用其他的东西,比如update()和更多的文本或者hexdigest()来获得一个类似文本的摘要

相关问题 更多 >