亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

aes.NewCipher 返回一個有效塊,但調用 block.BlockSize() 時出現錯誤

aes.NewCipher 返回一個有效塊,但調用 block.BlockSize() 時出現錯誤

Go
人到中年有點甜 2023-06-05 17:05:46
我正在嘗試在我的 go API 中使用 AES 加密和解密,我使用 aes.NewCipher(mykey) 創建了一個新塊并且該塊似乎有效,但是當我調用 cipher.NewCBCDecrypter(block, iv) 時函數在嘗試調用 b.BlockSize() 時在 cbc.go 的第 26 行導致“無效內存地址或 nil 指針取消引用”錯誤。所以我嘗試從我自己的代碼中調用 block.BlockSize() 并且我也得到一個異常,但是當我檢查塊 var 時它不是零。func Decrypt(data []byte) (result []byte, err error) {    logger := logrus.New()    logger.Infof("Starting decryption for string: %s\n", string(data[:]))    var block cipher.Block    if block, err := aes.NewCipher([]byte(app.Config.AESKey)); (err != nil) || (block == nil) {        logger.Infof("Failed to create block\n")        return nil, err    }    if len(data) < aes.BlockSize {        logger.Infof("Input too short\n")        return nil, nil    }    cbc := cipher.NewCBCDecrypter(block, []byte(app.Config.AESIV))    cbc.CryptBlocks(data, data)    return data, nil}我希望該函數能夠正常工作,因為 aes.NewCipher 不會返回錯誤。
查看完整描述

2 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

我現在看到我的問題了,我對 go 不太熟悉,所以我基本上創建了 2 個塊變量,一個是函數范圍內可訪問的,一個是 if 語句中唯一可訪問的形式。



查看完整回答
反對 回復 2023-06-05
?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

刪除此行

var block cipher.Block

當您在下一行中初始化塊時。

本質上,您正在創建 2 個塊變量。


查看完整回答
反對 回復 2023-06-05
  • 2 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號