TheBadZhang 发布的文章

C/C++ 框架推荐

这个页面中的内容与 https://zh.cppreference.com/w/cpp/links/libs 十分相似,但是按照我自己的想法添加或移动了内容

项目构建

xmake
cmake
nmake
ninja
MakeFiles

多线程库

网络库

POCO

文本处理库

编码类型转换

格式化库

图像处理

Boost.PIL
Cario

音频处理

OpenAL

多媒体

SDL
EGE
EASYX
XEGE-SDL

tinyproxy 的部署和使用不完全指北

tinyproxy - GitHub

介绍

  • Tinyproxy 是一个面向 POSIX 系统开发的轻量级的开源 HTTP/HTTPS 代理守护进程,其设计目标是快而小,从底层开始进行设计,保证了在高速的同时体积依然很小。它适用于需要完整 HTTP 代理特性,但系统资源又不足以运行大型代理的场景,比如嵌入式部署。
  • Tinyproxy 对小规模网络非常有用,这样的场合下大型代理会使系统资源紧张,或有安全风险。 Tinyproxy 的一个关键特性是其缓冲连接的理念。从效果上看, Tinyproxy 对服务器的响应进行了高速缓冲,然后按照客户端能够处理的最高速度进行响应。该特性极大的降低了网络延滞带来的问题。

  • 支持匿名模式:

    • 可让您配置哪些 HTTP标头可被允许通过,哪些 HTTP标头应被阻止。 这使您既可以限制从HTTP服务器向Web浏览器发送的数据(例如Cookie),也可以限制从Web浏览器到HTTP服务器发送的数据(例如版本信息)。
  • 支持 HTTPS:

    • 可以通过 CONNECT 请求来转发 HTTPS 连接。Tinyproxy 允许进行 HTTPS 连接的转发,而且无需通过 CONNECT 方法以任何形式修改流量内容(请参阅ConnectPort 指令)。
    • 使用 AddHeader 指令,您可以向传出的流量里添加或插入 HTTP 标头信息。
  • 远程监视:

    • 通过使用远程监视工具,您可以远程获知代理统计信息、日志和访问信息,从而确切了解代理的繁忙程度。
  • 负载监视:

    • 可配置成当负载达到某个程度时,拒绝新的代理请求。
  • 访问控制:

    • 可设置特定的 IP 地址或者 IP 段才可访问。
  • 安全:

    • 不需要 root 权限。
    • 只需进行一些配置(比如,将 Tinyproxy 创建的文件设为由非 root 用户拥有,并让它在大于 1024 的端口上运行),就能让 Tinyproxy 在没有任何特殊权限的情况下运行,从而将系统受到破坏的风险降至最低。
    • 您可以配置 Tinyproxy 来实现 访问控制,从而仅允许来自特定子网或特定接口的请求,从而确保那些随机出现的、未经授权的人不能使用您的代理。
  • 轻量化:

    • 只需要极小的系统资源。
    • Tinyproxy 的体积很小,也仅需少量系统资源。在使用 glibc 时,内存占用一般大约 2 MB,而 CPU 占用会随着连接数量线性增长(具体取决于连接速度)。因此,Tinyproxy 可用在比较老旧的计算机上,或者用在基于 Linux 的路由器等网络设备上,而不会对设备性能造成明显的影响。
  • 支持基于 URL 的过滤。
  • 支持透明代理

    • 使客户端无需进行任何配置即可使用代理。您也可以将其用作您网站的反向代理前端。
  • 支持多级代理。
  • 开源:

    • Tinyproxy 采用 GNU GPL 协议(版本2及以上)分发。
  • 易于构建:

    • Tinyproxy 的构建和运行仅需一个最小化的 POSIX 环境。同时,它可以用其他附加库来添加额外功能。
  • 稳定:

    • 它的设计致力于防止缓冲区溢出。代码结构的简单也确保了此类bug易于定位。
  • 高自由度:

    • 如果您要构建自定义Web代理,可以轻松地修改 Tinyproxy 以满足您的自定义需求。 源码结构非常简单,遵循 KISS 原则。 因此,可以把它作为基础,来实现您可能需要Web代理执行的任何操作。

安装

直接安装

通过下面的命令在不同平台上直接安装 tinyproxy 服务
RHEL / CentOS / Fedora

yum install tinyproxy

从 EPEL 仓库中安装 Tinyproxy。
Debian / Ubuntu

apt install tinyproxy

Archlinux / manjaro

pacman -S tinyproxy

openSUSE

zypper in tinyproxy

FreeBSD,OpenBSD 或 NetBSD

可以使用 pkg_add 程序来安装

pkg install tinyproxy

Mac OS
对于 Mac OS X 用户,可以查看 MacPorts 来检查其中的 Tinyproxy 端口是否已是最新版本。
如果您觉得您操作系统中的 Tinyproxy 二进制软件包不是最新的,请联系该操作系统的软件包维护者。 如果这行不通,您也可以从源代码编译得到最新的稳定版本。

homebrew install proxy

手动安装

最新版下载链接:

https://github.com/tinyproxy/tinyproxy/releases/latest

编译安装

我们以源代码的形式分发 Tinyproxy,必须在对其编译后,才能在您的系统上使用。 请查看源代码树中的 INSTALL 文件,获取构建说明。 Tinyproxy 的最新稳定发行版本是 tinyproxy-1.8.4.tar.bz2, 它发布于2016年1月1日。Tinyproxy 1.8.4 的 NEWS 文件包含了发行说明。您可以使用其PGP签名验证tarball。 您也可以浏览 Tinyproxy 旧的发行版本。
通过
我们使用 Git 作为 Tinyproxy 源代码仓库的版本控制系统。 要获取 Tinyproxy 仓库的副本,请使用以下命令:

git clone --depth=1 git@github.com:tinyproxy/tinyproxy.git

下载最新版本代码 (当然,可能是实验性代码,建议还是从上面的链接手动下载最新版 release 代码)
如果你使用的是其它平台,更多的安装方式可直接参考官方文档:https://tinyproxy.github.io/

  1. 通过源码安装

如果你使用的平台,官方还不支持通过软件包安装。你也可以通过源码进行编译安装。

git clone --depth=1 https://github.com/tinyproxy/tinyproxy.git
cd tinyproxy
./autogen.sh
./configure
make
make install

配置

TinyProxy 默认配置文件路径为 /etc/tinyproxy/tinyproxy.conf。如果你要自定义配置文件位置,可以在启动 TinyProxy 时 通过 -c 参数来指定。

该页面描述配置文件的语法和内容。

Tinyproxy 配置文件包含很多键值对,每行一对。以 # 开头的行或者空白行是注释,会被忽略。关键字不区分大小写,但值内容会区分大小写。如果值内容里包含空格,可以将他们括在双引号"中。可用的关键字及其描述如下:

快速查看当前配置文件

cat /etc/tinyproxy/tinyproxy.conf | grep -v '#' | grep -v '^$'

打开配置文件

vim /etc/tinyproxy/tinyproxy.conf

下面我们来看下几个主要的配置参数:

变量默认值解释
Usertinyproxy指定运行 TinyProxy 的用户。可以填用户名或UID。
Grouptinyproxy指定运行 TinyProxy 的用户组。可以填用户名或UID。
Port8888指定 TinyProxy 的监听端口。Tinyproxy服务将侦听的端口。如果端口小于 1024,则需要以 root 用户的身份启动 Tinyproxy 进程。
Listen指定 TinyProxy 绑定的网卡接口,默认是绑定到所有可用的网卡接口的。如需绑定到指定网卡接口,只需去掉对应的注释并指定网卡对应 IP 地址即可。在默认情况下,Tinyproxy 会侦听在所有可用接口上的连接(即,侦听地址 0.0.0.0)。通过配置此参数,Tinyproxy 可以被告知仅侦听一个特定地址。
Allow127.0.0.1指定可访问 TinyProxy 设备的 IP 或网段,默认仅允许本机访问。如果你想允许所有人使用该代理,注释 Allow 选项即可。如果你想增加多个可访问的网段,可以用多个 Allow 选项同时定义不同网段即可。
Bind 这允许您指定 Tinyproxy 将绑定到哪个目标地址,以将其连接到Web服务器或上游代理。
BindSame在多网卡的情况下,设置出口 IP 是否与入口 IP 相同。默认情况下是关闭的。
例如:服务器上存在 IP 1.2.3.4,当你请求该 IP 对应的 Tinyproxy 代理时,也通过 1.2.3.4 做为出口访问目标网站。如果此布尔值选项被设置为 Yes,Tinyproxy 会将目标地址设定为触发了传出请求的传入连接的IP地址。
Timeout600Tinyproxy关闭连接之前,允许该连接处于非活动状态的最大秒数。
StartServers10指定 TinyProxy 初始启动的子进程数量。一般应将其设置为位于 MinSpareServers和 MaxSpareServers 之间的值。
MinSpareServers, MaxSpareServers5, 20Tinyproxy 始终保留一定数量的空闲子进程,以保证它可以快速处理新传入的客户端请求。 MinSpareServer 和 MaxSpareServers 控制备用进程数的最大值和最小值。即,当备用服务器的数量降至 MinSpareServers以下时,Tinyproxy 将在后台开始创建新的备用进程,而当备用进程的数量超过 MaxSpareServers 时,Tinyproxy 将杀死多余的进程
MaxClients100设置最大客户端链接数
MaxRequestsPerChild 此选项限制一个子进程在终止之前将会处理的最大连接数。 默认值为0,即无限制。此选项是在出现内存泄漏问题时可采取的紧急措施。 在这种情况下,请将 MaxRequestsPerChild 设置为例如1000 或 10000,可能会有用。
Upstream,No Upstream 该选项允许您设置一组基于所访问站点主机或域的规则,来选择是否使用某些上游代理服务器。这些规则按照在配置文件中录入的顺序存储,并且在使用时 最后一条 所匹配的规则会生效。有以下三种指定上游主机的方式:

