how to decrypt data on golang from webcrypte encrypt

119 Views Asked by At
  • it want to encrypt data on web and decrypt on golang server
  • when iv size is 12, it run well
  • fail when size is 16
  • the js library is using 16 iv size
  • the golang decrypt code is
h := sha256.New()
io.WriteString(h, "123")
key := h.Sum(nil)

c, err := aes.NewCipher(key)
if err != nil {
    panic(err)
}

gcm, err := cipher.NewGCM(c)
if err != nil {
    panic(err)
}

out, err := gcm.Open(nil, encrypted[0:gcm.NonceSize()], encrypted[gcm.NonceSize():], nil)
if err != nil {
    panic(err)
}
  • the javascript encryte code
const iv = crypto.getRandomValues(new Uint8Array(12)); 
const alg = { name: 'AES-GCM', iv: iv }; 
const key = await crypto.subtle.importKey('raw', pwHash, alg, false, ['encrypt']);
const ptUint8 = new TextEncoder().encode(plaintext); 
const ctBuffer = await crypto.subtle.encrypt(alg, key, ptUint8);  
  • using 16 bit size

  • ok for using NewGCMWithNonceSize()

  • think

0

There are 0 best solutions below