你好,我的新名字叫 “铜锁 / Tongsuo”

PostgreSQL国密通信实战:基于铜锁配置TLCP双证书 SSL/TLS协议是保障网络通信安全的基础技术,通过非对称加密、对称加密和哈希算法实现身份认证与数据加密。在金融、政务等对数据安全有严格要求的领域,国密算法(SM2/SM3/SM4)及国密传输协议(TLCP)已成为满足合规要求的重要技术路径。TLCP采用双证书机制,提升了安全性与灵活性。本文聚焦于在PostgreSQL数据库中实现国密通信的工程实践,详细阐述了如何选用铜锁(Tongsuo)作为国密算法库替代OpenSSL,并完成从源码编译、国密双证书生成到服务配置的全过程,为需要在PostgreSQL环境中 阅读详情

文|杨洋(花名:凯申 )

铜锁开源密码库创始人、蚂蚁集团高级技术专家

本文 2816 字,阅读 8 分钟

再见 BabaSSL ,你好 Tongsuo!

BabaSSL 这个名字由于其历史上的若干特殊原因,导致了其看起来是主要 SSL/TLS 协议的密码学产品,这其实并不符合整个产品的功能特性,名字本身也不够中立,这会让用户产生一定程度的误解。

目前 BabaSSL 在积极推进向开放原子开源基金会的捐赠行动,并结合社区未来发展的方向,现决定对 BabaSSL 项目进行更名。新名字需要更加中立化,而且需要体现项目的功能特性。基于这些考虑,计划取新名字为:铜锁,对应拉丁字母名称为铜锁的汉语拼音“Tongsuo”。铜锁是在中华文明 5000 年历史的进程中得到了广泛应用的安全设施,且小巧、设计精妙,极具中国传统特色,符合密码库的产品特色和发展目标。

一、BabaSSL 从何而来,为何而改?

BabaSSL 于 2019 年诞生在蚂蚁和阿里集团内部,是基于 OpenSSL 1.1.1 版本 fork 而来的一个变种版本。创建 BabaSSL 项目的动机是在蚂蚁和阿里内部得到一个统一的 OpenSSL 变种版本,以便使用此统一版本来支撑蚂蚁和阿里内部的各种业务。这样可以减小各个业务方维护 OpenSSL 的成本,实现密码学能力的统一管理和维护,进而降低潜在的安全风险。

针对蚂蚁和阿里内部的业务特点,BabaSSL 需要采用和 OpenSSL 完全不同的发展路线。简单来说,BabaSSL 需要覆盖的场景非常的多样化,包括移动端、服务器端、资源受限的嵌入式环境等。而且在算法和密码学特性的支持上,蚂蚁和阿里的业务对前沿的技术存在较大需求,因此要求 BabaSSL 需要采用相对激进的演进策略,但还要确保很高的质量标准以应对蚂蚁和阿里的业务规模。所以我们当年使用 Brisk and Better Assured Cryptography and SSL/TLS toolkit 来命名这个密码学基础库,并缩写为 BabaSSL。

随着 BabaSSL 项目的发展,我们发现除了蚂蚁和阿里内部的业务对其有着重大的依赖之外,业界也对国密合规和前沿密码学技术存在较大需求。因此在 2020 年 10 月份,我们将 BabaSSL 进行了开源,并维持 BabaSSL 名称不变。随着 BabaSSL 开源社区的发展、用户数量的增多,我们逐渐发现 BabaSSL 这个名称已经无法继续肩负整个社区更大的目标和使命,因此取一个新名字就十分必要。

二、我的新名字——"铜锁/Tongsuo"

经过与开源社区小伙伴们共同探讨,并与开放原子开源基金会沟通后,我们最终选定了 “铜锁/Tongsuo” 作为 BabaSSL 开源项目的新名字,其含义如下:

1.铜锁的设计形象和密码学的锁形象异曲同工,都是保障安全的技术

2.铜锁的历史悠久,应用十分广泛

3.铜锁诞生于中国汉代,流行至明清,极具中国特色,代表了中国的传统文化

4.铜锁设计精妙、体积小巧,安全性高

