O EdgeScript oferece funções de cifra integradas para criptografia, descriptografia e cálculo de resumo na borda da CDN. Use essas funções em seus scripts de borda para assinar requisições, verificar integridade ou proteger dados sensíveis.
Visão geral das funções
|
Função |
Categoria |
Descrição |
|
|
AES |
Cria um objeto AES para criptografia e descriptografia |
|
|
AES |
Criptografa texto simples com AES |
|
|
AES |
Descriptografa texto cifrado com AES |
|
|
Resumo |
Calcula um resumo SHA-1 (binário) |
|
|
Resumo |
Calcula um resumo SHA-2 (binário) |
|
|
Resumo |
Calcula um resumo HMAC (binário) |
|
|
Resumo |
Calcula um resumo HMAC-SHA-1 (binário) |
|
|
Resumo |
Calcula um resumo MD5 (hexadecimal) |
|
|
Resumo |
Calcula um resumo MD5 (binário) |
aes_new
Cria um objeto Advanced Encryption Standard (AES) para operações subsequentes de criptografia e descriptografia. Passe o objeto retornado para aes_enc() para criptografar ou para aes_dec() para descriptografar.
Sintaxe
aes_new(config)
Parâmetros
config é um dicionário com os seguintes campos:
|
Campo |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
Chave de criptografia |
|
|
integer |
Sim |
Comprimento da chave. Valores válidos: |
|
|
string |
Sim |
Modo de cifra. Valores válidos: |
|
|
string |
Não |
Valor de salt |
|
|
string |
Não |
Vetor de inicialização |
Valor de retorno
Retorna um objeto AES (tipo dicionário) em caso de sucesso ou false em caso de falha.
Exemplo
O exemplo a seguir cria objetos AES em três modos de cifra (ECB-128, CBC-256 e OFB-256), criptografa e descriptografa uma string de texto simples para verificar a integridade do ciclo completo.
aes_conf = []
plaintext = ''
if and($http_mode, eq($http_mode, 'ecb-128')) {
set(aes_conf, 'key', 'ab8bfd9f-a1af-4ba2-bbb0-1ee520e3d8bc')
set(aes_conf, 'salt', '1234567890')
set(aes_conf, 'cipher_len', 128)
set(aes_conf, 'cipher_mode', 'ecb')
plaintext = 'hello aes ecb-128'
}
if and($http_mode, eq($http_mode, 'cbc-256')) {
set(aes_conf, 'key', '146ebcc8-392b-4b3a-a720-e7356f62')
set(aes_conf, 'cipher_len', 256)
set(aes_conf, 'cipher_mode', 'cbc')
set(aes_conf, 'iv', '0123456789abcdef')
plaintext = 'hello aes cbc-256'
}
if and($http_mode, eq($http_mode, 'ofb-256')) {
set(aes_conf, 'key', '146ebcc8-392b-4b3a-a720-e7356f62')
set(aes_conf, 'cipher_len', 256)
set(aes_conf, 'cipher_mode', 'ofb')
set(aes_conf, 'iv', tochar(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0))
plaintext = 'hello aes ofb-256'
}
aes_obj = aes_new(aes_conf)
if not(aes_obj) {
say(concat('aes obj failed'))
exit(400)
}
ciphertext = aes_enc(aes_obj, plaintext)
plaintext_reverse = aes_dec(aes_obj, ciphertext)
say(concat('plain: ', plaintext))
say(concat('cipher: ', tohex(ciphertext)))
say(concat('plain_reverse: ', plaintext_reverse))
if ne(plaintext, plaintext_reverse) {
say('plaintext ~= plaintext_reverse')
exit(400)
}
aes_enc
Criptografa uma string de texto simples com AES.
Sintaxe
aes_enc(o, s)
Parâmetros
|
Parâmetro |
Descrição |
|
|
Objeto AES retornado por |
|
|
Texto simples a criptografar |
Valor de retorno
Retorna o texto cifrado resultante da criptografia do conteúdo especificado pelo parâmetro s.
Exemplo
Consulte o exemplo de aes_new para ver um fluxo completo de criptografia e descriptografia.
aes_dec
Descriptografa uma string de texto cifrado com AES.
Sintaxe
aes_dec(o, s)
Parâmetros
|
Parâmetro |
Descrição |
|
|
Objeto AES retornado por |
|
|
Texto cifrado a descriptografar |
Valor de retorno
Retorna o texto simples resultante da descriptografia do conteúdo especificado pelo parâmetro s.
Exemplo
Consulte o exemplo de aes_new para ver um fluxo completo de criptografia e descriptografia.
sha1
Calcula um resumo SHA-1.
Sintaxe
sha1(s)
Parâmetros
|
Parâmetro |
Descrição |
|
|
String de entrada |
Valor de retorno
Retorna o resumo SHA-1 em formato binário. Use tohex() para converter o resultado em uma string hexadecimal.
Exemplo
digest = sha1('hello sha')
say(concat('sha1:', tohex(digest)))
Saída:
sha1:853789bc783a6b573858b6cc9f913afe82962956
sha2
Calcula um resumo SHA-2.
Sintaxe
sha2(s, l)
Parâmetros
|
Parâmetro |
Descrição |
|
|
String de entrada |
|
|
Comprimento do resumo em bits. Valores válidos: |
Valor de retorno
Retorna o resumo SHA-2 em formato binário. Use tohex() para converter o resultado em uma string hexadecimal.
Exemplo
digest = sha2('hello sha2', 224)
say(concat('sha2-224:', tohex(digest)))
digest = sha2('hello sha2', 256)
say(concat('sha2-256:', tohex(digest)))
digest = sha2('hello sha2', 384)
say(concat('sha2-384:', tohex(digest)))
digest = sha2('hello sha2', 512)
say(concat('sha2-512:', tohex(digest)))
Saída:
sha2-224:b24b7effcf53ce815ee7eb73c7382613aba1c334e2a1622655362927
sha2-256:af0425cee23c236b326ed1f008c9c7c143a611859a11e87d66d0a4c3217c7792
sha2-384:bebbdde9efabd4b9cf90856cf30e0b024dd13177d9367d2dcf8d7a04e059f92260f16b21e261358c2271be32086ef35b
sha2-512:a1d1aef051c198c0d26bc03500c177a315fa248cea815e04fbb9a75e5be5061617daab311c5e3d0b215dbfd4e83e73f23081242b0143dcdfce5cd92ec51394f7
hmac
Calcula um resumo HMAC com o algoritmo especificado.
Sintaxe
hmac(k, s, v)
Parâmetros
|
Parâmetro |
Descrição |
|
|
Chave HMAC |
|
|
String de entrada |
|
|
Algoritmo de hash. Valores válidos: |
Valor de retorno
Retorna o resumo HMAC em formato binário. Use tohex() para converter o resultado em uma string hexadecimal.
Exemplo
k = '146ebcc8-392b-4b3a-a720-e7356f62f87b'
v = 'hello mac'
say(concat('hmac(md5): ', tohex(hmac(k, v, 'md5'))))
say(concat('hmac(sha1): ', tohex(hmac(k, v, 'sha1'))))
say(concat('hmac(sha256): ', tohex(hmac(k, v, 'sha256'))))
say(concat('hmac(sha512): ', tohex(hmac(k, v, 'sha512'))))
say(concat('hmac_sha1(): ', tohex(hmac_sha1(k, v))))
Saída:
hmac(md5): 358cbfca8ad663b547c83748de2ea778
hmac(sha1): 5555633cef48c3413b68f9330e99357df1cc3d93
hmac(sha256): 7a494543cad3b92ce1e7c4bbc86a8f5212b53e4d661f7830f455847540a85771
hmac(sha512): 59d7c07996ff675b45bd5fd40a6122bb5f40f597357a9b4a9e29da6f5c7cb806798c016fe09cb46457b6df9717d26d0af19896f72eaf4296be03e3681fea59ad
hmac_sha1(): 5555633cef48c3413b68f9330e99357df1cc3d93
hmac_sha1
Calcula um resumo HMAC-SHA-1.
Sintaxe
hmac_sha1(k, s)
Parâmetros
|
Parâmetro |
Descrição |
|
|
Chave HMAC-SHA-1 |
|
|
String de entrada |
Valor de retorno
Retorna o resumo HMAC-SHA-1 em formato binário. Use tohex() para converter o resultado em uma string hexadecimal.
Exemplo
Consulte o exemplo de hmac para ver uma saída que inclui hmac_sha1().
md5
Calcula um resumo MD5 e retorna o resultado como string hexadecimal.
Sintaxe
md5(s)
Parâmetros
|
Parâmetro |
Descrição |
|
|
String de entrada |
Valor de retorno
Retorna o resumo MD5 em formato hexadecimal.
Exemplo
say(concat('md5: ', md5('hello md5')))
Saída:
md5: 741fc6b1878e208346359af502dd11c5
md5_bin
Calcula um resumo MD5 e retorna o resultado em formato binário. Use esta função quando precisar dos bytes brutos, por exemplo, como entrada para outra operação criptográfica.
Sintaxe
md5_bin(s)
Parâmetros
|
Parâmetro |
Descrição |
|
|
String de entrada |
Valor de retorno
Retorna o resumo MD5 em formato binário. Use tohex() para converter o resultado em uma string hexadecimal.
Exemplo
say(concat('md5_bin: ', tohex(md5_bin('hello md5'))))
Saída:
md5_bin: 741fc6b1878e208346359af502dd11c5