Todos os produtos
Search
Central de documentação

Object Storage Service:Verificação da consistência de MD5 no OSS

Última atualização: Sep 25, 2026

Os objetos no Object Storage Service (OSS) possuem valores ETag que identificam se os dados no servidor foram alterados. Contudo, esses valores ETag não correspondem necessariamente aos hashes MD5 dos objetos. Recomendamos que você não use os valores ETag; em vez disso, verifique a consistência dos dados por outros meios.

Para confirmar se um objeto enviado para o OSS é consistente com o arquivo local, inclua o valor do cabeçalho Content-MD5 na requisição de upload. Ao receber o objeto, o OSS compara o hash MD5 com o valor do cabeçalho Content-MD5. O OSS só conclui o upload do objeto quando o hash MD5 corresponde ao valor do cabeçalho Content-MD5, o que garante a consistência dos dados.

Esta seção usa o conteúdo de mensagem "0123456789" como exemplo para mostrar as formas correta e incorreta de calcular o valor Content-MD5.

  • Cálculo correto

    1. Primeiro, calcule o hash MD5, que é um array binário de 128 bits.

    2. Codifique o array binário em Base64, e não a string hexadecimal de 32 caracteres.

    O exemplo a seguir usa Python:

    >>> import base64,hashlib
    >>> hash = hashlib.md5()
    >>> hash.update("0123456789")   # In Python 3, change this to hash.update(b"0123456789").
    >>> base64.b64encode(hash.digest())
    'eB5e********************'

    O método hash.digest() retorna o array binário de 128 bits.

    >>> hash.digest()
    'x\x1e^$]i\xb5f\x97\x9b\x86\xe2\x8d#\xf2\xc7'
  • Exemplo de cálculo incorreto

    Nota

    Um erro comum é codificar diretamente a string hexadecimal de 32 caracteres em Base64.

    # The hash.hexdigest() method calculates the visible 32-character hexadecimal string.
    >>> hash.hexdigest()
    '781e****************************'
    # The result of Base64-encoding the incorrect MD5 hash.
    >>> base64.b64encode(hash.hexdigest())
    'Nzgx****************************************'
Nota

Alguns parâmetros de cabeçalho, como Content-MD5, devem ser incluídos no cálculo da assinatura. O cabeçalho e a assinatura devem corresponder. Caso contrário, o sistema retorna o erro SignatureDoesNotMatch. Para obter mais informações sobre os cabeçalhos a serem assinados, consulte Signature V1.