铜锁的这些特点,符合 BabaSSL 的项目定位和发展目标:适应场景最广、性能最好、可靠性最高且监管合规的开源密码学基础库。正如铜锁是中国 5000 年历史长河中为人民生命财产提供保证的最基础元素,“铜锁密码库”作为信息安全领域基础组件、中国网络空间安全和数据安全的核心基础元素,也希望能为中国人民的信息和财产安全贡献力量。

铜锁的拉丁字母名称则直接采用铜锁的汉语拼音:Tongsuo,除此之外不再赋予其他含义解释,目的是集中体现中国的品牌名称和文化价值。

三、更名后的一系列操作

我们近期会针对 BabaSSL 开源项目进行如下的更名举措,其中部分举措可能会对用户造成影响,需额外注意:

「代码库名称变更」

1.在 Github 上创建新的 Tongsuo 组织,并将 BabaSSL 代码仓库更名为 Tongsuo 后迁移其下;

2.BabaSSL 代码仓库的转地址会在 Github 上自动跳转到新的 Tongsuo 仓库地址,方便已有用户访问;

3.新的 Tongsuo 代码仓库的 master 分支变更为基于 OpenSSL 3.0 代码基础,并整体迁移为 Apache License 2.0 开源许可证。由此进行相关分支变更如下:

a.现有的 master 分支更名为 master-babassl,并设置为只读模式,即不再接受新的代码合并,只留做参考用;

b.将 master-tongsuo 分支更名为 master,作为下个大版本 tongsuo-8.4.0 的开发分支。由于新的 master 分支和旧的 master 分支之间没有代码提交的逻辑关系,因此需要用户手动重新检出新的master 分支并覆盖本地的旧 master 分支内容。在此过程中如果你的本地 master 分支存在代码修改,请注意保存以免代码修改丢失。

「网站改名」

1.启动 http://tongsuo.net 网站,并更新网站内容/品牌;

2.将对 http://babassl.cn 网站的访问重定向到 http://tongsuo.net;

3.新增 http://tongsuo.readthedocs.org 网站,作为铜锁项目的文档库。

「Release 改名和版本策略」

1.在 8.3.x 版本中将沿用 BabaSSL 名称,即 BabaSSL 8.3.1 等后续版本;

2.从 8.4.0 开始更名为 Tongsuo。Tongsuo 延续 BabaSSL 的版本编号,不再重新定义编号。主要是考虑软件版本的升级和比较的前后兼容性问题。新的 release 包名称为:tongsuo-a.b.c.tar.gz 或 tongsuo-a.b.c.zip。

「代码 API 命名修改」

需要考虑兼容问题,因此 BABASSL_ 开头的 API 还需持续保留,直到 9.0 大版本发布。

四、期待与你共“铜”成长

经过这一年的努力,铜锁/Tongsuo 开源密码库项目通过了开放原子开源基金会的 TOC 答辩。接下来我们的重心是继续推进铜锁 8.4.0 版本的研发工作,该版本会在半同态加密算法等前沿密码学领域进行相关特性的大力支持,为铜锁的用户带来隐私计算领域的底层密码学原语能力。

希望能有更多朋友参与进来,与我们共同去完善铜锁/Tongsuo,不论你所处哪一个研究领域,我们都非常期待和欢迎你的加入。此外,我们于近期建立了铜锁(BabaSSL)的开源项目钉钉群,方便铜锁密码库的用户们进行沟通交流,期待着能有更多的社区朋友在铜锁(BabaSSL)共同成长!

钉钉用户交流群群号:44810299

铜锁(BabaSSL)的更名涉及到较多的现有资产名称变更事宜,例如代码库改名、文档内容名称替换等。具体的相关进展和状态,我们会及时在上述钉钉群中向大家通告。

了解更多...

铜锁/Tongsuo Star 一下✨:
https://github.com/BabaSSL/Baba

国密自签名证书实战:SM2双证书、Tongsuo与Tengine配置 国密SSL证书是采用SM2椭圆曲线算法与SM3摘要的X.509证书,其核心在于签名与加密密钥分离的双证书体系。相比RSA证书,国密TLS握手要求签名证书负责身份认证、加密证书完成密钥交换,因此生成与部署都需关注算法OID、扩展字段和套件顺序。自签名方案能以零成本在内网、测试与联调环境中建立信任闭环,适合国密改造、内部HTTPS、中间件验证等场景。围绕Tongsuo工具链、SM2双证书生成、Nginx/Tengine国密配置以及浏览器插件验证,可以把从密钥、证书到握手排错的完整链路跑通,并为后续正式CA签发平 阅读详情