upstream host:port 开启一个常规形式的上游代理
upstream host:port "site_spec" 为匹配 site_spec 的站点启用上游代理
no upstream "site_spec" 为匹配 site_spec 的站点禁用上游代理

匹配可以用主机名、域名、IP范围等形式来指定:
.name 匹配任何在域 name 中的主机
. 匹配任何无域名的主机(在空域名中)
IP/bits 匹配IP地址/掩码位数
IP/mask 匹配IP地址/掩码
Allow, Deny Allow和Deny选项用于自定义允许哪些客户端访问Tinyproxy。 Allow和Deny行可以在配置文件里重复出现,以构建Tinyproxy的访问控制列表。在配置文件中的顺序很重要。 如果没有 Allow 或 Deny 行,则允许任意的客户端。反之,默认的操作是拒绝访问。 允许或拒绝的参数可以配置为客户端主机的单个IP地址,例如 127.0.0.1,IP地址范围,例如 192.168.0.1/24,或将与客户端主机名尾端匹配的字符串, 可以是完整的主机名,例如 host.example.com,或域名,例如.example.com,或者顶级域名,例如.com。
XTinyproxy 将此选项设置为Yes将通知Tinyproxy将包含客户端IP地址的标头X-Tinyproxy添加到请求中。

进阶选项

Filter/etc/ tinyproxy/ filter指定设置过滤内容文件的位置
FilterURLsOff/On设置使用 URL 或是域名方式进行过滤,默认是基于 URL 方式过滤的。域名过滤只检查域名段,URL 过滤则检查整个 URL。
FilterExtendedOff/On设置使用 POSIX 基本或者扩展的正则表达式来匹配过滤规则,默认为使用基本的
FilterCaseSensitiveOff/On设置是否使用区分大小写的正则表达式,默认为不区分大小写。
FilterDefaultDenyYes/No设置默认过滤策略。如果将该指令注释掉或设为 No,过滤规则为禁止访问规则。该值默认为 Yes,过滤规则为只允许访问过滤文件中的地址。
过滤规则配置示例:

1. 在 /etc/tinyproxy/filter 文件中添加代理允许或拒绝的域名地址。

hi-linux.com
过滤文件中的域名地址也是支持正则表达式的。

\.google\.com$</br>^hi-linux\.com$
2. 仅允许代理请求 hi-linux.com 的内容,配置如下:

Filter "/etc/tinyproxy/filter"
FilterURLs On
FilterDefaultDeny Yes
3. 仅允许代理请求除 hi-linux.com 域名以外的内容,
置如下:

Filter "/etc/tinyproxy/filter"
FilterURLs On
FilterDefaultDeny No
DefaultErrorFile"/usr/share/ tinyproxy/ default.html"该选项控制如果发生未配置的错误时,返回的HTML模板文件。
ErrorFile 该选项控制 Tinyproxy 如果遇到特定的HTTP错误时,会返回哪个HTML文件。它包含两个参数,错误号、HTML错误文件的路径。
StatHost 该选项配置被当作统计主机的主机名或者IP地址:每当收到对该主机的请求时,Tinyproxy 会返回内部统计信息页面,而不会将请求转发给该主机。此页面的模板可以使用 StatFile 配置项进行配置。StatHost 的默认值为 tinyproxy.stats。
StatFile"/usr/share/ tinyproxy/ stats.html"该选项配置 Tinyproxy 在收到对统计主机的请求时发送的HTML文件。如果未设置此选项,Tinyproxy 将返回一个硬编码的基本统计信息页面。有关详细信息,请参见 tinyproxy(8) 手册页中的 STATHOST 部分。需要注意的是,使用StatFile 以及 ErrorFile 和 DefaultErrorFile 选项配置的错误文件都是模板文件,其中可以包含一些模板变量,并由 Tinyproxy 在发送时进行扩展。例如,"{cause}" 表示简短的错误描述,"{detail}"表示详细的错误消息。tinyproxy(8) 手册页包含所有模板变量的描述。
LogLevelInfo设置日志级别。高于或等于该设置项级别的日志消息会被记录。例如,如果LogLevel设为 Warning,则从Warning到Critical级别的所有日志消息会被输出,但Notice或更低等级的日志消息会被过滤掉。允许的取值如下:

Critical(最简洁)
Error
Warning
Notice
Connect(不包含Info的连接日志)
Info(最详细)
LogFile/var/log/ tinyproxy/ tinyproxy.log指定日志文件位置。该选项控制 Tinyproxy 将调试输出写入文件的位置。 此外,Tinyproxy 可以将日志输出到syslog - 请参阅 Syslog 选项。
SyslogOff/On指定 TinyProxy 是否开启 Syslog 来记录日志
注:Logfile 和 Syslog 只能同时启用一个。如果两个都不启用的话 TinyProxy 会将日志直接输出到终端的标准输出。当设为 On 时,此选项告知 Tinyproxy 将其调试消息写入syslog,而不是写入由 LogFile 所配置的日志文件。这两个选项是互斥的。
PidFile/var/run/ tinyproxy/ tinyproxy.pid指定 Pid 文件位置, 在 PidFile 文件不存在时会运行失败。该选项控制 Tinyproxy 主进程将其进程 ID 号存入的文件路径,用于处理信号。
DisableViaHeader关闭指定是否在 Header 中显示 Tinyproxy 相关信息,默认是关闭的。如果开启将不会在 Header 中显示 Tinyproxy 相关信息,相当于 Tinyproxy 是隐身模式
AddHeader 配置一个或多个 HTTP 请求标头,用于添加到由 Tinyproxy 发出的 HTTP 请求中。 需要注意的是,此选项不适用于 HTTPS 流量,因为 Tinyproxy 无法控制要交换的标头。
AddHeader "X-My-Header" "Powered by Tinyproxy"
ViaProxyName"tinyproxy"RFC 2616 要求代理将 Via 标头添加到 HTTP 请求中,但使用真实主机名可能会引起安全问题。 如果设置了 ViaProxyName 选项,其字符串值将用作 Via 标头中的主机名。 否则,将使用服务器的主机名。
DisableViaHeaderNo/Yes该选项设置为 yes 时,Tinyproxy 不会将 Via 标头添加到请求中。 这实际上就使 Tinyproxy 进入了隐身模式。请注意,RFC 2616 要求代理设置 Via 头,因此启用此选项会破坏合规性。 除非您知道自己在做什么,否则不要禁用 Via 标头...
Filter Tinyproxy 支持基于 URL 或域的网站过滤。 此选项指定包含过滤规则的文件的位置,每行一条规则。
FilterURLs 如果此布尔选项设置为 Yes 或 On,则根据 URL 执行过滤,而不根据域执行过滤。默认设置为根据域进行过滤。
FilterExtended 如果此布尔选项设置为 Yes,则扩展的 POSIX 正则表达式将用来匹配过滤器规则。默认使用基本 POSIX 正则表达式。
FilterCaseSensitive 如果此布尔选项设置为 Yes,则过滤器规则匹配时会区分大小写。 默认匹配时不区分大小写。
FilterDefaultDeny 默认的过滤策略会允许所有与过滤规则不匹配的内容。 将 FilterDefaultDeny 设置为 Yes 会更改该策略,从而拒绝在过滤规则所匹配的域或URL之外的任何内容。
Anonymous 如果设置了 Anonymous 选项,则启用匿名代理。由 Anonymous 配置的标头被允许通过,其他标头会被拒绝。 如果未配置 Anonymous 选项,则允许所有标头通过。您必须给标头内容加上引号。
大多数站点都需要启用 cookie 才能正常工作,因此,如果您访问这种站点,需要允许 cookie 通过。
用法举例:

Anonymous "Host"
Anonymous "Authorization"
Anonymous "Cookie"
ConnectPort443,563此选项用于指定 CONNECT 方法所允许的端口。 如果找不到 ConnectPort 行,则允许所有端口。若要完全禁用 CONNECT,请仅设置一条值为 0 的 ConnectPort 选项行。
ReversePath 配置一条或多条 ReversePath 选项,以启用反向代理支持。 使用反向代理,可以使许多站点看起来像是单个站点的一部分。
配置以下指令,并在自己的计算机上的端口 8888上运行 Tinyproxy,则可以通过 http://localhost:8888/example/来访问站点 example.com。
ReversePath "/example/" "http://www.example.com/"
ReverseOnly 当把 Tinyproxy 用作反向代理时,强烈建议将此布尔选项设置为 Yes ,从而关闭普通代理功能。
ReverseMagic 将此选项设置为Yes,可让 Tinyproxy 使用 cookie 来跟踪反向代理的映射。 如果您需要反向具有绝对链接的代理站点,必须启用此选项。
ReverseBaseURL 用于访问此反向代理的URL地址。 该 URL 会被用于重写 HTTP 重定向地址,以使它们不会绕过代理。 如果您有一连串的反向代理,则需要在此处放置最外层的 URL(也就是终端用户在其浏览器中键入的地址)。如果未设置此选项,则不会修改重定向。

