Go语言AES-GCM解密代码分析
该程序的作用是解密一个经过AES-GCM加密的数据,并输出解密后的明文。下面是具体的分析:
- 导入包
import (
'encoding/base64'
'gld/detect'
'gld/loader'
'gld/util'
)
该程序导入了四个包:
- encoding/base64:用于对base64进行编解码。
- gld/detect:自定义的一些检测函数,用于判断程序是否可以继续运行。
- gld/loader:自定义的一些加载函数,用于加载一些资源。
- gld/util:自定义的一些工具函数,用于一些常见的操作。
- 判断程序是否可以继续运行
if !detect.ContinueRun() { return }
该程序调用了detect包中的ContinueRun函数,判断程序是否可以继续运行。如果无法继续运行,直接返回。
- 解码key、nonce和buf
key, _ := base64.StdEncoding.DecodeString('3Mh8sQBWVVDH2OGCC3ENwaDIcMcZs0FZ2ugNxtFBT+c=')
nonce, _ := base64.StdEncoding.DecodeString('1kJ20AcWl/Ai4nNz')
buf, _ := base64.StdEncoding.DecodeString('1kJ20AcWl/Ai4nNzuilOTX+N42iYj2+VI4bYcy70bUIr7WIS+qvXoS9GcMXsx3HqHuSULGcodnQrkyCjnKYyoHhNJYMRK9Uod7o85jknF7l79D0SekvtkcF1IWD4ydUioxEywH8u6oRFDR0wGHxgOlksdmAfFnfU5DwcG0Z7UIs+3Ral6hlrgv9ChJXdlxSxeVmIUjmE0I+vCKNqaOhB/ceNbo9SNd+35ZuANymZ8AjoAxRMdA+Ylsqbqs1PFhdgPXlrVa+ZjRLlv7sBtEQVs8U6Kl25g+78ALZxS3nHcRPqboD8IehonfyMLbTOK8e3V8875dg7c+Q+bQdyqKMyScUkZOSckafAO0Km8z+EtwJjxgGN0irvx53BewvSCEDC9BF80Na4maJZMNYYhgToBS1rrndpdtGb28PkbO8WdkASiAcaDKG+TUTKn1SMROCfI5mXmoCxp5rEyX+Qt6aVkEUEkDWs+9F6zYHlKgGh//Vs755/hgldypATq1QZ1sIVkplFySoh6Y2cO91yRQ1EX2luUqQmY2uem1+m9z/QAlW08EQyPR7SFVJwjcn6Y4We4CZT7Z/1HoE5aJAWF8Lhq23LIDfA56mNJjAfjvHSpCbTCYvkSILNL6UT/o/sxHqkJm4W7EqLvt+tW57kMZdEkGkrqdrNsGJBMC5f5cOIpvDACrJI9T3JjA+Y17xU7ajwFrBsbWHCI51YAmUmbnwb9tQXOV5KfDPIiAKaP1WJhsvx6MfVM6vMuX+8Yn6KdHptXnV0Yeuiyt+vp8HT3jlqVf1pOn1sTrTRp9is88FrLdj04/b9S6RLah6ZYnwrn6fW17FnB7pLppxKHmyoThC957MJBqA63DTPR+OGpwY2yrlZI0lIofhR4Q1GxBT7c/RQWSEihp9C6xWtQYtRVZRuWxEz/MdWLLs40Tps6cw75tblEDjLW2r+A7hrUnY0W9BGVavjbTEcYg2b2WlomEdGOEXHdJSPbRwb5gJfn6gKk4wIfdEbQ4wbLHDi/Ncovb+iWJxlaNyFGtzKLfI36usQwP6W6ANsvP0Vome6IC69VehDeOdtt/pF0kGIe4aqOUcl6jYsPcS1j0yOsiKcKDAc88jkHPf2Xvoqhwq+pg6+zdFDlH+jH9iXrnTP3lZdtTUr/QDaIk4OAgROzDr0R9JLqrOUhcTN/rfzhwRsu9CMN1wIMdhQMnpFXUD/0UpM3HJPj/aQ3ZgXZFsJ6SCv7TqqqbgJ4+BFAlORn6YnShC+kEG6WRtzPjssXnuBa7Ui')
该程序使用base64包中的StdEncoding.DecodeString函数对key、nonce和buf进行解码。
- 创建AES-GCM加密算法
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
gcm, err := cipher.NewGCM(block)
if err != nil {
panic(err)
}
该程序使用aes包中的NewCipher函数创建一个AES加密算法,然后使用cipher包中的NewGCM函数创建一个AES-GCM加密算法。
- 解密数据
plaintext, err := gcm.Open(nil, nonce, buf, nil)
if err != nil {
panic(err)
}
该程序使用上一步创建的AES-GCM加密算法对buf进行解密,得到明文plaintext。如果解密失败,直接panic。
- 输出解密后的数据
loader.X(plaintext)
该程序使用loader包中的X函数输出解密后的明文。具体输出的内容取决于该函数的实现。
原文地址: https://www.cveoy.top/t/topic/lPfP 著作权归作者所有。请勿转载和采集!