相关推荐

从零构建支持国密SSL与HTTP/2的Curl工具链

本文详细指导如何从零编译构建支持国密SSL与HTTP/2的定制化Curl工具链。通过依次编译安装铜锁(Tongsuo)SSL库、nghttp2库,并应用补丁编译Curl,最终生成一个功能完备的`gmcurl`工具。文章提供了完整的编译步骤、配置参数解析以及关键的测试验证方法,帮助开发者打造适用于国密合规场景的高效网络调试工具。

weixin_28839549的博客 450

TLS 握手带宽直降 80%,BabaSSL 是怎么做到的

文|张成龙(花名:刻一)蚂蚁集团技术专家负责 BabaSSL 密码库产品、OpenSSL 贡献者本文3085字 阅读 5分钟|前言|随着 5G 网络的建设,加速了移动互联网应用的发...

金融级分布式架构 1360

本地语音识别服务国密HTTPS安全部署实战:双证书配置与Nginx优化

HTTPS作为保障网络通信安全的基石,通过TLS/SSL协议对传输数据进行加密,有效防止中间人攻击与数据窃听。其核心原理在于非对称加密握手与对称加密传输的结合,为Web应用提供了身份认证、数据完整性与机密性保障。在数据安全日益受到重视的今天,HTTPS不仅是提升用户体验的技术手段,更是满足合规性要求的必要选择。特别是在涉及敏感数据的本地化部署场景中,如语音识别服务,部署HTTPS能确保音频与文本数据在传输过程中的安全。本文以FireRedASR-AED-L本地语音识别项目为例,深入探讨如何为其配置支持国密算

HJ921004的博客 353

你好,我的新名字叫“铜锁/Tongsuo”

文|杨洋(花名:凯申)铜锁开源密码库创始人蚂蚁集团高级技术专家本文2816字 阅读8分钟再见 BabaSSL ,你好 Tongsuo!BabaSSL 这个名字由于其历史上的若干特殊原因,导致了其看起来是主要 SSL/TLS 协议的密码学产品,这其实并不符合整个产品的功能特性,名字本身也不够中立,这会让用户产生一定程度的误解。目前 BabaSSL 在积极推进向开放...

金融级分布式架构 1039

Netty与Tongsuo深度整合:国密TLCP协议在Java网络通信中的实践指南

本文详细介绍了Netty与Tongsuo深度整合实现国密TLCP协议的实践指南,涵盖国密算法优势、架构设计及完整集成步骤。通过替换Tongsuo密码库并改造Netty的SSL层,开发者可在Java网络通信中高效部署SM2/SM3/SM4国密算法,满足金融、政务等场景的合规要求。文章提供了从环境配置到性能优化的全流程解决方案,帮助开发者快速实现安全、高效的国密通信系统。

weixin_29215815的博客 479

JAVA:实现国密算法(SM2/SM3/SM4)详解与实践

JAVA:实现国密算法(SM2/SM3/SM4)详解与实践

木头 803

Tongsuo学习(一)

可以发现,优化的sm2算法和未优化的sm2算法在签名和验签性能上差别不大,没有达到理论的性能提升。图中,可见在目录中编译了4个文件夹分别为bin,include,lib64,ssl。发现出现报错,这是因为并没有在环境变量中导入openssl的两个共享库。首先解压源码文件,并在进入源码文件的终端,通过如下的代码进行编译。解决之后再次测试,tongsuo二进制程序正确运行,配置成功。, 这里可以根据自己的不同需求去进行安装。从图中可见,该优化特性未被打开。命令,然后编译安装过程同上。配置过程同1,不过加入了。

dwh1094723584的博客 3572

密码学-国密 + TLS 1.3 Rust-Java-Python-Go SDK 一键接入