运行和测试

  • 运行 TinyProxy 非常简单,使用官方提供的脚本即可。
# 启动 TinyProxy
service tinyproxy start

# 停止 TinyProxy
service tinyproxy stop

# 重启 TinyProxy
service tinyproxy restart
  • 如果服务器有启用防火墙,记得开放相应的 TinyProxy 端口

    iptables -I INPUT -p tcp –dport 8888 -j ACCEPT
  • 测试代理是否正常工作

使用curl命令测试代理服务器是否生效

curl url --proxy <代理服务器域名或 IP>:<监听端口>

如果是https代理加 -k 参数

curl url --proxy <代理服务器域名或 IP>:<监听端口> -k

例如

curl url --proxy 8.8.8.8:8888

或使用 telnet 命令

telent <代理服务器域名或 IP> 8888
  • 查看 TinyProxy 请求日志
tail -f /var/log/tinyproxy/tinyproxy.log

FAQ

time out(超时)可能是因为服务器的防火墙没有打开这个端口
Ubuntu 防火墙操作看[这篇]()
连接上了但是被 reject(拒绝)了可能是因为 tinyproxy 没有允许你正在使用的这台电脑或是服务器的 ip

firewall-cmd --add-port=8888/tcp --permanent
firewall-cmd --reload

uwp

iptables

支持

您可以随时通过 github issues 来报告新 bug,或提出功能建议。
Tinyproxy 的开发者们也会浏览在 irc.freenode.net 上的 #tinyproxy 标签。

实践

[如何连接代理服务器]()

qqbot 代理文件服务下载

代理访问掩藏真实 ip

参考

https://tinyproxy.github.io/
https://github.com/tinyproxy/tinyproxy
https://www.cnblogs.com/daoyi/p/bu-shutinyproxy-tou-ming-dai-li-fu-wu.html
https://blog.csdn.net/testcs_dn/article/details/89335426
https://java-er.com/blog/tinyproxy-install/
https://www.cnblogs.com/masako/p/11459496.html
https://cloud.tencent.com/developer/article/1475747
https://www.jianshu.com/p/cfef3e491b52
https://www.jianshu.com/p/0f8ac701748d
https://www.cnblogs.com/masako/p/11459496.html
https://zhuanlan.zhihu.com/p/72903589

五子棋^[wǔ zǐ qí] (两人对弈的策略型棋类游戏)

五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。
有两种玩法。玩法一:双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。
玩法二:自己形成五子连线就替换对方任意一枚棋子。被替换的棋子可以和对方交换棋子。最后以先出完所有棋子的一方为胜。
五子棋的棋具与围棋通用,是一种的传统黑白棋种。围棋主要流行于东亚以及欧洲的一些国家。
五子棋容易上手,老少皆宜,而且趣味横生,引人入胜;它不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋已在各个游戏平台有应用。

中文名五子棋
外文名Gomoku
五目並べ
类别棋类游戏
游戏人数2人
使用物品棋盘、棋子、棋钟棋 盘15道盘
棋子黑白棋子起源地区东亚地区
流行地区东亚、欧洲
性质全国智力运动会竞技项目

[TOC]

称谓

五子棋,日文亦有连五子、五子连、串珠、五目、五目碰、五格、五石、五法、五联、京棋等多种称谓;英文则称之为FIR(Five In A Row的缩写)、Gomoku(日语“五目”的罗马拼音)、Gobang、connect 5、mo-rphion等;捷克文piskvorky,韩文omok等等。
许多国家的人对五子棋都有不同的爱称,例如,韩国人把五子棋称为“情侣棋”,表示情人之间下五子棋有利于增加情感的交流;欧洲人称其为“绅士棋”,代表下五子棋的君子风度胜似绅士;日本人则称其为“中老年棋”,说明五子棋适合中老年人的生理特点和思维方式。

历史沿革

发展

针对先行必胜的改革

随着五子棋的发展,逐步发现先行优势非常大,最后得出“先行必胜”。五子棋要成为竞技运动,核心问题是怎样解决传统五子棋下法中“先行必胜”的问题。
“竞技五子棋”就是参赛双方以棋盘和棋子为介体,进行智力性对抗的竞技体育项目。

  • “交换”思维
    “交换”思维有个形象的比喻:一个人切蛋糕,一个人选蛋糕。即:一人开局,另一人选择黑方还是白方。此方法最为公平、最有效率,且最为简洁实用。不过此方法使开局者不走已知的必胜,把棋艺的较量演化为对局者开局的博弈,而“必胜开局”依然存在。
    如:欧洲的Swap2、Swap1;中国的Swap3、一手交换规则等。
  • “禁手”思维
    禁止以某种手段取胜。为了平衡先后手之间的差距,削弱先手优势,日本连珠提出“禁手”。后来连珠的发展证明禁手并不能平衡先后手之间的差距,依然是“先行必胜”。
  • “泡沫”原理
    像泡沫一样会破灭。如“吃子”五子棋。连成5个后消失,同时拿掉对方一个棋子,自己再补一子。此原理的的特点是:把五子棋金球制改成了“进球制”,同时也最大效率地利用了棋盘和棋子,带来了全新的思维。问题是怎样计算胜负。
  • “井字游戏”原理
    井字游戏又叫圈叉棋,圈叉棋是和棋,原因是空间很小。
    通过缩小棋盘来抑制五子棋先行的优势。如:15路棋盘,13路棋盘等等。问题是多大的棋盘才能是和棋,知道和棋后还能成为竞技运动吗。
  • “跷跷板”原理
    五子棋始终是先行领先一子。如果双方轮流领先一子呢?
    台湾教授发明的六子棋,就如“跷跷板”一样。先行先下一子,然后双方轮流下两子,先连成6子者胜利。六子棋为第11届奥林匹亚计算机游戏程序竞赛项目,验证其公平性与复杂性。
  • “连珠棋”原理
    “禁手”思维+“交换”思维+“井字游戏”原理=连珠
    如:RIF 规则、Sakata 规则、Yamaguchi 规则、Tarannikov 规则等。

现状

五子棋、六子棋、连珠已经成为欧洲现代五子棋的组成部分,举行了很多次大大小小的比赛,并且将三种棋的世界锦标赛联合举行。
中国的现代五子棋还处于起步阶段。2003年中国棋院《中国五子棋竞赛规则》参考了RIF规则,同时兼顾发展传统五子棋。
棋具编辑

棋盘

棋盘(2张)

棋盘可用木料、硬纸、塑料、布料、石料或环保材料等制成。棋盘由横纵各15条等距离,垂直交叉的平行线构成,在棋盘上,横纵线交叉形成了225个交叉点为对弈时的落子点。邻近两个交叉点的距离要略大于棋子的直径,纵线距离约为2.5厘米,横线约为2.4厘米。

以对局开始时的黑方为准,棋盘上的纵行线从近到远用阿拉伯数字1—15标记,横行线从左到右用英文字母A—O按字母顺序标记。由于每个英文字母都对应着一条纵线,每个阿拉伯数字都对应着一条横线,所以,棋盘上的每一个交叉点都可用英文字母和阿拉伯数字的组合来标示出来。在标示各点时,要将英文字母放在前边,阿拉伯数字放在后边。如“L6”“F4”等,不可以标示成“6L”“4F”。
在棋盘上有5个比较特殊的交叉点,用直径约为0.5厘米的,和棋盘横纵线颜色相同的实心小圆点标示出来,这5个点称为“星”。中间的星也称天元,位置在H8,表示棋盘的正中心。其他4个星,也叫小星,分别在D12、L12、D4、L4位置。星在棋盘上起标示位置的作用,利于在行棋、复盘、记录等时,更清晰、迅速地找到所需位置。

棋子

棋子分黑白两色。棋子形状为扁圆形,有一面凸起或两面凸起均可。棋子厚度一般不超过0.8厘米,直径应比棋盘上邻近点间的距离略小些,以免影响在棋盘上的行棋。以2.0—2.3厘米为宜。
平时下棋,棋子数量不限,以下棋时够用为准。正规的标准数一般定为黑子113枚,白子112枚。
棋子材质,重量不限。但以硬质,不易磨损,且放在棋盘上具有一定稳定性为好。
棋具,主要指上面论述的棋盘和棋子,有了这两样,开始下棋已够用了。

谱纸

谱纸也可称记谱纸,顾名思义,它是用来记录对局或着法时所用的稿纸,主要用在比赛或练习时,记录对局双方行棋顺序和位置的专用纸。谱纸的图形应是按比例缩小的棋盘图形。

棋钟

棋钟是在练习或比赛时,计算棋类对局双方时间的专用钟。棋钟分机械钟和电子钟等,均能用倒计时的方法,准确地分别显示出对局双方采用时限减去自己累计用时所剩余的时间。棋钟要求尽量避免刺眼,运行时声响应很低弱或无声。

规则

(1)对局双方各执一色棋子。
(2)空棋盘开局。
(3)黑先、白后,交替下子,每次只能下一子。
(4)棋子下在棋盘的空白点上,棋子下定后,不得向其它点移动,不得从棋盘上拿掉或拿起另落别处。
(5)黑方的第一枚棋子可下在棋盘任意交叉点上。
(6)轮流下子是双方的权利,但允许任何一方放弃下子权(即:PASS权)。
五子棋对局,执行黑方指定开局、三手可交换、五手两打的规定。整个对局过程中黑方有禁手,白方无禁手。黑方禁手有三三禁手、四四禁手和长连禁手三种。 [1]

