<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Assinatura on Python Brasil — Aprenda Python em Português</title>
    <link>https://python.dev.br/tags/assinatura/</link>
    <description>Recent content in Assinatura on Python Brasil — Aprenda Python em Português</description>
    <generator>Hugo</generator>
    <language>pt-br</language>
    <lastBuildDate>Wed, 12 Aug 2026 01:15:37 +0000</lastBuildDate>
    <atom:link href="https://python.dev.br/tags/assinatura/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>hmac em Python: assinar webhooks e mensagens com chave secreta</title>
      <link>https://python.dev.br/blog/python-hmac-assinatura-webhooks/</link>
      <pubDate>Wed, 12 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://python.dev.br/blog/python-hmac-assinatura-webhooks/</guid>
      <description>&lt;p&gt;O módulo &lt;code&gt;hmac&lt;/code&gt; é a peça da biblioteca padrão para &lt;strong&gt;autenticar mensagens com uma chave secreta em Python&lt;/strong&gt;. Em português claro: ele responde se este corpo de webhook (ou header de API) ainda é o mesmo que o emissor assinou — e se o emissor conhece o segredo compartilhado.&lt;/p&gt;&#xA;&lt;p&gt;A recomendação direta é: assine com &lt;code&gt;hmac.new(chave, mensagem, hashlib.sha256)&lt;/code&gt;; envie o digest em hex ou Base64 conforme o contrato da API; valide sempre com &lt;code&gt;hmac.compare_digest()&lt;/code&gt;; trate chave e corpo como &lt;code&gt;bytes&lt;/code&gt;; e nunca confunda HMAC com criptografia. Para checksums sem chave, use &lt;a href=&#34;https://python.dev.br/blog/python-hashlib-checksums-integridade/&#34;&gt;&lt;code&gt;hashlib&lt;/code&gt;&lt;/a&gt;; para tokens aleatórios, use &lt;a href=&#34;https://python.dev.br/blog/python-secrets-tokens-senhas-seguros/&#34;&gt;&lt;code&gt;secrets&lt;/code&gt;&lt;/a&gt;; para transportar o digest em texto, use &lt;a href=&#34;https://python.dev.br/blog/python-base64-codificar-decodificar/&#34;&gt;&lt;code&gt;base64&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
