go标准库内置加密功能,无需额外依赖;go command not found是path未生效;go mod init失败多因路径或vendor干扰;aes需严格匹配密钥/iv长度;rsa解密失败常因填充不匹配或私钥格式错误。

Go 环境本身不依赖额外库就能用 crypto/aes、crypto/rsa、crypto/sha256 等加密功能——标准库全带齐,装好 go 命令就能直接 import 用。
go version 报 command not found 怎么办
这不是 Go 没装,是 PATH 没生效。安装器勾选“添加到 PATH”只是写进注册表或配置文件,但当前终端进程没读它。
- macOS/Linux:运行
which go,没输出就说明 PATH 没加对;检查~/.zshrc或~/.bash_profile里是否真有export PATH=$PATH:/usr/local/go/bin(或你解压的路径),然后执行source ~/.zshrc - Windows:PowerShell 运行
Get-Command go,失败就去「系统属性 → 高级 → 环境变量」确认C:\Program Files\Go\bin(或你自定义路径)进了系统或用户 PATH;改完必须重启终端,cmd/PowerShell 都不算“新终端”除非你关掉再开 - 统信UOS 若用 APT 安装但
go env GOROOT显示空,说明包管理器没自动设环境变量,得手动补export GOROOT=/usr/lib/go(路径以dpkg -L golang查为准)
go mod init 失败或生成错误 module 名
常见原因是项目目录还在 $GOPATH/src 下,或者残留 vendor/ 目录干扰模块识别。
Colly 是一个用于 Go 语言的快速开源爬取和爬虫框架。它适用于从简单的页面提取到异步爬虫处理大量页面集合,支持请求回调和结构化解析。
- 先执行
go env -w GO111MODULE=on强制启用模块模式(Go 1.16+ 默认开启,但某些旧脚本或 CI 可能关着) - 删掉项目根目录下的
vendor/文件夹(除非你明确要用 vendor 锁死依赖) - 别在
$GOPATH/src里初始化项目——比如$HOME/go/src/myapp是高危区;建议直接切到~/projects/myapp这类任意非 GOPATH 路径下再go mod init github.com/you/myapp - 如果
go mod init输出类似go: creating new go.mod: module myapp(没带域名),说明它 fallback 到了默认命名,大概率是上面某条没清理干净
crypto/aes 加密时 panic: crypto/cipher: invalid buffer size
这是 IV 或密钥长度不对,AES 对字节长度极其敏感,错 1 字节就崩。
-
aes.NewCipher(key)要求key必须是 16、24 或 32 字节——对应 AES-128/AES-192/AES-256;用len(key) == 32检查,别直接拿字符串硬转[]byte - CBC 模式下
iv必须恰好 16 字节;GCM 模式下 nonce 推荐 12 字节,且绝不能复用 - 明文要 PKCS#7 填充(CBC)或 AEAD 自动处理(GCM),别自己拼
"\x04\x04\x04\x04"——用cryptorand.Read生成随机 IV,用cipher.NewCBCEncrypter后再调block.Encrypt前确保明文长度是 16 的倍数 - 示例片段:
iv := make([]byte, 16) _, _ = cryptorand.Read(iv) // 不要忽略 err block, _ := aes.NewCipher(key) mode := cipher.NewCBCEncrypter(block, iv)
crypto/rsa 私钥解密失败:crypto/rsa: decryption error
不是密码错,通常是填充方式不匹配或数据被截断——RSA 解密对输入格式零容忍。
- 加密用
rsa.EncryptPKCS1v15,解密就必须用rsa.DecryptPKCS1v15;混用 OAEP 和 PKCS#1 v1.5 会直接 panic - 私钥文件读取后必须用
pem.Decode解包,再用x509.ParsePKCS1PrivateKey(私钥)或x509.ParsePKIXPublicKey(公钥);别跳过if block == nil判断 - RSA 2048 最多加密 245 字节明文(PKCS#1 v1.5);超长数据必须分块或改用 AES+RSA 混合加密——先用 RSA 加密 AES 密钥,再用 AES 加密实际数据
- 私钥 PEM 文件开头要是
-----BEGIN RSA PRIVATE KEY-----,不是-----BEGIN PRIVATE KEY-----(后者是 PKCS#8 格式,需用x509.ParsePKCS8PrivateKey)
真正麻烦的从来不是调哪个函数,而是密钥怎么存、IV 怎么传、错误怎么判——比如 rsa.DecryptPKCS1v15 失败返回的 error 是模糊的,得靠日志打点 + 输入校验提前拦截;还有 crypto/rand.Read 在某些容器环境可能阻塞,得备好超时逻辑。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