段级位制

中国五子棋段级位制(试行)(具体内容见参考资料)
五子棋的段级位对象:参加中国棋院认可的国内外五子棋比赛的五子棋爱好者。
第四条段位共分九个等级,最高是九段,以下分别是八段、七段、六段、五段、四段、三段、二段、初段。段位以下共分十个等级,最高是一级,以下分别是二级、三级、四级、五级、六级、七级、八级、九级、十级。
第五条根据中国五子棋爱好者在国内、国际交流中所体现出来的实际水平,在五子棋段级位制度实施初期,对爱好者授予的最高段位暂定为六段。随着中国棋手参与国内外交流机会的增加和技术水平的提高,逐步增加所授予段位的上限,直至九段。
在中国,获得段级位的主要渠道是通过比赛。在全国五子棋邀请赛等国内大赛中获得一定名次,即可获得相应段位。
(相关规定见参考资料)

术语

对局语

〖黑方〗执黑棋一方的简称。
〖白方〗执白棋一方的简称。
〖胜局〗有一方获胜的对局。
〖和局〗分不出胜负的对局。
〖终局〗对局结束。
〖复盘〗对局双方将本盘对局全过程的再现。

行棋语

〖阳线〗即:直线,棋盘上可见的横纵直线。
〖交叉点〗阳线垂直相交的点,简称“点”。
〖阴线〗即:斜线,由交叉点构成的与阳线成45°夹角的隐形斜线。
〖落子〗棋子直接落于棋盘的空白交叉点上。
〖轮走方〗即“行棋方”,有权利落子的黑方或白方。
〖着〗在对局过程中,行棋方把棋子落在棋盘无子的点上,不论落子的手是否脱离棋子,均被视为一着。
〖回合〗双方各走一着,称为一个回合。
〖开局〗在对局开始阶段形成的布局。
〖连〗同色棋子在一条阳线或阴线上相邻成一排。
〖长连〗五枚以上同色棋子在一条阳线或阴线上相邻成一排。是禁手的一种。
〖五连〗只有五枚同色棋子在一条阳线或阴线上相邻成一排。
〖成五〗一般包括五连和长连,指含有五枚同色棋子所形成的连;在有禁手规则中,黑方形成长连不称为“成五”。
〖四〗在一条阳线或阴线上连续相邻的5个点上只有四枚同色棋子的棋型。
〖活四〗有两个点可以成五的四。
〖冲四〗只有一个点可以成五的四。
〖死四〗不能成五的四。
〖三〗在一条阳线或阴线上连续相邻的5个点上只有三枚同色棋子的棋型。
〖活三〗再走一着可以形成活四的三。
〖连活三〗连续、中间不隔空点的活三(同色棋子在一条阳线或阴线上相邻成一排的活三)。简称“连三”。
〖跳活三〗中间隔有一个空点的活三。简称“跳三”。
〖眠三〗再走一着可以形成冲四的三。
〖死三〗不能成五的三。
〖二〗在一条阳线或阴线上连续相邻的5个点上只有两枚同色棋子的棋型。
〖活二〗再走一着可以形成活三的二。
〖连活二〗连续、中间不隔空点的活二(同色棋子在一条阳线或阴线上相邻成一排的活二)。简称“连二”。
〖跳活二〗中间隔有一个空点的活二。简称“跳二”。
〖大跳活二〗中间隔有两个空点的活二。简称“大跳二”。
〖眠二〗再走一着可以形成眠三的二。
〖死二〗不能成五的二。
〖先手〗对方必须应答的着法,相对于先手而言,冲四称为“绝对先手”。
〖三三〗一子落下同时形成两个活三。也称“双三”或“双活三”。是禁手的一种。
〖四四〗一子落下同时形成两个冲四。也称“双四”。是禁手的一种。
〖四三〗一子落下同时形成一个冲四和一个活三。
〖做杀〗落下一子,使己方下一手可以形成双三、双四、四三等杀法。
〖禁手〗部分规则中为削弱黑方先行优势而禁止其使用的战术,包括双三、双四、长连。白方无禁手。
〖禁手点〗黑方禁手的点。

战术语

〖VCT〗英文Victory by Continuous Threat的缩写,即通过连续不断的冲四、活三、做杀等先手进攻取得胜利。
〖VCF〗英文Victory of Continuous Four的缩写,即以连续不断的冲四取得胜利。又称“追四”。
〖风车轮〗指在一定区域内来回地绕着连续进攻的战术或技巧,就像一个风车轮一直在转着似的,这样的取胜方法也称之为“风车胜”。
〖二头蛇〗指某一方以活三进攻时,无论对方防守于哪一头都难免被蛇头咬伤,因为此时的活三如同二头蛇一样,两头都有厉害的杀招。也称“两头蛇”。
〖一子双杀〗一子落下,同时形成两种取胜方法。
〖一子双防〗一子落下,同时防守两种取胜方法。
〖八卦阵〗以“日”字的一组对角点为棋型,互为马步的防守阵型。
〖抓禁手〗有禁手规则中,白方通过冲四等手段迫使黑方在禁手点落子的取胜方法。也称“追下取胜”。

比赛语

〖个人赛〗计算个人成绩的比赛。
〖团体赛〗计算运动队团体成绩的比赛。
〖轮空〗赛制中部分选手直接从中间某轮开始参加比赛,某轮未比赛的安排就叫轮空。
〖节〗一个比较集中的比赛单位时间(如一个上午或一个下午或一个晚上)称一“节”。
〖轮〗参赛的各队(团体赛)或各名棋手(个人赛)普遍出场比赛一次(个别轮空者除外)称一“轮”。
〖次〗团体赛中的同一轮两队之间完成的比赛称为一“次”比赛。
〖场〗两名棋手之间完成的两局制或多局制的一次比赛称为一“场”比赛。
〖局〗两名棋手之间完成的一盘比赛称为一“局”比赛。

技巧

五子兵法

中国现代五子棋的开拓者那威荣誉九段,多年钻研五子棋,潜心发掘五子棋的中国民间阵法,他总结了五子棋行棋的要领和临阵对局的经验,得出一套“秘诀”,谓之《那氏五子兵法》:

先手要攻,后手要守,以攻为守,以守待攻。
攻守转换,慎思变化,先行争夺,地破天惊。
守取外势,攻聚内力,八卦易守,成角易攻。
阻断分隔,稳如泰山,不思争先,胜如登天。
初盘争二,终局抢三,留三不冲,变化万千。
多个先手,细算次先,五子要点,次序在前。
斜线为阴,直线为阳,阴阳结合,防不胜防。
连三连四,易见为明,跳三跳四,暗剑深藏。
己落一子,敌增一兵,攻其要点,守其必争。
势已形成,败即降临,五子精华,一子输赢。

基本技巧

一、四种摆放(形象的叫法):

二、最常见的取胜法:一子双杀,既落下一个子,同时形成两条棋路,使对手封住一条,就来不及封住另一条,从而取胜。
三、不堵情况下,一子双杀的十大基本棋路:
两头空
边二空
跳二空
中二空
两头空
图1
图2
图3
图4
边二空
图2
图5
图6
图7
跳二空
图3
图6
图8
图9
中二空
图4
图7
图9
图10
图示说明:

圆形图标:表示已经落下的棋子。
十字图标:之后落下的棋子,同时形成两条棋路,使对手堵住其中一路,就来不及去堵另一路。
图1:两头空-两头空

图2:两头空-边二空

图3:两头空-跳二空

图4:两头空-中二空

图5:边二空-边二空

图6:边二空-跳二空

图7:边二空-中二空

图8:跳二空-跳二空

图9:跳二空-中二空

图10:中二空-中二空

四、一头被堵情况下,一子双杀的八大基本棋路。
一头被堵情况下,落下一个子,形成两条棋路,使一头被堵的那条棋路形成四个连子,没有被堵的那条棋路,形成三个子的棋路,可以是两头空、边二空、跳二空、中二空,从而使对手堵住一路,就来不及堵另一路。
两头空
边二空
跳二空
中二空
内插连四
图1
图2
图3
图4
外插连四
图5
图6
图7
图8
分为两种情况:
1.从被堵棋路的内部形成四颗子:
图1:内插连四-两头空

图2:内插连四-边二空

图3:内插连四-跳二空

图4:内插连四-中二空

2.从被堵棋路的外部形成四颗子:
图5:外插连四-两头空

图6:外插连四-边二空

图7:外插连四-跳二空

图8:外插连四-中二空

开局技巧

五子棋的开局也称布局,一般在3至7手左右完成。五子棋的开局是十分重要的。一般情况下,一局五子棋的着数在20至40着之间,因此,它的开局阶段是非常短暂的,大约在七八着至十几着之间。在这一阶段的争夺中,双方的布局、应答将对以后的胜负起着关键的作用。一般来说,黑棋以攻为主,而白棋则以防为主。

直止打法开局

在开局阶段,双方主要是二的争夺。双方必须设法创造自己的连二、活二、跳二或大跳二等,同时要阻挡对方的活二。无论哪种开局,均体现出这一规律。
可以说,哪一方的二做得多(有两个以上的活二),或者有效地阻挡住对方的活二,那么,哪一方的胜率就比较大。另外,开局时每一个次序、每一种节奏都不能忽视,输赢就在一步之差。
为了便于记忆、区分以及比赛。只对前3步组成的棋形进行了部分取名。
比赛中的开局
开局形状均以“星”和“月”命名。(参考资料中“第三条”)

