it-swarm.com.de

Liste der Krypto-Algorithmen

Ich versuche eine Liste von strings zu finden, die ein Krypto-Algorithmus verwendet werden kann, um in diese Funktion zu passen und SHA256 zu ersetzen.

crypto.createHmac("SHA256", secret).update(string).digest('base64'),

Ich bin zu dem Schluss gekommen, dass Crypto openssl verwendet und dass die Algorithmen für jedes System spezifisch sind, das node.js ausführt.

Mit den folgenden Befehlen können Sie eine Liste aller für Ihr System verfügbaren Algorithmen anzeigen.

openssl list-cipher-algorithms 
openssl list-cipher-commands 

Ich habe den Inhalt dieser beiden Befehle an this Gist ausgegeben.

Was mich stört ist, dass SHA256 in keiner dieser Listen steht.

Die endgültige Liste der Algorithmen würde mir wirklich gefallen.

25
ThomasReggi

Das Lernen hier ist, dass ciphersund hashesunterschiedlich sind und unterschiedliche Algorithmen verwenden. Verwenden Sie bei den Knoten cryptodie Methoden .getCiphers() und .getHashes(), um ein Array mit den Namen des unterstützten ciphersbzw. hasheszurückzugeben.

var crypto = require('crypto')
console.log(crypto.getCiphers())
console.log(crypto.getHashes())

Welche protokolliert die folgenden Chiffren:

[ 'CAST-cbc',
  'aes-128-cbc',
  'aes-128-cbc-hmac-sha1',
  'aes-128-cfb',
  'aes-128-cfb1',
  'aes-128-cfb8',
  'aes-128-ctr',
  'aes-128-ecb',
  'aes-128-gcm',
  'aes-128-ofb',
  'aes-128-xts',
  'aes-192-cbc',
  'aes-192-cfb',
  'aes-192-cfb1',
  'aes-192-cfb8',
  'aes-192-ctr',
  'aes-192-ecb',
  'aes-192-gcm',
  'aes-192-ofb',
  'aes-256-cbc',
  'aes-256-cbc-hmac-sha1',
  'aes-256-cfb',
  'aes-256-cfb1',
  'aes-256-cfb8',
  'aes-256-ctr',
  'aes-256-ecb',
  'aes-256-gcm',
  'aes-256-ofb',
  'aes-256-xts',
  'aes128',
  'aes192',
  'aes256',
  'bf',
  'bf-cbc',
  'bf-cfb',
  'bf-ecb',
  'bf-ofb',
  'blowfish',
  'camellia-128-cbc',
  'camellia-128-cfb',
  'camellia-128-cfb1',
  'camellia-128-cfb8',
  'camellia-128-ecb',
  'camellia-128-ofb',
  'camellia-192-cbc',
  'camellia-192-cfb',
  'camellia-192-cfb1',
  'camellia-192-cfb8',
  'camellia-192-ecb',
  'camellia-192-ofb',
  'camellia-256-cbc',
  'camellia-256-cfb',
  'camellia-256-cfb1',
  'camellia-256-cfb8',
  'camellia-256-ecb',
  'camellia-256-ofb',
  'camellia128',
  'camellia192',
  'camellia256',
  'cast',
  'cast-cbc',
  'cast5-cbc',
  'cast5-cfb',
  'cast5-ecb',
  'cast5-ofb',
  'des',
  'des-cbc',
  'des-cfb',
  'des-cfb1',
  'des-cfb8',
  'des-ecb',
  'des-ede',
  'des-ede-cbc',
  'des-ede-cfb',
  'des-ede-ofb',
  'des-ede3',
  'des-ede3-cbc',
  'des-ede3-cfb',
  'des-ede3-cfb1',
  'des-ede3-cfb8',
  'des-ede3-ofb',
  'des-ofb',
  'des3',
  'desx',
  'desx-cbc',
  'id-aes128-GCM',
  'id-aes192-GCM',
  'id-aes256-GCM',
  'idea',
  'idea-cbc',
  'idea-cfb',
  'idea-ecb',
  'idea-ofb',
  'rc2',
  'rc2-40-cbc',
  'rc2-64-cbc',
  'rc2-cbc',
  'rc2-cfb',
  'rc2-ecb',
  'rc2-ofb',
  'rc4',
  'rc4-40',
  'rc4-hmac-md5',
  'seed',
  'seed-cbc',
  'seed-cfb',
  'seed-ecb',
  'seed-ofb' ]

Und folgende hashesname__:

