Ruby解密通过go加密的数据时,“最终块长度错误”

I'm trying to encrypt a piece of data in Go and then store it into a database to be later pulled out and decrypted by Rails.

Here is the Go encryption code:

func Encrypt(text []byte) ([]byte, error) {
  key := []byte("a very very very very secret key")
  block, err := aes.NewCipher(key)

  if err != nil {
    return nil, err
  }

  b := base64.StdEncoding.EncodeToString(text)
  ciphertext := make([]byte, aes.BlockSize+len(b))
  iv := ciphertext[:aes.BlockSize]

  if _, err := io.ReadFull(rand.Reader, iv); err != nil {
    return nil, err
  }

  cfb := cipher.NewCFBEncrypter(block, iv)
  cfb.XORKeyStream(ciphertext[aes.BlockSize:], []byte(b))

  return ciphertext, nil
}

And here is my Ruby code to decrypt:

def decrypt(message)
  key = "a very very very very secret key"

  iv = message[0, 14]
  data = message[15, message.length+1]

  key = Digest::SHA256.digest(key) if(key.kind_of?(String) && 32 != key.bytesize)
  iv = Digest::MD5.digest(iv) if(iv.kind_of?(String) && 16 != iv.bytesize)

  aes = OpenSSL::Cipher.new('AES-256-CBC')
  aes.decrypt
  aes.key = key
  aes.iv = iv
  aes.update(data) + aes.final
end

This is giving me an error message of:

OpenSSL::Cipher::CipherError: wrong final block length

Can anyone help let me know what I'm doing wrong?

Thanks!