斜止打法开局

全国正式比赛均采用26种开局,包括斜指开局的长星局、峡月局、恒星局、水月局、流星局、云月局、浦月局、岚月局、银月局、明星局、斜月局、名月局、慧星局和直指开局的寒星局、溪月局、疏星局、花月局、残月局、雨月局、金星局、松月局、丘月局、新月局、瑞星局、山月局、游星局。
《彭氏口诀》
黑方必负开局
黑方必负开局
二十六局先弃二,直指游星斜慧星。
寒星溪月疏星首,花残二月并白莲,
雨月金星追黑玉,松丘新宵瑞山腥。
星月长峡恒水流,白莲垂俏云浦岚,
黑玉银月倚明星,斜月名月堪称朋。

残局技巧

从取胜的途径来分类,五子棋的残局技巧可分为两类:四三取胜和抓禁手取胜。由这两类技巧又可派生出一子双杀、一子多杀、一子杀禁、VCF、VCT等等精妙的入局方式。

一子双杀

所谓“一子双杀”是指对局中出现一方有两个叫杀点(一般是有两个冲四活三点),而对方无法同时防守的情形。对局中,人们往往发现,并非每一步棋都必须是先手(特指活三或冲四)才能赢棋。有时候,某一步棋本身并不是先手,但是,有了这步棋,就出现了两个胜点或两种获胜着法,迫使对方来不及防守或无法防守而获胜,这就是“一子双杀”。可以说,“一子双杀”的技巧是五子棋技术的一层新阶梯,如果掌握了这种技巧,就表明了你的五子棋技术已经有一定的水平。

一子双禁

所谓“一子双禁”是指白方利用禁手的规则,通过一着妙棋使黑方陷入同时面临两个禁手点的困境,黑方将无法同时避免两个禁手点的情形。从另一种意义上说,这是白棋的一子双杀。

一杀一禁

所谓“一杀一禁”是指对局中出现白方有两个取胜点,其中一个为冲四活三叫杀,另一个为抓禁手取胜的棋形。

一子多杀

所谓“一子多杀”是指对局中出现一方有两个以上(如三个、四个或五个)的叫杀点,而对方无法同时防守的情形,其实质也是一子双杀。
必胜
所谓“必胜”是指某一方行至某一手后,针对对方以后的每一个防点都有一套或一套以上的胜法的着,比一子多杀的范围广。

必败

所谓“必败”是指某一方行至某一手后,对方针对这一手拥有一套或一套以上的胜法的着。(本来不该录在这一段,但作为术语还是介绍一下)

VCT

所谓VCT是英文Victory by Continuous Threat的缩写,不断利用冲四、活三、做杀等先手进攻最后取得胜利。

VCF

所谓VCF是英文Victory of Continuous Four的缩写,亦称追四,即以连续不断的冲四取得胜利。VCF是五子棋残局和各种排局中一个非常重要的取胜技术。所以,学习并掌握VCF技术是对于提高五子棋爱好者的棋艺水平来说是十分重要的。五子棋排局是人为排列出来的局面习题。
它虽然不是实战对局的产物,但是,其主题的构思往往接近于实战残局;而且,绝大多数是由字、数、形等图案构成的VCF练习题,给人以美的享受及解谜的魅力。精彩的排局和字谜往往构思精到深奥,变化引人入胜。拟制排局和拆解排局有助于锻炼全局观念和残局中攻击点的选择,培养思考和想像能力,有助于提高棋艺水平。

自由取胜

自由取胜,也就是复合取胜或混合取胜,利用一切手段,无论是活三,冲四,还是做杀,抓禁手等等方法,自由取得最后胜利的技术。最常见的自由取胜包括“风车轮”、“二头蛇”等等。
攻防策略
合并图册
下五子棋须得法,法中变化有莫测;五子之变如水势,因势避高而趋下。战不过攻守,法不过奇正,奇正之法:往复循环,“不竭如江海,无穷如天地”。
其详法如下:围、击虚、就实、寡众。
(围)由于五子棋源于围棋,故下五子棋若想立于不败之地,须以围棋之法行棋,说白了就是“包饺子”,试想:如果对方的棋子被围住了,左冲右突都不行,前闯后退更不见效,此时他心理极度郁闷,已无斗志,棋还能下好吗?只能是输的份了!此招用于防守。
(击虚)兵法有云:“避实击虚”,下五子棋之精髓也在其理。不过此举贵在进攻,进攻若能攻其空虚之处,且得法,将会以迅雷不及掩耳之势而破竹将对手击败。此招用于进攻。
(就实)老子《道德经》中讲了万物正反两个方面及消长之理,攻守亦不过如此,故有“避实击虚”则就有“就实让虚”。“就实让虚”就是对方往哪里走棋,咱就往哪里走棋,好比随形附影一般。这招要把握好火候,不能过度也不能失度,因为下棋很容易攻守易势(攻之极乃守时,守之极乃攻时;攻中生守,守中生攻),此招用于防守。
(寡众)《孙子·虚实》中曰:“备前则后寡,备后则前寡,备左则右寡,备右则左寡,无所不备,则无所不寡。”此招用在五子棋中则反其道而行,则会收到意想不到的效果,具体招法是“堵了前面则堵后面,堵了后面则堵前面,堵了左边则堵右边,堵了右边则堵左边”,前后左右四面八方都堵,则对方则无路可逃,无棋可下!此招和(围)连用。无所不胜,用在防守。
另外,有时在有计算的前提下,连续冲三、冲四(vct、vcf)有可能创造新的进攻机会;反之,一味的VC,只能迟滞败亡的步伐,反而使自己被“围”陷入铁桶阵(一般叫马桶阵)中。除了这些外,八卦阵是防守的无二秘宝,只是明八卦太过明显,因此暗八卦(用部分八卦点做主力,少量杂子作障眼)的功底就成了衡量技术的重要指标。
参考【棋经十三篇】

另一种五子棋

农村流传的一种玩法,也叫进猪笼、五马飞、九子棋。一方选石块,一方选树棍。每人九子,五子上阵,四子后备,吃对方一子则添加一子,最后9子围对方一子进侧方猪笼为赢。棋盘为四相连米字格,加侧面一田字格“猪笼”,行棋可直线也可斜线,不限制步数,不能跳过棋子。吃子方式有,夹、挑、双夹、双挑,扫四。能看棋2步为熟练,3步为高手。
夹:两子单独夹住一子,同线上两子外不能有其他子。
挑:一子走入两子中间,同线上两子外不能有其他子。
双夹:走为四子对称夹住一子,同线上四子外不能有其他子。
双挑:一子走入对称四子中间,同线上四子外不能有其他子。
扫四:一子走到连续四子两头,同线上四子外不能有其他子。

2019 年 10 月 26 日,《中华人民共和国密码法》 经第十三届全国人民代表大会常务委员会第十四次会议表决通过。自 2020 年 1 月 1 日起正式施行,标志着我国在密码的应用和管理等方面有了专门性的法律保障。密码法旨在规范密码应用和管理,促进密码事业发展,保障网络与信息安全,提升密码管理科学化、规范化、法治化水平,是中国密码领域的综合性、基础性法律。

《中华人民共和国密码法》 围绕 “怎么用密码、谁来管密码、怎么管密码” ,重点规范了 5 方面 44 条内容。明确立法目的是 “为了规范密码应用和管理,促进密码事业发展,保障网络与信息安全,维护国家安全和社会公共利益,保护公民、法人和其他组织的合法权益”。强调 “坚持党对密码工作的领导”,规定“中央密码工作领导机构对全国密码工作实行统一领导”,国家密码管理部门也就是国家密码管理局负责管理全国的密码工作。

《中华人民共和国密码法》 将密码分为核心密码、普通密码和商用密码三类,实行分类管理。其中核心密码、普通密码用于保护国家秘密信息,属于国家秘密;商用密码用于保护不属于国家秘密的信息,公民、法人和其他组织可以依法使用商用密码保护网络与信息安全。

以下为 《中华人民共和国密码法》 全文:

中华人民共和国密码法

(2019 年 10 月 26 日第十三届全国人民代表大会常务委员会第十四次会议通过)

目录

第一章 总则

第二章 核心密码、普通密码

第三章 商用密码

第四章 法律责任

第五章 附则

