EdgeScript proporciona funciones de cifrado integradas para el cifrado, el descifrado y el cálculo de resúmenes en el edge de CDN. Utilice estas funciones en sus scripts de edge para firmar solicitudes, comprobar la integridad o proteger datos confidenciales.
Descripción general de las funciones
|
Función |
Categoría |
Descripción |
|
|
AES |
Crea un objeto AES para cifrar y descifrar |
|
|
AES |
Cifra texto plano mediante AES |
|
|
AES |
Descifra texto cifrado mediante AES |
|
|
Resumen |
Calcula un resumen SHA-1 (binario) |
|
|
Resumen |
Calcula un resumen SHA-2 (binario) |
|
|
Resumen |
Calcula un resumen HMAC (binario) |
|
|
Resumen |
Calcula un resumen HMAC-SHA-1 (binario) |
|
|
Resumen |
Calcula un resumen MD5 (hexadecimal) |
|
|
Resumen |
Calcula un resumen MD5 (binario) |
aes_new
Crea un objeto Advanced Encryption Standard (AES) para operaciones posteriores de cifrado y descifrado. Pase el objeto devuelto a aes_enc() para cifrar o a aes_dec() para descifrar.
Sintaxis
aes_new(config)
Parámetros
config es un diccionario con los siguientes campos:
|
Campo |
Tipo |
Obligatorio |
Descripción |
|
|
string |
Sí |
La clave de cifrado |
|
|
integer |
Sí |
Longitud de la clave. Valores válidos: |
|
|
string |
Sí |
Modo de cifrado. Valores válidos: |
|
|
string |
No |
Un valor de salt |
|
|
string |
No |
El vector de inicialización |
Valor de retorno
Devuelve un objeto AES (de tipo diccionario) si la operación se completa correctamente, o false si falla.
Ejemplo
A continuación se muestra cómo crear objetos AES en tres modos de cifrado: ECB-128, CBC-256 y OFB-256. Después, se cifra y se descifra una cadena de texto plano para comprobar que el proceso de ida y vuelta sea correcto.
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
Cifra una cadena de texto plano mediante AES.
Sintaxis
aes_enc(o, s)
Parámetros
|
Parámetro |
Descripción |
|
|
El objeto AES que devuelve |
|
|
El texto plano que se va a cifrar |
Valor de retorno
Devuelve el texto cifrado después de procesar el texto especificado en el parámetro s.
Ejemplo
Consulte el ejemplo de aes_new para ver un flujo de trabajo completo de cifrado y descifrado.
aes_dec
Descifra una cadena de texto cifrado mediante AES.
Sintaxis
aes_dec(o, s)
Parámetros
|
Parámetro |
Descripción |
|
|
El objeto AES que devuelve |
|
|
El texto cifrado que se va a descifrar |
Valor de retorno
Devuelve el texto plano después de descifrar el texto especificado en el parámetro s.
Ejemplo
Consulte el ejemplo de aes_new para ver un flujo de trabajo completo de cifrado y descifrado.
sha1
Calcula un resumen SHA-1.
Sintaxis
sha1(s)
Parámetros
|
Parámetro |
Descripción |
|
|
La cadena de entrada |
Valor de retorno
Devuelve el resumen SHA-1 en formato binario. Utilice tohex() para convertirlo a una cadena hexadecimal.
Ejemplo
digest = sha1('hello sha')
say(concat('sha1:', tohex(digest)))
Salida:
sha1:853789bc783a6b573858b6cc9f913afe82962956
sha2
Calcula un resumen SHA-2.
Sintaxis
sha2(s, l)
Parámetros
|
Parámetro |
Descripción |
|
|
La cadena de entrada |
|
|
La longitud del resumen en bits. Valores válidos: |
Valor de retorno
Devuelve el resumen SHA-2 en formato binario. Utilice tohex() para convertirlo a una cadena hexadecimal.
Ejemplo
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)))
Salida:
sha2-224:b24b7effcf53ce815ee7eb73c7382613aba1c334e2a1622655362927
sha2-256:af0425cee23c236b326ed1f008c9c7c143a611859a11e87d66d0a4c3217c7792
sha2-384:bebbdde9efabd4b9cf90856cf30e0b024dd13177d9367d2dcf8d7a04e059f92260f16b21e261358c2271be32086ef35b
sha2-512:a1d1aef051c198c0d26bc03500c177a315fa248cea815e04fbb9a75e5be5061617daab311c5e3d0b215dbfd4e83e73f23081242b0143dcdfce5cd92ec51394f7
hmac
Calcula un resumen HMAC con el algoritmo especificado.
Sintaxis
hmac(k, s, v)
Parámetros
|
Parámetro |
Descripción |
|
|
La clave HMAC |
|
|
La cadena de entrada |
|
|
El algoritmo de hash. Valores válidos: |
Valor de retorno
Devuelve el resumen HMAC en formato binario. Utilice tohex() para convertirlo a una cadena hexadecimal.
Ejemplo
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))))
Salida:
hmac(md5): 358cbfca8ad663b547c83748de2ea778
hmac(sha1): 5555633cef48c3413b68f9330e99357df1cc3d93
hmac(sha256): 7a494543cad3b92ce1e7c4bbc86a8f5212b53e4d661f7830f455847540a85771
hmac(sha512): 59d7c07996ff675b45bd5fd40a6122bb5f40f597357a9b4a9e29da6f5c7cb806798c016fe09cb46457b6df9717d26d0af19896f72eaf4296be03e3681fea59ad
hmac_sha1(): 5555633cef48c3413b68f9330e99357df1cc3d93
hmac_sha1
Calcula un resumen HMAC-SHA-1.
Sintaxis
hmac_sha1(k, s)
Parámetros
|
Parámetro |
Descripción |
|
|
La clave HMAC-SHA-1 |
|
|
La cadena de entrada |
Valor de retorno
Devuelve el resumen HMAC-SHA-1 en formato binario. Utilice tohex() para convertirlo a una cadena hexadecimal.
Ejemplo
Consulte el ejemplo de hmac para ver una salida de ejemplo que incluye hmac_sha1().
md5
Calcula un resumen MD5 y lo devuelve como una cadena hexadecimal.
Sintaxis
md5(s)
Parámetros
|
Parámetro |
Descripción |
|
|
La cadena de entrada |
Valor de retorno
Devuelve el resumen MD5 en formato hexadecimal.
Ejemplo
say(concat('md5: ', md5('hello md5')))
Salida:
md5: 741fc6b1878e208346359af502dd11c5
md5_bin
Calcula un resumen MD5 y lo devuelve en formato binario. Utilice esta función cuando necesite los bytes sin procesar; por ejemplo, como entrada para otra operación criptográfica.
Sintaxis
md5_bin(s)
Parámetros
|
Parámetro |
Descripción |
|
|
La cadena de entrada |
Valor de retorno
Devuelve el resumen MD5 en formato binario. Utilice tohex() para convertirlo a una cadena hexadecimal.
Ejemplo
say(concat('md5_bin: ', tohex(md5_bin('hello md5'))))
Salida:
md5_bin: 741fc6b1878e208346359af502dd11c5