密码学_国密 + TLS 1.3 Rust_Java_Python_Go SDK 一键接入 项目来自于https://github.com/Tongsuo-Project/Tongsuo,是一个获得星较多的项目。 密码学(Cryptography)是一门**研究如何安全通信**的学科,核心任务可以概括为: > **“让不该看的人看不懂,让该看的人看得懂,并且确保信息在传输、存储过程中不被篡改或否认。”** --- ### 1️⃣ 历史速览 | 时代 | 典型技术 | 特点 | |---|---|---| | 古典 | 凯撒、维吉尼亚 | 替换/移位,靠保密算法 | | 近代 | Enigma | 机械转子,二战实战 | | 现代 | AES、RSA、ECC | 数学难题,算法公开、密钥保密 | --- ### 2️⃣ 三大核心目标 | 术语 | 含义 | 日常例子 | |---|---|---| | **机密性** Confidentiality | 信息不被泄露 | HTTPS 加密网页 | | **完整性** Integrity | 信息不被篡改 | 软件哈希校验 | | **认证/不可否认** Authentication & Non-repudiation | 身份真实 + 事后无法抵赖 | 数字签名合同 | --- ### 3️⃣ 两大算法家族 | 类型 | 代表算法 | 场景 | |---|---|---| | **对称加密**(一把钥匙) | AES、ChaCha20 | 本地盘加密、VPN 流量 | | **非对称加密**(公钥+私钥) | RSA、ECC、SM2 | TLS 握手、数字签名、区块链 | --- ### 4️⃣ 现代密码学工具箱 | 工具 | 作用 | 示例 | |---|---|---| | **哈希** SHA-256

开源项目文档社区化!Tongsuo/铜锁实践

