Golang实现SM4
ECB模式,PKCS5填充
1 | package sm4 |
ECB模式,PKCS5填充
1 | package sm4 |
sys模块1 | import sys |
platform模块1 | import platform |
os模块1 | import os |
方法一
1 | sudo apt update & sudo apt install net-tools # 安装 net-tools |
方法二
1 | sudo ip link set dev eth0 down # 停用网卡 |
注意: 永久修改需要停止NetworkManager服务,此服务可能导致修改不生效
1 | sudo systemctl stop NetworkManager.service |
方法一
编辑`/etc/init.d/rc.local``文件,在此配置文件最后追加临时修改网卡MAC命令
1 | # 修改 ech0 网卡的 MAC 地址 |
方法二
编辑/etc/network/interfaces文件,在此文件后追加
1 | auto eth0 # 网卡自动启动 |
修改完成需要重启网络服务使配置生效
1 | sudo systemctl restart networking.service |
1 | wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh |
如果是否添加环境变量选择no的话,安装完成需要手动添加环境变量
1 | export ANACONDA3_ROOT=/usr/local/anaconda3 |
如果安装时选择了no但安装完成还想初始化可以执行
1 | source /usr/local/anaconda3/bin/activate |
![[Anaconda环境配置/IMG-20250804110742705.png]]
安装完成后查看.bashrc 中变更内容如下
1 | # >>> conda initialize >>> |
1 | conda config --set auto_activate_base false |
北京外国语大学
1 | channels: |
上海交通大学
1 | default_channels: |
1 | # 新建虚拟环境 -n 为新建虚拟环境命名 |
1 | # 查看所有虚拟环境 |
Docker 19.03以上版本可以使用 docker buildx build命令使用BuildKit构建镜像。该命令支持--platform参数可以同时构建多种系统架构的Docker镜像。
Docker for Linux不支持构建arm架构镜像,可以运行一个新的容器让其支持该特性,Docker Desktop版本无需进行此项设置。
1 | docker run --rm --privileged tonistiigi/binfmt:latest --install all |
由于Docker默认的build实例不支持同时指定多个 --platform,必须首先创建一个新的builder实例。
1 | # 适用于国内环境 |
构建镜像
1 | FROM --platform=$TARGETPLATFORM alpine |
1 | docker buildx build --platform linux/arm,linux/arm64,linux/amd64 -t {镜像名称} . --push |
--push 参数表示将构建好的镜像推送到Docker仓库
TARGETPLATFORM
构建镜像的目标平台,例如 linux/amd64,linux/arm/v7,windows/amd64
TARGETOS
构建镜像的OS类型,例如 linux,windows
TARGETARCH
构建镜像的架构类型,例如 amd64,arm
BUILDPLATFORM
构建镜像主机平台,例如 linux/amd64
BUILDOS
构建镜像主机的OS类型,例如 linux
BUILDARCH
构建镜像主机的架构类型,例如 amd64
BUILDVARIANTBUILDPLATFORM的变种,该变量可能为空,例如 v7
使用举例
例如要构建 linux/arm/v7和 linux/amd64两种架构的镜像
1 | FROM docker.io/library/python:3.10-alpine |
OpenSSL 是一个开源的 SSL/TLS 工具包,用于生成和管理数字证书。本笔记涵盖自签名证书、多级证书链、PKCS#12 格式的完整操作流程。
| 类型 | 说明 |
|---|---|
| CA | Certificate Authority,证书授权机构,负责发放和管理数字证书 |
| RootCA | 根证书,权威机构持有的证书,安装根证书意味着信任该 CA |
| SubCA | 中间证书机构,由根证书签发,可继续签发下级证书 |
CSR(Certificate Signing Request)是证书签名请求文件,生成私钥时同时生成。
| 格式 | 说明 |
|---|---|
| .crt / .cer | 证书文件 |
| .key | 私钥文件 |
| .csr | 证书签名请求文件 |
| .pem | Base64 编码证书,可包含证书或密钥 |
| .der | 二进制证书文件,常见于 Windows |
| .p12 / .pfx | PKCS#12 格式,包含私钥和证书链 |
[!NOTE]
CA 机构的证书可以给其他域名证书签名,但域名证书不可以。
典型三级结构:根证书 → 中间证书 → 服务器证书
1 | 服务器证书(最底端) |
验证过程:从服务器证书向上逐级验证签名直到根证书。
1 | # 生成带密码的私钥(需要输入两次密码) |
1 | # -x509:使用 X.509 证书结构 |
[!TIP]
非复杂场景可跳过此步骤,使用根证书直接签发用户证书。
1 | # 方式1:参考根证书私钥 |
1 | openssl req -new -key mid-ca.key -out mid-ca.csr \ |
1 | openssl x509 -req \ |
1 | openssl verify -CAfile root-ca.crt mid-ca.crt |
假设服务器域名为 example.io
1 | # 方式1 |
1 | openssl req -new -key example.io.key -out example.io.csr \ |
1 | # 使用根证书签发 |
[!CAUTION]
v3.ext 中basicConstraints=CA:FALSE为必选项,否则生成证书无法使用。
1 | openssl pkcs12 -export -out example.io.pfx -inkey example.io.key -in example.io.crt |
1 | openssl verify -CAfile root-ca.crt example.io.crt |
1 | # 查看私钥内容 |
启动测试服务器(需先导入根证书到浏览器信任库):
1 | openssl s_server -cert example.io.crt -key example.io.key -debug -HTTP -accept 443 |
然后访问 https://服务器IP 查看证书是否有效。
1 | # 吊销证书 |
| 参数 | 说明 | 示例 |
|---|---|---|
| /C | 国家代码 | CN |
| /ST | 州或省 | Tianjin |
| /L | 城市 | Tianjin |
| /O | 组织名称 | Example |
| /OU | 部门名称 | DEV |
| /CN | 通用名称(域名) | example.com |
1 | authorityKeyIdentifier=keyid,issuer |
扩展用途说明:
serverAuth:保证远程计算机的身份clientAuth:向远程计算机证明身份codeSigning:确保软件来自发布者emailProtection:保护电子邮件1 | # 包含证书和私钥 |
1 | # 提取私钥 |
1 | openssl pkcs12 -info -in server.p12 |
1 | openssl genrsa -out server.key 2048 |
1 | openssl genrsa -out ca.key 2048 |
随着 DeepSeek 等 AI 大模型的普及,我们有了更多有趣的玩法。本文将介绍如何利用 Python 脚本,结合 AI 大模型(以 DeepSeek 为例)和微信公众号 API,实现从文章创作到发布的全自动化流程。
核心流程:

以下 Python 函数 get_article_from_deepseek 用于向 DeepSeek 发送请求并获取生成的文本。
1 | import requests |
调用函数,让 AI 根据热点生成一篇公众号风格的文章。
1 | # 示例:让 AI 基于近期热点创作 |
效果与成本:

AppID 和 AppSecret。新手建议:首次测试可使用 “开发者工具” 中的 “公众平台测试账号”,功能齐全且无风险。

我们需要四个核心函数来处理公众号的访问令牌、素材上传和文章发布。
1 | # 微信公众号配置 |
将 AI 创作和公众号发布流程整合到一个主函数中。
1 | import os |
requests 库:pip install requests。DEEPSEEK_API_KEY、WECHAT_APPID、WECHAT_APPSECRET 替换为你自己的凭证。cover.jpg 的封面图片,放在脚本同目录下。python auto_publish.py。成功提示:如果一切顺利,你将在公众号后台的“素材管理”中看到新创建的文章,并且所有粉丝都会收到推送。
设想一个更强大的自动化系统:
PyQt 或 Tkinter 制作可视化控制面板。APScheduler 库,实现定时任务(如每小时抓取热点,生成文章存入素材池)。最终愿景:实现“一人运营百号”,运营者只需定期查看数据报告,与 AI 讨论策略,将重复性工作完全自动化。
API Key、AppSecret 等敏感信息提交到公开的代码仓库。通过本文的指南,你可以快速搭建一个属于自己的“AI 小编”系统,探索内容创作自动化的无限可能。
最简单的一种方法,将当前用户添加到root组。这样做之后该用户将拥有所有root权限,从而使用户在使用sudo时不再需要输入密码。
1 | sudo adduser {当前用户名} root |
注意: 将用户添加到root组后,该用户将拥有最高权限,因此在执行系统级操作时要特别小心,以避免可能的系统破坏。
通过编辑/etc/sudoers文件来配置特定用户或组的sudo行为。这种方法允许更灵活的控制哪些命令可以绕过密码提示。
![[Linux配置sudo无密码/IMG-20250319160639846.png]]
单用户配置
1 | {用户名} ALL=(ALL:ALL) NOPASSWD:ALL #在 root 后新添加一行 |
用户组配置
1 | %{用户组} ALL=(ALL:ALL) NOPASSWD:ALL # 在 %sudo 后添加 |
使用此方式需将用户添加进组
1 | sudo usermod -a -G {用户组} {用户名} |
Windows版本下载安装程序安装即可,Ubuntu下有两种安装方式
第一种方式
1 | sudo apt update |
此种方式安装的版本并不是最新版,或者下载 [官方包]执行
1 | sudo tar -zxvf go1.24.2.linux-amd64.tar.gz -C /usr/local # 解压缩到/usr/local |
打开 系统设置->关于->高级系统设置->环境变量,注意如果只给当前用户使用添加到用户的环境变量即可,全部用户可用需配置系统环境变量。
GOROOT
![[Golang环境配置/IMG-20250804110742705.png]]
GOPATH
![[Golang环境配置/IMG-20250804110742880.png]]
GOPROXY
![[Golang环境配置/IMG-20250804110743185.png]]
如果只给当前用户使用编辑用户目录下.bashrc文件,全部用户可用需配置/etc/profile。
1 | export GOROOT=/usr/local/go # Golang根目录 |
GOPROXY可在环境变量中配置也可使用go env -w命令配置
1 | go env -w GOPROXY=https://goproxy.cn # 七牛 |
GO111MODULE
从go 1.11版本开始,推荐使用Go Modules进行包管理。
1 | go env -w GO111MODULE=on |
在项目目录下初始化模块
1 | go mod init |