EdgeScript fournit des fonctions de chiffrement intégrées pour le chiffrement, le déchiffrement et le calcul de condensés à la périphérie du CDN. Utilisez ces fonctions dans vos scripts Edge pour signer les requêtes, vérifier l'intégrité ou protéger les données sensibles.
Présentation des fonctions
| Fonction | Catégorie | Description |
|---|---|---|
aes_new(config) |
AES | Crée un objet AES pour le chiffrement et le déchiffrement |
aes_enc(o, s) |
AES | Chiffre un texte en clair à l'aide d'AES |
aes_dec(o, s) |
AES | Déchiffre un texte chiffré à l'aide d'AES |
sha1(s) |
Digest | Calcule un condensé SHA-1 (binaire) |
sha2(s, l) |
Digest | Calcule un condensé SHA-2 (binaire) |
hmac(k, s, v) |
Digest | Calcule un condensé HMAC (binaire) |
hmac_sha1(k, s) |
Digest | Calcule un condensé HMAC-SHA-1 (binaire) |
md5(s) |
Digest | Calcule un condensé MD5 (hexadécimal) |
md5_bin(s) |
Digest | Calcule un condensé MD5 (binaire) |
aes_new
Crée un objet Advanced Encryption Standard (AES) destiné aux opérations ultérieures de chiffrement et de déchiffrement. Transmettez l'objet renvoyé à aes_enc() pour chiffrer ou à aes_dec() pour déchiffrer.
Syntaxe
aes_new(config)
Paramètres
config est un dictionnaire contenant les champs suivants :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
key |
string | Oui | La clé de chiffrement |
cipher_len |
integer | Oui | Longueur de la clé. Valeurs valides : 128, 192, 256 |
cipher_mode |
string | Oui | Mode de chiffrement. Valeurs valides : ecb, cbc, ctr, cfb, ofb |
salt |
string | Non | Une valeur de sel |
iv |
string | Non | Le vecteur d'initialisation |
Valeur de retour
Renvoie un objet AES (type dictionnaire) en cas de succès, ou false en cas d'échec.
Exemple
L'exemple suivant crée des objets AES selon trois modes de chiffrement — ECB-128, CBC-256 et OFB-256 — puis chiffre et déchiffre une chaîne de texte en clair afin de vérifier l'exactitude de l'opération aller-retour.
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
Chiffre une chaîne de texte en clair à l'aide d'AES.
Syntaxe
aes_enc(o, s)
Paramètres
| Paramètre | Description |
|---|---|
o |
L'objet AES renvoyé par aes_new() |
s |
Le texte en clair à chiffrer |
Valeur de retour
Renvoie le texte chiffré obtenu après le chiffrement du texte spécifié par le paramètre s.
Exemple
Consultez l'exemple aes_new aes_new example pour un workflow complet de chiffrement et de déchiffrement.
aes_dec
Déchiffre une chaîne de texte chiffré à l'aide d'AES.
Syntaxe
aes_dec(o, s)
Paramètres
| Paramètre | Description |
|---|---|
o |
L'objet AES renvoyé par aes_new() |
s |
Le texte chiffré à déchiffrer |
Valeur de retour
Renvoie le texte en clair obtenu après le déchiffrement du texte spécifié par le paramètre s.
Exemple
Consultez l'exemple aes_new aes_new example pour un workflow complet de chiffrement et de déchiffrement.
sha1
Calcule un condensé SHA-1.
Syntaxe
sha1(s)
Paramètres
| Paramètre | Description |
|---|---|
s |
La chaîne d'entrée |
Valeur de retour
Renvoie le condensé SHA-1 au format binaire. Utilisez tohex() pour le convertir en chaîne hexadécimale.
Exemple
digest = sha1('hello sha')
say(concat('sha1:', tohex(digest)))
Sortie :
sha1:853789bc783a6b573858b6cc9f913afe82962956
sha2
Calcule un condensé SHA-2.
Syntaxe
sha2(s, l)
Paramètres
| Paramètre | Description |
|---|---|
s |
La chaîne d'entrée |
l |
La longueur du condensé en bits. Valeurs valides : 224, 256, 384, 512 |
Valeur de retour
Renvoie le condensé SHA-2 au format binaire. Utilisez tohex() pour le convertir en chaîne hexadécimale.
Exemple
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)))
Sortie :
sha2-224:b24b7effcf53ce815ee7eb73c7382613aba1c334e2a1622655362927
sha2-256:af0425cee23c236b326ed1f008c9c7c143a611859a11e87d66d0a4c3217c7792
sha2-384:bebbdde9efabd4b9cf90856cf30e0b024dd13177d9367d2dcf8d7a04e059f92260f16b21e261358c2271be32086ef35b
sha2-512:a1d1aef051c198c0d26bc03500c177a315fa248cea815e04fbb9a75e5be5061617daab311c5e3d0b215dbfd4e83e73f23081242b0143dcdfce5cd92ec51394f7
hmac
Calcule un condensé HMAC à l'aide de l'algorithme spécifié.
Syntaxe
hmac(k, s, v)
Paramètres
| Paramètre | Description |
|---|---|
k |
La clé HMAC |
s |
La chaîne d'entrée |
v |
L'algorithme de hachage. Valeurs valides : md5, sha1, sha256, sha512 |
Valeur de retour
Renvoie le condensé HMAC au format binaire. Utilisez tohex() pour le convertir en chaîne hexadécimale.
Exemple
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))))
Sortie :
hmac(md5): 358cbfca8ad663b547c83748de2ea778
hmac(sha1): 5555633cef48c3413b68f9330e99357df1cc3d93
hmac(sha256): 7a494543cad3b92ce1e7c4bbc86a8f5212b53e4d661f7830f455847540a85771
hmac(sha512): 59d7c07996ff675b45bd5fd40a6122bb5f40f597357a9b4a9e29da6f5c7cb806798c016fe09cb46457b6df9717d26d0af19896f72eaf4296be03e3681fea59ad
hmac_sha1(): 5555633cef48c3413b68f9330e99357df1cc3d93
hmac_sha1
Calcule un condensé HMAC-SHA-1.
Syntaxe
hmac_sha1(k, s)
Paramètres
| Paramètre | Description |
|---|---|
k |
La clé HMAC-SHA-1 |
s |
La chaîne d'entrée |
Valeur de retour
Renvoie le condensé HMAC-SHA-1 au format binaire. Utilisez tohex() pour le convertir en chaîne hexadécimale.
Exemple
Consultez l'exemple hmac hmac example pour un exemple de sortie incluant hmac_sha1().
md5
Calcule un condensé MD5 et le renvoie sous forme de chaîne hexadécimale.
Syntaxe
md5(s)
Paramètres
| Paramètre | Description |
|---|---|
s |
La chaîne d'entrée |
Valeur de retour
Renvoie le condensé MD5 au format hexadécimal.
Exemple
say(concat('md5: ', md5('hello md5')))
Sortie :
md5: 741fc6b1878e208346359af502dd11c5
md5_bin
Calcule un condensé MD5 et le renvoie au format binaire. Utilisez cette fonction lorsque vous avez besoin des octets bruts, par exemple en tant qu'entrée pour une autre opération cryptographique.
Syntaxe
md5_bin(s)
Paramètres
| Paramètre | Description |
|---|---|
s |
La chaîne d'entrée |
Valeur de retour
Renvoie le condensé MD5 au format binaire. Utilisez tohex() pour le convertir en chaîne hexadécimale.
Exemple
say(concat('md5_bin: ', tohex(md5_bin('hello md5'))))
Sortie :
md5_bin: 741fc6b1878e208346359af502dd11c5