第一章 总则

  • 第一条 为了规范密码应用和管理,促进密码事业发展,保障网络与信息安全,维护国家安全和社会公共利益,保护公民、法人和其他组织的合法权益,制定本法。
  • 第二条 本法所称密码,是指采用特定变换的方法对信息等进行加密保护、安全认证的技术、产品和服务。
  • 第三条 密码工作坚持总体国家安全观,遵循统一领导、分级负责,创新发展、服务大局,依法管理、保障安全的原则。
  • 第四条 坚持中国共产党对密码工作的领导。中央密码工作领导机构对全国密码工作实行统一领导,制定国家密码工作重大方针政策,统筹协调国家密码重大事项和重要工作,推进国家密码法治建设。
  • 第五条 国家密码管理部门负责管理全国的密码工作。县级以上地方各级密码管理部门负责管理本行政区域的密码工作。
    国家机关和涉及密码工作的单位在其职责范围内负责本机关、本单位或者本系统的密码工作。
  • 第六条 国家对密码实行分类管理。
    密码分为核心密码、普通密码和商用密码。
  • 第七条 核心密码、普通密码用于保护国家秘密信息,核心密码保护信息的最高密级为绝密级,普通密码保护信息的最高密级为机密级。
    核心密码、普通密码属于国家秘密。密码管理部门依照本法和有关法律、行政法规、国家有关规定对核心密码、普通密码实行严格统一管理。
  • 第八条 商用密码用于保护不属于国家秘密的信息。
    公民、法人和其他组织可以依法使用商用密码保护网络与信息安全。
  • 第九条 国家鼓励和支持密码科学技术研究和应用,依法保护密码领域的知识产权,促进密码科学技术进步和创新。
    国家加强密码人才培养和队伍建设,对在密码工作中作出突出贡献的组织和个人,按照国家有关规定给予表彰和奖励。
  • 第十条 国家采取多种形式加强密码安全教育,将密码安全教育纳入国民教育体系和公务员教育培训体系,增强公民、法人和其他组织的密码安全意识。
  • 第十一条 县级以上人民政府应当将密码工作纳入本级国民经济和社会发展规划,所需经费列入本级财政预算。
  • 第十二条 任何组织或者个人不得窃取他人加密保护的信息或者非法侵入他人的密码保障系统。
    任何组织或者个人不得利用密码从事危害国家安全、社会公共利益、他人合法权益等违法犯罪活动。

    第二章 核心密码、普通密码

  • 第十三条 国家加强核心密码、普通密码的科学规划、管理和使用,加强制度建设,完善管理措施,增强密码安全保障能力。
  • 第十四条 在有线、无线通信中传递的国家秘密信息,以及存储、处理国家秘密信息的信息系统,应当依照法律、行政法规和国家有关规定使用核心密码、普通密码进行加密保护、安全认证。
  • 第十五条 从事核心密码、普通密码科研、生产、服务、检测、装备、使用和销毁等工作的机构(以下统称密码工作机构)应当按照法律、行政法规、国家有关规定以及核心密码、普通密码标准的要求,建立健全安全管理制度,采取严格的保密措施和保密责任制,确保核心密码、普通密码的安全。
  • 第十六条 密码管理部门依法对密码工作机构的核心密码、普通密码工作进行指导、监督和检查,密码工作机构应当配合。
  • 第十七条 密码管理部门根据工作需要会同有关部门建立核心密码、普通密码的安全监测预警、安全风险评估、信息通报、重大事项会商和应急处置等协作机制,确保核心密码、普通密码安全管理的协同联动和有序高效。
    密码工作机构发现核心密码、普通密码泄密或者影响核心密码、普通密码安全的重大问题、风险隐患的,应当立即采取应对措施,并及时向保密行政管理部门、密码管理部门报告,由保密行政管理部门、密码管理部门会同有关部门组织开展调查、处置,并指导有关密码工作机构及时消除安全隐患。
  • 第十八条 国家加强密码工作机构建设,保障其履行工作职责。
    国家建立适应核心密码、普通密码工作需要的人员录用、选调、保密、考核、培训、待遇、奖惩、交流、退出等管理制度。
  • 第十九条 密码管理部门因工作需要,按照国家有关规定,可以提请公安、交通运输、海关等部门对核心密码、普通密码有关物品和人员提供免检等便利,有关部门应当予以协助。
  • 第二十条 密码管理部门和密码工作机构应当建立健全严格的监督和安全审查制度,对其工作人员遵守法律和纪律等情况进行监督,并依法采取必要措施,定期或者不定期组织开展安全审查。

    第三章 商用密码

  • 第二十一条 国家鼓励商用密码技术的研究开发、学术交流、成果转化和推广应用,健全统一、开放、竞争、有序的商用密码市场体系,鼓励和促进商用密码产业发展。
    各级人民政府及其有关部门应当遵循非歧视原则,依法平等对待包括外商投资企业在内的商用密码科研、生产、销售、服务、进出口等单位(以下统称商用密码从业单位)。国家鼓励在外商投资过程中基于自愿原则和商业规则开展商用密码技术合作。行政机关及其工作人员不得利用行政手段强制转让商用密码技术。
    商用密码的科研、生产、销售、服务和进出口,不得损害国家安全、社会公共利益或者他人合法权益。
  • 第二十二条 国家建立和完善商用密码标准体系。
    国务院标准化行政主管部门和国家密码管理部门依据各自职责,组织制定商用密码国家标准、行业标准。
    国家支持社会团体、企业利用自主创新技术制定高于国家标准、行业标准相关技术要求的商用密码团体标准、企业标准。
  • 第二十三条 国家推动参与商用密码国际标准化活动,参与制定商用密码国际标准,推进商用密码中国标准与国外标准之间的转化运用。
    国家鼓励企业、社会团体和教育、科研机构等参与商用密码国际标准化活动。
  • 第二十四条 商用密码从业单位开展商用密码活动,应当符合有关法律、行政法规、商用密码强制性国家标准以及该从业单位公开标准的技术要求。
    国家鼓励商用密码从业单位采用商用密码推荐性国家标准、行业标准,提升商用密码的防护能力,维护用户的合法权益。
  • 第二十五条 国家推进商用密码检测认证体系建设,制定商用密码检测认证技术规范、规则,鼓励商用密码从业单位自愿接受商用密码检测认证,提升市场竞争力。
    商用密码检测、认证机构应当依法取得相关资质,并依照法律、行政法规的规定和商用密码检测认证技术规范、规则开展商用密码检测认证。
    商用密码检测、认证机构应当对其在商用密码检测认证中所知悉的国家秘密和商业秘密承担保密义务。
  • 第二十六条 涉及国家安全、国计民生、社会公共利益的商用密码产品,应当依法列入网络关键设备和网络安全专用产品目录,由具备资格的机构检测认证合格后,方可销售或者提供。商用密码产品检测认证适用《中华人民共和国网络安全法》的有关规定,避免重复检测认证。
    商用密码服务使用网络关键设备和网络安全专用产品的,应当经商用密码认证机构对该商用密码服务认证合格。
  • 第二十七条 法律、行政法规和国家有关规定要求使用商用密码进行保护的关键信息基础设施,其运营者应当使用商用密码进行保护,自行或者委托商用密码检测机构开展商用密码应用安全性评估。商用密码应用安全性评估应当与关键信息基础设施安全检测评估、网络安全等级测评制度相衔接,避免重复评估、测评。
    关键信息基础设施的运营者采购涉及商用密码的网络产品和服务,可能影响国家安全的,应当按照《中华人民共和国网络安全法》的规定,通过国家网信部门会同国家密码管理部门等有关部门组织的国家安全审查。
  • 第二十八条 国务院商务主管部门、国家密码管理部门依法对涉及国家安全、社会公共利益且具有加密保护功能的商用密码实施进口许可,对涉及国家安全、社会公共利益或者中国承担国际义务的商用密码实施出口管制。商用密码进口许可清单和出口管制清单由国务院商务主管部门会同国家密码管理部门和海关总署制定并公布。
    大众消费类产品所采用的商用密码不实行进口许可和出口管制制度。
  • 第二十九条 国家密码管理部门对采用商用密码技术从事电子政务电子认证服务的机构进行认定,会同有关部门负责政务活动中使用电子签名、数据电文的管理。
  • 第三十条 商用密码领域的行业协会等组织依照法律、行政法规及其章程的规定,为商用密码从业单位提供信息、技术、培训等服务,引导和督促商用密码从业单位依法开展商用密码活动,加强行业自律,推动行业诚信建设,促进行业健康发展。
  • 第三十一条 密码管理部门和有关部门建立日常监管和随机抽查相结合的商用密码事中事后监管制度,建立统一的商用密码监督管理信息平台,推进事中事后监管与社会信用体系相衔接,强化商用密码从业单位自律和社会监督。
    密码管理部门和有关部门及其工作人员不得要求商用密码从业单位和商用密码检测、认证机构向其披露源代码等密码相关专有信息,并对其在履行职责中知悉的商业秘密和个人隐私严格保密,不得泄露或者非法向他人提供。

    第四章 法律责任

  • 第三十二条 违反本法第十二条规定,窃取他人加密保护的信息,非法侵入他人的密码保障系统,或者利用密码从事危害国家安全、社会公共利益、他人合法权益等违法活动的,由有关部门依照《中华人民共和国网络安全法》和其他有关法律、行政法规的规定追究法律责任。
  • 第三十三条 违反本法第十四条规定,未按照要求使用核心密码、普通密码的,由密码管理部门责令改正或者停止违法行为,给予警告;情节严重的,由密码管理部门建议有关国家机关、单位对直接负责的主管人员和其他直接责任人员依法给予处分或者处理。
  • 第三十四条 违反本法规定,发生核心密码、普通密码泄密案件的,由保密行政管理部门、密码管理部门建议有关国家机关、单位对直接负责的主管人员和其他直接责任人员依法给予处分或者处理。
    违反本法第十七条第二款规定,发现核心密码、普通密码泄密或者影响核心密码、普通密码安全的重大问题、风险隐患,未立即采取应对措施,或者未及时报告的,由保密行政管理部门、密码管理部门建议有关国家机关、单位对直接负责的主管人员和其他直接责任人员依法给予处分或者处理。
  • 第三十五条 商用密码检测、认证机构违反本法第二十五条第二款、第三款规定开展商用密码检测认证的,由市场监督管理部门会同密码管理部门责令改正或者停止违法行为,给予警告,没收违法所得;违法所得三十万元以上的,可以并处违法所得一倍以上三倍以下罚款;没有违法所得或者违法所得不足三十万元的,可以并处十万元以上三十万元以下罚款;情节严重的,依法吊销相关资质。
  • 第三十六条 违反本法第二十六条规定,销售或者提供未经检测认证或者检测认证不合格的商用密码产品,或者提供未经认证或者认证不合格的商用密码服务的,由市场监督管理部门会同密码管理部门责令改正或者停止违法行为,给予警告,没收违法产品和违法所得;违法所得十万元以上的,可以并处违法所得一倍以上三倍以下罚款;没有违法所得或者违法所得不足十万元的,可以并处三万元以上十万元以下罚款。
  • 第三十七条 关键信息基础设施的运营者违反本法第二十七条第一款规定,未按照要求使用商用密码,或者未按照要求开展商用密码应用安全性评估的,由密码管理部门责令改正,给予警告;拒不改正或者导致危害网络安全等后果的,处十万元以上一百万元以下罚款,对直接负责的主管人员处一万元以上十万元以下罚款。
    关键信息基础设施的运营者违反本法第二十七条第二款规定,使用未经安全审查或者安全审查未通过的产品或者服务的,由有关主管部门责令停止使用,处采购金额一倍以上十倍以下罚款;对直接负责的主管人员和其他直接责任人员处一万元以上十万元以下罚款。
  • 第三十八条 违反本法第二十八条实施进口许可、出口管制的规定,进出口商用密码的,由国务院商务主管部门或者海关依法予以处罚。
  • 第三十九条 违反本法第二十九条规定,未经认定从事电子政务电子认证服务的,由密码管理部门责令改正或者停止违法行为,给予警告,没收违法产品和违法所得;违法所得三十万元以上的,可以并处违法所得一倍以上三倍以下罚款;没有违法所得或者违法所得不足三十万元的,可以并处十万元以上三十万元以下罚款。
  • 第四十条 密码管理部门和有关部门、单位的工作人员在密码工作中滥用职权、玩忽职守、徇私舞弊,或者泄露、非法向他人提供在履行职责中知悉的商业秘密和个人隐私的,依法给予处分。
  • 第四十一条 违反本法规定,构成犯罪的,依法追究刑事责任;给他人造成损害的,依法承担民事责任。

    第五章 附则

  • 第四十二条 国家密码管理部门依照法律、行政法规的规定,制定密码管理规章。
  • 第四十三条 中国人民解放军和中国人民武装警察部队的密码工作管理办法,由中央军事委员会根据本法制定。
  • 第四十四条 本法自 2020 年 1 月 1 日起施行。

