Какая альтернатива crypto.subtle.exportKey в golang - PullRequest
0 голосов
/ 08 февраля 2020

Я пытаюсь получить приведенный ниже код JS в golang, но я не могу найти какие-либо методы ключа экспорта в криптографическом пакете golang:

JS Код:

return Crypto.subtle.generateKey({
            name: 'AES-GCM',
            length: 256
        }, !0, ['encrypt', 'decrypt']).then(function(t) {
            const n = A.subtle.exportKey('raw', t);
            return n
        }).then(function(n) {
            console.log(n)
        }).catch(function(t) {
            throw t
        })

1 Ответ

3 голосов
/ 08 февраля 2020

Эквивалентом crypto.subtle.exportKey('raw', key) является просто использование значения []byte.

Это уже формат для симметричных c клавиш. Например: aes использует: func NewCipher(key []byte) (cipher.Block, error).

Таким образом, генерация ключа для AES256 и печать его необработанного значения будет выглядеть примерно так ( детская площадка ) ):

import (
    "crypto/rand"  // Careful: do not use "math/rand".
    "fmt"
)

func main() {
  key := make([]byte, 32)  // 32 bytes for AES256.
  _, err := rand.Read(key) // read from random source
  if err != nil {
    // handle error
  }
  fmt.Println(key)
}

Для других форматов экспорта и ключей вы можете обратиться к x509 , pem и функциям генерации ключей для каждого алгоритма.

...