首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在python中不使用HMAC库来实现hmac?

在Python中,可以使用hashlib库来实现HMAC(Hash-based Message Authentication Code)功能,而不使用HMAC库。HMAC是一种基于哈希函数和密钥的消息认证码算法,用于验证消息的完整性和真实性。

下面是在Python中不使用HMAC库来实现HMAC的示例代码:

代码语言:txt
复制
import hashlib

def hmac(key, message, digestmod=hashlib.sha256):
    block_size = 64
    if len(key) > block_size:
        key = digestmod(key).digest()
    if len(key) < block_size:
        key = key + b'\x00' * (block_size - len(key))

    inner_key = bytes((x ^ 0x36) for x in key)
    outer_key = bytes((x ^ 0x5C) for x in key)

    inner_hash = digestmod(inner_key + message).digest()
    outer_hash = digestmod(outer_key + inner_hash).digest()

    return outer_hash

# 示例用法
key = b'secret_key'
message = b'hello world'
result = hmac(key, message)
print(result.hex())

在上述代码中,我们使用hashlib库中的sha256哈希函数作为默认的摘要算法,可以根据需要替换为其他哈希函数。首先,根据HMAC算法的规定,对密钥进行处理,如果密钥长度超过块大小,则对密钥进行哈希运算;如果密钥长度小于块大小,则在末尾填充0。然后,使用异或运算生成内部密钥和外部密钥。接下来,将内部密钥与消息进行哈希运算得到内部哈希值,再将外部密钥与内部哈希值进行哈希运算得到最终的HMAC值。

这样,我们就实现了在Python中不使用HMAC库来实现HMAC的功能。