参考文档
https://www.williamlong.info/archives/5869.html
http://www.xinhuanet.com/2019-10/26/c_1125156896.htm

程序员升职记

Human Resource Machine

https://steamcommunity.com/sharedfiles/filedetails/?id=550015574
收发室

    INBOX   
    OUTBOX  
    INBOX   
    OUTBOX  
    INBOX   
    OUTBOX  

繁忙的收发室

a:  INBOX   
    OUTBOX  
    JUMP     a
a:  INBOX   
    OUTBOX  
    INBOX   
    OUTBOX  
    JUMP     a

复印楼层

    COPYFROM 4
    OUTBOX  
    COPYFROM 0
    OUTBOX  
    COPYFROM 3
    OUTBOX  

扰码处理器

a:  INBOX   
    COPYTO   0
    INBOX   
    OUTBOX  
    COPYFROM 0
    OUTBOX  
    JUMP     a

咖啡时间
多雨之夏

a:  INBOX   
    COPYTO   0
    INBOX   
    ADD      0
    OUTBOX  
    JUMP     a

零扑灭运动

a:
b:  INBOX   
    JUMPZ    b
    OUTBOX  
    JUMP     a

三倍扩大室

a:  INBOX   
    COPYTO   0
    ADD      0
    ADD      0
    OUTBOX  
    JUMP     a

零保护行动

    JUMP     b
a:  OUTBOX  
b:
c:  INBOX   
    JUMPZ    a
    JUMP     c

八倍扩大装置

a:  INBOX   
    COPYTO   0
    ADD      0
    COPYTO   0
    ADD      0
    COPYTO   0
    ADD      0
    OUTBOX  
    JUMP     a

加运算走廊

a:  INBOX   
    COPYTO   0
    INBOX   
    COPYTO   1
    SUB      0
    OUTBOX  
    COPYFROM 0
    SUB      1
    OUTBOX  
    JUMP     a

四十倍扩大器

a:  INBOX   
    COPYTO   0
    ADD      0
    COPYTO   0
    ADD      0
    COPYTO   0
    ADD      0
    COPYTO   0
    ADD      0
    COPYTO   1
    ADD      0
    ADD      1
    OUTBOX  
    JUMP     a

均衡之间

    JUMP     b
a:  COPYFROM 0
    OUTBOX  
b:
c:  INBOX   
    COPYTO   0
    INBOX   
    SUB      0
    JUMPZ    a
    JUMP     c

最大值室

    JUMP     c
a:  COPYFROM 0
b:  OUTBOX  
c:  INBOX   
    COPYTO   0
    INBOX   
    SUB      0
    JUMPN    a
    ADD      0
    JUMP     b

斗志注入
绝对正能量

    JUMP     c
a:  COPYTO   0
    SUB      0
    SUB      0
b:  OUTBOX  
c:  INBOX   
    JUMPN    a
    JUMP     b

专属休息室

a:
b:  INBOX   
    JUMPN    d
    INBOX   
    JUMPN    e
c:  COPYFROM 4
    OUTBOX  
    JUMP     b
d:  INBOX   
    JUMPN    c
e:  COPYFROM 5
    OUTBOX  
    JUMP     a

海滩天堂
计时器

a:  INBOX   
    COPYTO   0
b:
c:  OUTBOX  
    BUMPDN   0
    JUMPN    d
    JUMP     c
d:  BUMPUP   0
    JUMPZ    a
    BUMPUP   0
    JUMP     b
    JUMP     d
a:
b:
c:  OUTBOX  
d:  INBOX   
    JUMPN    f
    JUMPZ    a
    COPYTO   0
    OUTBOX  
e:  BUMPDN   0
    JUMPZ    c
    OUTBOX  
    JUMP     e
f:  COPYTO   0
    OUTBOX  
g:  BUMPUP   0
    JUMPZ    b
    OUTBOX  
    JUMP     g

乘法研讨会

    JUMP     b
a:  COPYFROM 0
    OUTBOX  
b:  COPYFROM 9
    COPYTO   0
    INBOX   
    COPYTO   1
    INBOX   
    COPYTO   2
c:  JUMPZ    a
    COPYFROM 0
    ADD      1
    COPYTO   0
    BUMPDN   2
    JUMP     c
    BUMPUP   9
    JUMP     k
a:  ADD      1
b:  ADD      1
c:  ADD      1
d:  ADD      1
e:  ADD      1
f:  ADD      1
g:  ADD      1
h:  ADD      1
i:  ADD      1
j:  OUTBOX  
k:  INBOX   
    COPYTO   1
    INBOX   
    JUMPZ    j
    SUB      9
    JUMPZ    i
    SUB      9
    JUMPZ    h
    SUB      9
    JUMPZ    g
    SUB      9
    JUMPZ    f
    SUB      9
    JUMPZ    e
    SUB      9
    JUMPZ    d
    SUB      9
    JUMPZ    c
    SUB      9
    JUMPZ    b
    SUB      9
    JUMP     a

零结尾字符串

    JUMP     c
a:  ADD      0
b:  OUTBOX  
c:  INBOX   
    JUMPZ    b
d:  COPYTO   0
    INBOX   
    JUMPZ    a
    ADD      0
    JUMP     d

斐波那契参上

a:  INBOX   
    COPYTO   0
    COPYFROM 9
    COPYTO   1
    COPYTO   2
    BUMPUP   1
b:  ADD      2
    COPYTO   3
    COPYFROM 0
    SUB      1
    JUMPN    a
    COPYFROM 1
    OUTBOX  
    COPYFROM 1
    COPYTO   2
    COPYFROM 3
    COPYTO   1
    JUMP     b
a:  INBOX   
    COPYTO   0
    COPYFROM 9
    COPYTO   1
    COPYTO   2
    BUMPUP   1
    OUTBOX  
    COPYFROM 1
b:  ADD      2
    COPYTO   3
    COPYFROM 0
    SUB      3
    JUMPN    a
    COPYFROM 3
    OUTBOX  
    COPYFROM 1
    COPYTO   2
    COPYFROM 3
    COPYTO   1
    JUMP     b

最小的数字

    JUMP     b
a:  COPYFROM 0
    OUTBOX  
b:  INBOX   
    JUMP     d
c:  ADD      0
d:  COPYTO   0
e:  INBOX   
    JUMPZ    a
    SUB      0
    JUMPN    c
    JUMP     e

模运算

    JUMP     c
a:  ADD      1
b:  OUTBOX  
c:  INBOX   
    COPYTO   0
    INBOX   
    COPYTO   1
    COPYFROM 0
d:  SUB      1
    JUMPZ    b
    JUMPN    a
    JUMP     d

累加的倒计时

    JUMP     c
