golang中crypto.subtle.exportKey的替代方法是什么

问题描述 投票:0回答:1

我正在尝试在golang中实现下面的JS代码,但在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
        })
go cryptography aes aes-gcm
1个回答
0
投票

crypto.subtle.exportKey('raw', key)的等效项只是使用[]byte值。

这已经是对称密钥的格式。例如:aes使用:func NewCipher(key []byte) (cipher.Block, error)

因此,为AES256生成密钥并打印其原始值将遵循以下(playground link):

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)
}

对于其他导出格式和密钥,您可能需要研究x509pem和每个算法的密钥生成功能。

© www.soinside.com 2019 - 2024. All rights reserved.