文|杨洋(花名:凯申)铜锁开源密码库创始人蚂蚁集团高级技术专家本文1284字 阅读5分钟1前言如大家所见,针对铜锁开源密码库(https://github.com/Tongsuo-Project)的文档,我们正在逐步地进行一些改革。其中,最大的一个变化是:我们把原来放在 readthedocs.org(简记 rtfd.io)上的教程和说明文档转移到了语雀上。为此有必要和大家解释一下,这其...

金融级分布式架构 1525

机械臂电机力矩计算

设计 6 轴机械臂时,电机力矩计算是确保机械臂负载能力、运动精度和安全性的核心环节,需围绕和两大核心展开,结合机械臂结构参数(如关节长度、质量分布)、负载需求(如末端负载重量、惯性)和运动参数(如加速度、角速度)逐步推导。

ZPC8210的博客 1857

区块链入门:用账本、乐高和三台旧电脑讲懂分布式账本

区块链是一种去中心化的分布式账本技术,其核心原理是通过密码学哈希、共识机制和链式结构实现数据不可篡改与多方共同验证。它不依赖单一中心,而是将交易记录同步复制到多个节点,依靠数学规则而非人工信任达成一致,从而在数字世界构建可验证的信用基础设施。这种‘集体见证’模式显著提升了系统抗单点故障与人为干预的能力,广泛应用于供应链溯源、数字身份、教育管理及公益透明等需强信任保障的场景。本文以账本类比、乐高拆解和Ganache实操为线索,面向零基础读者通俗解析哈希值、挖矿与智能合约等关键概念。

weixin_30517215的博客 274

Tongsuo/铜锁|「开放原子开源基金会」拜访篇

文|杨洋(花名:凯申)铜锁开源密码库创始人蚂蚁集团高级技术专家本文500字 预计阅读时间3分钟2023 年 3 月,铜锁密码学开源项目的研发和运营团队拜访了位于北京的开放原子开源基金会(以下简称基金会),并就 2023 年开源项目运营计划进行了深入沟通。双方同意在项目运营层面展开更加积极的交流,并在 2023 年中对基金会主导的重点工作进行全面共建。铜锁项目团队将积极参与正在推进的“开放...

金融级分布式架构 1003

告别单一帧:在CFD-POST中完整加载Fluent瞬态计算结果的实战指南

本文详细介绍了在CFD-POST中完整加载Fluent瞬态计算结果的实战指南,解决工程师常见的只能看到最后一帧数据的问题。通过Fluent端的正确设置和CFD-POST端的完整加载技巧,帮助用户高效处理瞬态数据,提升后处理效率。文章还提供了常见问题排查、性能优化和高级后处理技巧,适用于Workbench环境下的流体流动分析。

weixin_29284657的博客 540

铜锁/Tongsuo API 参数完全指南:上下文、算法与结果的三步链路和背后约束

如果你要把铜锁/Tongsuo(Tongsuo,一个现代密码学原语与协议库)接入业务代码,最先要回答的问题不是"它支持哪些算法",而是每个 API 参数**怎么传、传多少、有什么约束**。本文以"计算一份 SM3 摘要,再用 AES-GCM 加密传输"这一典型场景为主线,讲清铜锁 API 参数在完整调用链路上的设计:从消息摘要上下文(`EVP_MD_CTX`)的创建,到算法与密钥参数选择,再到数据

gitblog_00862的博客 841

SpringBoot+Vue前后端分离项目实战:个人博客系统

MyBlog主要是基于 SpringBoot + Vue 前后端分离开发的一款动态个人博客系统,后台和前台均通过JSON数据做交互,主要功能有文章管理、分类管理、标签管理、附件管理、评论管理、友链管理、个人资料/博客信息管理等。

Myles'Blog 1万+

低照度与极端天气环境中的YOLOv8优化:CPA-Enhancer网络的应用与分析

为了克服上述问题,本文提出了一种名为的网络改进方案。CPA-Enhancer通过引入链式思考机制和改进的注意力机制,有效地提升了YOLOv8在低照度和复杂天气下的表现。本文提出了针对低照度和恶劣天气条件下目标检测的YOLOv8改进方案——CPA-Enhancer链式思考网络。通过引入低照度图像增强和多尺度特征融合技术,CPA-Enhancer显著提高了YOLOv8在低光照、雾霾、雨雪等环境下的检测性能。实验结果表明,CPA-Enhancer相较于原始YOLOv8,在多个指标上都有显著的提升,尤其是在mAP。

博客 1565

铜锁 Tongsuo API 实操指南:EVP 接口完成哈希、对称与非对称操作的避坑清单

用铜锁 Tongsuo 做密码开发,绕不开的就是 EVP 接口:SM3 做完整性校验、SM4/AES-GCM 做国密对称加密、SM2 做签名。本文按三个真实任务走一遍这些 EVP 接口,把参数怎么选、坑在哪直接讲清楚。 ## SM3 完整性校验:三步走,缓冲区先想清楚 **目标**:给文件或数据块算出一个 SM3 摘要(GB/T 32905-2016,256 位,即 32 字节),后续拿它做比

gitblog_00793的博客 623

2026年数字IC设计紫光展锐笔试带答案解析

本文是一份数字IC设计工程师/芯片验证工程师的笔试样题,包含单选题和多选题两部分。单选题共20题(每题2分),涵盖数字电路、C++/Verilog编程、芯片设计基础等内容,例如D/A转换计算、面向对象编程特性、三极管工作区域、Verilog仿真时间格式等。多选题15题(每题2分),考察Hold违例修复方法、验证方法学等知识点。试卷总分100分,考试时长90分钟,题型设计兼顾基础理论与工程实践,重点测试应聘者对芯片设计核心概念和工具链的掌握程度。部分题目解析详细说明了计算过程或概念原理,如第1题通过二进制转换

Open 111

国密自签名证书生成与 Nginx/Tomcat 部署避坑

在 HTTPS/TLS 中,数字证书承担身份认证与密钥交换信任锚的角色。进入国密体系后,证书不只是更换算法:SM2 公钥、SM2-with-SM3 签名、双证书体系、国密 TLS 协议栈和客户端信任库必须逐层匹配。对等保改造、内网 SM2 证书、国密浏览器对接等场景而言,掌握国密自签名证书生成与部署,意味着能低成本完成自主可控加密通信验证。GmSSL、OpenSSL、Java keytool 等工具在密钥格式、SAN 扩展、证书链和中间件适配上差异明显;从证书生成到 Nginx/Tomcat 挂载,再到客户

weixin_34203832的博客 451

DirectX function “GetDeviceRemovedReason“ failed with DXGI_ERROR_DEVICE_HUNG (“The GPU will not resp

游戏报错"DXGI_ERROR_DEVICE_HUNG"的解决方案 在使用RTX 40系显卡运行FIFA 23等游戏时,可能出现DirectX报错导致游戏崩溃。这主要由于最新显卡驱动与DirectX 12的兼容性问题。解决方法包括: 降级显卡驱动版本 修改游戏配置文件,将DIRECTX_SELECT设为1 在显卡控制面板中关闭垂直同步、抗锯齿、DLSS 3等功能 调整电源模式为性能优先 这些操作可以有效解决因驱动兼容性导致的游戏崩溃问题。

猿小白的博客 3890

YOLOv8改进 | 主干篇 | 利用MobileNetV1替换Backbone(轻量化网络结构)

本文给大家带来的改进机制是MobileNetV1,其是专为移动和嵌入式视觉应用设计的轻量化网络结构。这些模型基于简化的架构,并利用深度可分离卷积构建轻量级深度神经网络,其引入了两个简单的全局超参数,用于在延迟和准确性之间进行有效的权衡。实验表明,MobileNets在资源和准确性的权衡方面表现出色,并在多种应用(如对象检测、细粒度分类、面部属性识别和大规模地理定位)中展现了其有效性,这个模型非常适合轻量化的读者来使用。适用检测目标:轻量化网络结构适合轻量化的读者。

Snu77的博客 3966

Decepticon 红队智能体 Redamon 特性集成解读:AI 攻击面发现、侦察工具链与操作者控制差距分析

> 本文以仓库内 [docs/proposals/redamon-feature-integration.md](https://link.gitcode.com/i/e5e929863620d53294fc5ce98f7538e4) 差距分析文档为骨架,结合当前源码逐项核验落地情况,系统解读 Decepticon 针对开源项目 Redamon 的三大集成主题(AI 攻击面发现、侦察工具深度、操作

gitblog_01082的博客 1080

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Tongsuo 支持半同态加密算法 Paillier

文|王祖熙(花名:金九)蚂蚁集团开发工程师负责国产化密码库 Tongsuo 的开发和维护专注于密码学、高性能网络、网络安全等领域本文4316字 阅读10分钟1. 背景在《Tongsuo 支持半同态加密算法 EC-ElGamal》中,已经阐述了同态和半同态加密算法的背景和原理,可以移步查阅。总之,同态算法在隐私计算领域有着重要的作用,目前应用比较广泛的是 Paillier 和 EC-ElG...

金融级分布式架构 886

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Netty集成国密开源基础密码库Tongsuo

本次完成了Tongsuo TLCP协议的四种国密套件;X86架构的编译。TLSv1.3的TLS_SM4_GCM_SM3套件的支持。ARM架构、PPC架构、Windows的编译。mac系统一般服务器环境没有应用场景,有能力的小伙伴可以帮忙测试一下。时代的车轮在加速的运转,在有限的视野里也要不断地追赶。铜锁开源密码库 · 语雀铜锁/Tongsuo(原BabaSSL)是一个提供现代...https://www.yuque.com/tsdoc。

x1075339587的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Tengine + BabaSSL ,让国密更易用!

文|杨洋(花名:凯申 )蚂蚁集团高级技术专家负责密码学工程能力建设、BabaSSL 开源社区建设本文 2366 字 阅读 5 分钟近日,国内著名 Web 服务器和反向代理开源软件 Tengine完成了对的适配工作。Tengine 对 BabaSSL 提供的特殊 API 进行了适配,并增加对 NTLS 相关能力的支持。至此,对我国密码行业相关安全通信协议,有使用需求的用户可以直接使用 Tengine + BabaSSL 的组合。

程序员阿飘 的博客 768

Tongsuo项目:打造智能合约的安全守护者

是一个专注于智能合约安全审计和防护的开源项目,它以提高区块链应用的安全性为目标,为开发者提供了一套强大的工具和服务。 ## 项目简介 Tongsuo 项目的核心在于其智能合约安全性检测引擎,通过静态代码分析、动态运行时监测等多种技术手段,对智能合约进行深度扫描,找出可能存在的漏洞和风险。不仅如此,项目还提供了详尽的漏洞报告和修复建议,帮助开发者及时修复问题,提升智能合约的安全标准。 ## 技

gitblog_00017的博客 595
上一篇: SOFA Weekly|Meetup 广州站、本周 QA、本周 Contributor
下一篇: MOSN 反向通道详解
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值