a:  COPYFROM 0
b:  OUTBOX  
c:  INBOX   
    JUMPZ    b
    COPYTO   1
d:  COPYTO   0
    BUMPDN   1
    JUMPZ    a
    ADD      0
    JUMP     d

小试除法

    JUMP     b
a:  COPYFROM 3
    OUTBOX  
b:  COPYFROM 9
    COPYTO   3
    INBOX   
    COPYTO   0
    INBOX   
    COPYTO   1
c:  COPYFROM 0
    SUB      1
    JUMPN    a
    COPYTO   0
    BUMPUP   3
    JUMP     c

午夜惊魂
三排序

    JUMP     c
a:  COPYFROM 1
    OUTBOX  
    COPYFROM 2
    OUTBOX  
    COPYFROM 3
    OUTBOX  
    JUMP     h
b:  COPYFROM 3
    OUTBOX  
    COPYFROM 2
    OUTBOX  
    COPYFROM 1
    OUTBOX  
c:
d:
e:
f:
g:
h:
    INBOX   
    COPYTO   1
    INBOX   
    COPYTO   3
    SUB      1
    JUMPN    i
    INBOX   
    COPYTO   2
    SUB      1
    JUMPN    k
    ADD      1
    SUB      3
    JUMPN    a
    COPYFROM 1
    OUTBOX  
    COPYFROM 3
    OUTBOX  
    COPYFROM 2
    OUTBOX  
    JUMP     g
i:  INBOX   
    COPYTO   2
    SUB      3
    JUMPN    j
    ADD      3
    SUB      1
    JUMPN    b
    COPYFROM 3
    OUTBOX  
    COPYFROM 1
    OUTBOX  
    COPYFROM 2
    OUTBOX  
    JUMP     f
j:  ADD      3
    OUTBOX  
    COPYFROM 3
    OUTBOX  
    COPYFROM 1
    OUTBOX  
    JUMP     e
k:  ADD      1
    OUTBOX  
    COPYFROM 1
    OUTBOX  
    COPYFROM 3
    OUTBOX  
    JUMP     d
a:  INBOX   
    COPYTO   0
    INBOX   
    COPYTO   2
    INBOX   
b:  COPYTO   1
    SUB      2
    JUMPN    c
    COPYTO   1
    ADD      2
    COPYTO   2
    SUB      1
    COPYTO   1
c:  COPYFROM 1
    SUB      0
    JUMPN    d
    COPYFROM 0
    OUTBOX  
    COPYFROM 1
    OUTBOX  
    COPYFROM 2
    OUTBOX  
    JUMP     a
d:  COPYTO   1
    ADD      0
    COPYTO   0
    SUB      1
    JUMP     b

存储楼层

a:  NBOX   
    COPYTO   12
    COPYFROM [12]
    OUTBOX  
    JUMP     a

串存储楼层

a:  INBOX   
    COPYTO   24
b:  COPYFROM [24]
    JUMPZ    a
    OUTBOX  
    BUMPUP   24
    JUMP     b

反转字符串

a:
b:  INBOX   
    JUMPZ    c
    COPYTO   [14]
    BUMPUP   14
    JUMP     b
c:
d:  BUMPDN   14
    COPYFROM [14]
    OUTBOX  
    COPYFROM 14
    JUMPZ    a
    JUMP     d

库存报告

    BUMPUP   14
    BUMPUP   14
    COPYTO   15
    ADD      14
    COPYTO   16
    JUMP     d
a:  ADD      16
b:  ADD      14
c:  OUTBOX  
d:  INBOX   
    SUB      4
    JUMPN    a
    JUMPZ    b
    BUMPUP   15
    JUMP     c

王五去哪
删除元音字母

    JUMP     b
a:  COPYFROM 9
    OUTBOX  
b:
c:  INBOX   
    COPYTO   9
    COPYFROM 5
    COPYTO   6
d:  COPYFROM [6]
    JUMPZ    a
    SUB      9
    JUMPZ    c
    BUMPUP   6
    JUMP     d

删除重复项

    INBOX   
    JUMP     b
a:  BUMPUP   14
    COPYFROM 12
b:  COPYTO   [14]
    OUTBOX  
c:  COPYFROM 14
    COPYTO   13
    INBOX   
    COPYTO   12
d:  SUB      [13]
    JUMPZ    c
    BUMPDN   13
    JUMPN    a
    COPYFROM 12
    JUMP     d

字母排序

a:  INBOX   
    COPYTO   [23]
    JUMPZ    b
    BUMPUP   23
    JUMP     a
b:  COPYTO   22
c:  INBOX   
    JUMPZ    h
    COPYTO   20
    SUB      [22]
    JUMPZ    g
    JUMPN    e
d:  COPYFROM [22]
    JUMPZ    i
    OUTBOX  
    BUMPUP   22
    JUMP     d
e:  COPYFROM 20
f:  OUTBOX  
    INBOX   
    JUMPZ    j
    JUMP     f
g:  COPYFROM 20
    OUTBOX  
    BUMPUP   22
    SUB      23
    JUMPN    c
h:
i:
j:

数据链

a:  INBOX   
b:  COPYTO   12
    COPYFROM [12]
    OUTBOX  
    BUMPUP   12
    COPYFROM [12]
    JUMPN    a
    JUMP     b

数位炸弹

-- HUMAN RESOURCE MACHINE PROGRAM --

    COPYFROM 11
    ADD      11
    COPYTO   8
    COPYFROM 10
    ADD      10
    COPYTO   7
    JUMP     e
a:  ADD      10
    JUMPN    b
    COPYTO   0
    BUMPUP   1
b:  COPYFROM 2
    JUMPZ    c
    OUTBOX  
c:  COPYFROM 1
    OUTBOX  
d:  COPYFROM 0
    OUTBOX  
e:  INBOX   
    COPYTO   0
    SUB      10
    JUMPN    d
    COPYFROM 9
    COPYTO   1
    COPYTO   2
f:  COPYFROM 0
    SUB      8
    JUMPN    g
    COPYTO   0
    BUMPUP   2
    BUMPUP   2
    JUMP     f
g:  ADD      11
    JUMPN    h
    COPYTO   0
    BUMPUP   2
h:
i:  COPYFROM 0
    SUB      7
    JUMPN    a
    COPYTO   0
    BUMPUP   1
    BUMPUP   1
    JUMP     i
-- HUMAN RESOURCE MACHINE PROGRAM --

a:  COPYFROM 9
    COPYTO   0
    COPYTO   1
    INBOX   
    COPYTO   8
    SUB      10
    JUMPN    g
    ADD      10
    SUB      11
    JUMPN    d
b:  COPYFROM 8
    SUB      11
    JUMPN    c
    COPYTO   8
    BUMPUP   0
    JUMP     b
c:  COPYFROM 0
    OUTBOX  
d:
e:  COPYFROM 8
    SUB      10
    JUMPN    f
    COPYTO   8
    BUMPUP   1
    JUMP     e
f:  COPYFROM 1
    OUTBOX  
g:  COPYFROM 8
    OUTBOX  
    JUMP     a

重设坐标

    JUMP     b
a:  ADD      15
    OUTBOX  
    COPYFROM 1
    OUTBOX  
b:  COPYFROM 14
    COPYTO   1
    INBOX   
c:  SUB      15
    JUMPN    a
    COPYTO   0
    BUMPUP   1
    COPYFROM 0
    JUMP     c

质数工厂

a:
b:  INBOX   
    COPYTO   10
    COPYFROM 24
    COPYTO   22
    BUMPUP   22
    COPYTO   1
c:  BUMPUP   1
d:  COPYFROM 24
    COPYTO   12
    SUB      10
e:  COPYTO   11
    BUMPUP   12
    COPYFROM 11
    ADD      1
    JUMPN    e
    JUMPZ    f
    BUMPDN   22
    JUMPZ    c
    COPYFROM 10
    OUTBOX  
    JUMP     b
f:  COPYFROM 1
    OUTBOX  
    BUMPDN   12
    JUMPZ    a
    BUMPUP   12
    COPYTO   10
    JUMP     d

排序楼层

    JUMP     b
a:  BUMPUP   24
b:  BUMPDN   24
c:
d:
e:  BUMPUP   24
    COPYTO   22
    COPYTO   21
    INBOX   
    JUMPZ    g
    COPYTO   20
    COPYTO   [22]
    BUMPDN   21
    JUMPN    c
f:  COPYFROM 20
    SUB      [21]
    JUMPN    e
    COPYFROM [21]
    COPYTO   [22]
    COPYFROM 20
    COPYTO   [21]
    BUMPDN   22
    BUMPDN   21
    JUMPN    d
    JUMP     f
g:
h:  BUMPDN   24
    JUMPN    a
    COPYFROM [24]
    OUTBOX  
    JUMP     h

最终程序

成就 1

INBOX   
COPYTO   0
INBOX   
COPYTO   1
SUB      0
OUTBOX  
COPYFROM 0
SUB      1
OUTBOX  
INBOX   
COPYTO   0
INBOX   
COPYTO   1
SUB      0
OUTBOX  
COPYFROM 0
SUB      1
OUTBOX  

INBOX   
COPYTO   0
INBOX   
COPYTO   1
SUB      0
OUTBOX  
COPYFROM 0
SUB      1
OUTBOX  

INBOX   
COPYTO   0
INBOX   
COPYTO   1
SUB      0
OUTBOX  
COPYFROM 0
SUB      1
OUTBOX