[ 'DSA',
  'DSA-SHA',
  'DSA-SHA1',
  'DSA-SHA1-old',
  'RSA-MD4',
  'RSA-MD5',
  'RSA-MDC2',
  'RSA-RIPEMD160',
  'RSA-SHA',
  'RSA-SHA1',
  'RSA-SHA1-2',
  'RSA-SHA224',
  'RSA-SHA256',
  'RSA-SHA384',
  'RSA-SHA512',
  'dsaEncryption',
  'dsaWithSHA',
  'dsaWithSHA1',
  'dss1',
  'ecdsa-with-SHA1',
  'md4',
  'md4WithRSAEncryption',
  'md5',
  'md5WithRSAEncryption',
  'mdc2',
  'mdc2WithRSA',
  'ripemd',
  'ripemd160',
  'ripemd160WithRSA',
  'rmd160',
  'sha',
  'sha1',
  'sha1WithRSAEncryption',
  'sha224',
  'sha224WithRSAEncryption',
  'sha256',
  'sha256WithRSAEncryption',
  'sha384',
  'sha384WithRSAEncryption',
  'sha512',
  'sha512WithRSAEncryption',
  'shaWithRSAEncryption',
  'ssl2-md5',
  'ssl3-md5',
  'ssl3-sha1',
  'whirlpool' ]

Hier sind meine Einstellungen:

  • openssl version ist OpenSSL 0.9.8zg 14 July 2015
  • node --version ist v0.12.4
35
ThomasReggi

Die openssl-Dokumente enthalten eine Seite mit allen gültigen Zeichenfolgen: http://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS

4
John Brodie

SHA-256 ist keine Chiffre, es ist ein Hash-Algorithmus . Das ist wahrscheinlich der Grund, warum Sie es nicht in einer Liste von Chiffren gefunden haben. Dasselbe gilt für MD5 und all die verschiedenen SHA - Algorithmen.

In der Tat ist ein Hash-Algorithmus genau das, was Sie für HMAC benötigen. Wenn Sie einen MAC basierend auf einer Blockchiffre erstellen möchten, müssen Sie eine andere Konstruktion verwenden, z. B. OMAC / CMAC , pmac _ oder CBC-MAC .

3
Ilmari Karonen
CAST-cbc
aes-128-cbc

aes-128-cbc-hmac-sha1

aes-128-cfb

aes-128-cfb1

aes-128-cfb8

aes-128-ctr

aes-128-ecb

aes-128-gcm

aes-128-ofb

aes-128-xts

aes-192-cbc

aes-192-cfb

aes-192-cfb1

aes-192-cfb8

aes-192-ctr

aes-192-ecb

aes-192-gcm

aes-192-ofb

aes-256-cbc

aes-256-cbc-hmac-sha1

aes-256-cfb

aes-256-cfb1

aes-256-cfb8

aes-256-ctr

aes-256-ecb

aes-256-gcm

aes-256-ofb

aes-256-xts

aes128

aes192

aes256

bf

bf-cbc

bf-cfb

bf-ecb

bf-ofb

blowfish

camellia-128-cbc

camellia-128-cfb

camellia-128-cfb1

camellia-128-cfb8

camellia-128-ecb

camellia-128-ofb

camellia-192-cbc

camellia-192-cfb

camellia-192-cfb1

camellia-192-cfb8

camellia-192-ecb

camellia-192-ofb

camellia-256-cbc

camellia-256-cfb

camellia-256-cfb1

camellia-256-cfb8

camellia-256-ecb

camellia-256-ofb

camellia128

camellia192

camellia256

cast

cast-cbc

cast5-cbc

cast5-cfb

cast5-ecb

cast5-ofb

des

des-cbc

des-cfb

des-cfb1

des-cfb8

des-ecb

des-ede

des-ede-cbc

des-ede-cfb

des-ede-ofb

des-ede3

des-ede3-cbc

des-ede3-cfb

des-ede3-cfb1

des-ede3-cfb8

des-ede3-ofb

des-ofb

des3

desx

desx-cbc

id-aes128-GCM

id-aes192-GCM

id-aes256-GCM

idea

idea-cbc

idea-cfb

idea-ecb

idea-ofb

rc2

rc2-40-cbc

rc2-64-cbc

rc2-cbc

rc2-cfb

rc2-ecb

rc2-ofb

rc4

rc4-40

rc4-hmac-md5

seed

seed-cbc

seed-cfb

seed-ecb

seed-ofb
2
user2081518

Ich habe alle Cipher-Strings und alles in meinem Gist geprüft, und diese sind die einzigen, die mit Cipher arbeiten, um eine HMAC zu erstellen.

MD5
SHA
SHA1
SHA256
SHA384
0
ThomasReggi