注意:上述代码仅为示例,实际使用中应根据具体需求进行适当的调整和优化。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云对象存储(COS)、腾讯云数据库(TencentDB)等。你可以通过访问腾讯云官网(https://cloud.tencent.com/)获取更详细的产品介绍和文档信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python 数据加密解密以及相关操作

我们常听说的MD5算法生成的密文长度为128bits 二 python实现数据加密模块的介绍 python作为"胶水语言",大部分功能都是通过模块实现的....通过Python中提供的一些内置的模块或外部模块实现上面提到的各种加密算法。...可见HMAC算法是基于各种哈希算法的,只是它在运算过程还可以使用一个密钥增强安全性。 3....hmac Y 提供了hmac算法的实现,hamc也是单向加密算法,但是它支持设置一个额外的密钥(通常被称为'salt')提高安全性 random Y 该模块主要用于一些随机操作,获取一个随机数,从一个可迭代对象随机获取指定个数的元素...其中name参数用于指定哈希算法名称,'md5', 'sha1',区分大小写;data是一个可选参数,表示初始数据。

1.9K10

何在Python实现安全的密码存储与验证

在我们的日常生活,我们会使用许多网站和应用程序,而这些网站和应用程序通常要求我们提供密码保护我们的个人信息。然而,密码泄露事件时有发生,我们经常听到关于黑客攻击和数据泄露的新闻。...那么,如何在Python实现安全的密码存储与验证呢?本文将向你介绍一些实际的操作和技术。 1、 避免明文存储密码 首先,绝对不能以明文形式存储密码。...2、 使用哈希算法进行密码加密 哈希算法是一种单向加密算法,它将输入的密码转换成一串固定长度的字符,而且相同的输入始终产生相同的输出。在Python,我们可以使用hashlib模块实现哈希算法。...通过使用盐值,即使黑客获取到数据中加密后的密码也无法直接破解,因为他们不知道盐值是什么,加大了密码破解的难度。 在Python实现安全的密码存储与验证需要使用哈希算法,并避免明文存储密码。...此外,为了进一步增强密码的安全性,我们还可以结合其他技术,多重认证、密码策略等提高整体的安全性。 希望本文可以帮助你了解如何在Python实现安全的密码存储与验证。

1.3K20
  • 信息安全: MAC(消息认证码)算法,保护数据完整性和真实性的利器

    常见的 MAC 算法 HMAC(基于哈希的消息认证码): 使用哈希函数( SHA-256)和一个秘密密钥来生成 MAC 值。 常用于 HTTPS、IPsec 等协议。...CMAC(基于块密码的消息认证码): 使用块加密算法( AES)生成 MAC 值。 常用于无线通信和支付系统。...灵活性:HMAC 可以使用任何安全的哈希函数, SHA-1、SHA-256。 标准化:HMAC 被广泛采用,并在多个标准协议中使用 TLS、IPsec。...将消息分成若干块,对每个块进行加密,最后一块使用 K1 或 K2 进行加密。 CMAC 的特点 适合硬件实现:由于使用了块加密算法,CMAC 在硬件实现具有优势。...示例代码 以下是一个基于 Python 的 CMAC 示例代码(需要安装 pycryptodome ): python from Crypto.Hash import CMAC from Crypto.Cipher

    17610

    Electrum比特币钱包的Python代码分析

    如果你仍然未对Python语言的强大功能感到惊讶,那么在这部分我们将学习如何在python开发比特币地址或钱包。...变量1直到在我们的例子,它给出的使用Seed版本编码的HMAC-SHA512的单词列表以01开头。...所以在Linux你可以安装一个名为GTKHash的工具计算哈希值,所以让我演示一下,我们取种子,然后添加HMAC消息种子版本,该函数所定义: ?...以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。...tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型的核心概念,例如ABCI接口、默克尔树、多版本状态等,

    1.7K40

    动态令牌_创建安全令牌

    TOTP 的实现可以使用 HMAC-SHA-256 或者 HMAC-SHA-512 散列函数; TOTP 的要求: 客户端和服务器必须能够彼此知道或者推算出对方的 Unix Time; 客户端和服务器端必须共享一个密钥...; 对该算法 T 的实现必须大于 int32,因为它在 2038 年将超出上限; T0 和 X 的协商必须在之前的步骤中就已经做好了。...4、参考 4.1、python 的 otp 实现 https://pypi.python.org/pypi/pyotp https://github.com/pyotp/pyotp 4.2、基于 pyotp...//github.com/google/google-authenticator RFC6238TOTP基于java代码的实现。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.5K40

    PHPJWS签名: 什么是JWS签名如何在PHP实现JWS签名

    在现代网络应用程序,安全性是至关重要的。为了保证数据的安全,我们需要使用各种方法加密和验证数据。...在这篇文章,我们将介绍 JWS 签名的工作原理,并演示如何在 PHP 实现 JWS 签名。JWS 的工作原理JWS 的工作原理很简单:它使用 HMAC 或 RSA 算法对数据进行签名。...如何在 PHP 实现 JWS 签名为了在 PHP 实现 JWS 签名,我们可以使用一个名为 “lcobucci/jwt” 的 PHP 。...我们使用 HMAC-SHA256 算法生成签名,并将其存储在 JWS 对象。...在 PHP ,我们可以使用 “lcobucci/jwt” 实现 JWS 签名。通过学习 JWS 签名的工作原理和 PHP 实现方法,我们可以更好地保护我们的网络应用程序免受攻击。

    37820

    【爬虫知识】爬虫常见加密解密算法

    [爬虫常见加密解密算法] 简介 本文总结了在爬虫中常见的各种加密算法、编码算法的原理、在 JavaScript 中和 Python 的基本实现方法,遇到 JS 加密的时候可以快速还原加密过程,有的网站在加密的过程可能还经过了其他处理...加密解密 Cryptodome & Crypto 在 Python 中有很多算法是通过第三方 Cryptodome 或者 Crypto 实现的,Cryptodome 几乎是 Crypto 的替代品...latest/ Hashlib Python 的标准 hashlib 提供了常见的摘要算法, MD5,SHA、BLAKE2b、BLAKE2s 等。.../wiki/1016959663602400/1017686752491744 HMAC Python 的标准 hmacHMAC 算法提供了支持。...Python 实现 目前没有找到有第三方可以直接实现 Rabbit 算法,在 Python 实现可以参考:https://asecuritysite.com/encryption/rabbit2 RSA

    8.4K20

    Python加密服务(二)

    hmac — 加密消息签名和验证 目的:hmac 模块实现用于消息验证的密钥散列, RFC 2104 中所述。 HMAC 算法可用于验证在应用程序之间传递或存储在潜在易受攻击位置的信息的完整性。...然后,可以使用所得到的散列检查所发送或存储的消息以确定信任级别,而不发送秘密密钥。 签名消息 new() 函数创建一个用于计算消息签名的新对象。此示例使用默认的 MD5 散列算法。...$ python3 hmac_simple.py 4bcb287e284f8c21e87e14ba2dc40b16 可选的摘要类型 尽管默认的 hmac 算法是 MD5,但那不是最安全的方法。...$ python3 hmac_sha.py dcee20eeee9ef8a453453f510d9b6765921cf099 二进制摘要 前一个例子使用了 hexdigest() 方法生成可打印的摘要字符串...某些不太可能出现在实际数据的终结符序列可能更加合适。 然后示例程序往数据流写入了两个对象。第一个是使用正确的摘要值写入的。

    1.2K10

    python加密模块-hashlib模块

    模块 python还有一个hmac模块,它内部对我们创建key和内容 再进行处理 再加密!...使用HMAC时,消息通讯的双方,通过验证消息中加入的鉴别密钥K鉴别消息的真伪; 一般用于网络通信中消息加密,前提是双方先要约定好key,就像接头暗号一样,然后消息发送,用key把消息加密,接收方用key...算法表示: 算法公式 : HMAC(K,M)=H(K⊕opad∣H(K⊕ipad∣M))[1] H 代表所采用的HASH算法(SHA-256) K 代表认证密码 Ko 代表HASH算法的密文...(3) 客户端将收到的随机数提供给ePass,由ePass使用该随机数与存储在ePass的密钥进行HMAC-MD5运算并得到一个结果作为认证证据传给服务器(此为响应)。...(4) 与此同时,服务器也使用该随机数与存储在服务器数据的该客户密钥进行HMAC-MD5运算,如果服务器的运算结果与客户端传回的响应结果相同,则认为客户端是一个合法用户。

    1.2K10

    使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)

    ,该用还得用,虽然钉钉别的功能很鸡肋,但是机器人这个功能还是让人眼前一亮,属于比较极客的功能,它可以将第三方服务的信息聚合到钉钉群实现信息的自动化同步,例如:通过聚合Github、Gitlab等源码管理服务...不过关于钉钉机器人网上的一些攻略年代都比较久远,代码很多都基于python2,为了与时俱进,我们尝试用python3.7开发配置钉钉自定义机器人。    ...,我们选择加签的方式验证,在此说明一下,钉钉机器人的安全策略有三种,第一种是使用关键字,就是说你推送的消息里必须包含你创建机器人时定义的关键字,如果包含就推送不了消息,第二种就是使用加密签名,第三种是定义几个...查看官方文档:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq     发现文档居然还是python2.0的版本,好吧,我们自己翻译成3.0...(base64.b64encode(hmac_code)) # print(timestamp) # print(sign) import requests,json #导入依赖 headers

    88320

    『加密算法』| 自动化测试时基于Python常用的几个加密算法实现,你有用到吗?

    3 MD5直接加密MD5是一种常用的单向散列函数,是不可逆的,也就是说无法通过被加密后的结果确定加密前的内容;生成结果为固定的128位字节,一般为32位的十六进制字符串;这里会使用到hashlib,这个一般...python安装完都是有的,目录在:X:\Python37\Lib\hashlib.py直接加密实现: def test_md5(self): md = hashlib.md5(self.password.encode...,就是先设置盐;然后将原密码和盐使用join方式处理;实现过程为: def test_md5_03(self): s = self.password[:6] # 设置盐...160位字节,一般为40位的十六进制字符串;它也是在hashlib;用户名和密码拼接后使用SHA1加密,实现如下: def test_sha1(self): data = self.name...9 HMAC加密其实这个我自动化过程中用的不多,但是也是很常见的一个加密算法了;HMAC是一种基于加密hash函数和共享密钥的消息认证协议;需要用到hmac,目录在:X:\Python37\Lib\hmac.py

    41730

    Python 和 PHP 对腾讯云签名 hmac_sha256 算法实现

    开宗明义,米扑科技在使用腾讯云的API接口签名,按照官方示例开发PHP、Python的接口,经常会提示签名错误 123456789 {  "Response": {    "Error": {...和 PHP 对腾讯云签名 hmac_sha256 算法实现 经过多次尝试探究,发现原因有二: 1)腾讯云官方示例不严谨,没有urlencode() 或 urllib.quote() 编码导致提示签名错误...DescribeAddresses, DisassociateAddress, ReleaseAddresses, TransformAddress * @param string $params : 以 & 开头, ...总结之PHP和Python的对应关系 1) PHP 签名 1234567 // sha1$hmac_sha1_str = base64_encode(hash_hmac("sha1", $data, $...// HMAC-SHA256加密$signature = urlencode($hmac_sha256_str);                       // 编码URL 2)Python 签名

    2.5K30

    php生成数字签名的几种方法

    使用非对称加密算法,RSA 利用私钥对消息进行加密,然后发送者将消息和数字签名一起发送给接收者。接收者使用发送者的公钥验证数字签名是否有效。...在实际应用,您需要使用更多的安全措施保护私钥和签名,并防止中间人攻击、重放攻击等安全威胁。 静态签名 静态签名是指使用数字证书对软件包进行加密的方法,以验证其完整性和来源。...在PHP,可以使用Zend扩展提供的Zend Guard技术实现动态签名。 Zend Guard是一种商业级产品,用于对PHP源代码进行加密和编译。...Zend Guard运行时,并使用许可证密钥进行授权。...hash_hmac函数 hash_hmac函数是PHP自带的一个哈希加密函数,支持多种哈希算法,MD5、SHA-1、SHA-256等。

    47110

    2019年末逆向复习系列之知乎登录formdata加密逆向破解

    知乎作为国内最大的、最优质的的问答平台之一,它的高质量回答是作为自然语言处理的最好的语料来源之一,不过想要获取更全的知乎回答数据必须要登录,涉及登录的话必然少不了做自动化登录的处理,不过知乎的登录post请求的...因此我们需要去寻找它的加密逻辑,本篇文章就是讲解如何寻找破解formdata的加密,实现自动化登录知乎。 ?...Python的简单实现 import hmac from hashlib import sha1 def hash_hmac(key, code, sha1): hmac_code = hmac.new...具体的思路如图所示,使用sha-1作为hash函数,key是写死的,使用其他四个参数值作为message进行加密,整理思路可以用python表达出来 def _get_signature(timestamp..."x-xsrftoken": _get_xsrf() 这个参数是跟跨域相关,是为了防Xsrf跨站的Token认证,访问首页时从Response Headers的Set-Cookie字段可以找到 ?

    1.3K42

    python钉钉机器人自定义回复

    这一块儿就需要自己对接钉钉API实现了。比如这种问答式的 明白这样的需求后就去 官网 找文档去了。 其实官网文档说的很清楚了。没啥需要补充的。...所以在go和Python之间选择了Python 使用Flash启动 主要逻辑代码 from flask import Flask # http://flask.pocoo.org/docs/0.12...(也就是你设置ip时默认的ip),在外网上访问则需要使用你本机的ip,不要使用0.0.0.0 也可以这样的方式启动 if __name__ == "__main__": server_socket...完整的代码关注公众号 罗尔街 即可获取 架构图 流程 用户通过django admin添加消息配置,即关键字与回复内容。 用户通过钉钉企业内部群@机器人 + 关键字。...一些可能会遇到的坑 在使用Python的Flask时、报错 “POST / HTTP/1.1” 405 - 可能是没有允许请求本身的方法 解决方法: 添加method @app.route(‘/‘,

    2.3K31
    领券