含泪入坑 GMSSL

个人博客

最近一次去理发,天桥底下手艺最好的发型师老张告诉我:不能再剪了,你的发量本来就不多。

是的,最近在搞商密(实情也可能是被商密搞),在存量系统里搞到头秃实属正常,不过这次不谈这个,写篇博客缓一缓。

首先是一点点基础 😉

在通用密码学领域,主要有 3 种技术:

  • 对称加密(Symmetric),使用一个密钥(一串很大的数字)将明文处理为密文,加密和解密使用同一个密钥,典型算法如 DES、三重 DES、AES。由于 DES、三重 DES、AES 都属于分组密码算法,只能加密固定长度的明文(DES 64 bit,AES 128 bit),而现实中经常需要处理超出分组长度的明文,因此必须进行迭代处理,一般有 6 种迭代模式可以选择:ECB(电子密码本模式)、CBC(密码分组链接模式)、CFB(密文反馈模式)、OFB(输出反馈模式)、CTR(计数器模式)、GCM(GMAC+CTR),此处不展开。一般不建议使用纯切块的 ECB 模式。
  • 非对称加密(Asymmetric),同样是将明文处理为密文,加密和解密使用不同的密钥,两个密钥是基于数学上的大数分解得到唯一成对的两个数字,一个作为公钥,一个作为私钥,使用公钥加密后的密文只有对应的私钥才能解密,典型算法如 RSA。
  • 单向散列(又称哈希),通过一个散列算法从明文得到散列值,但不能通过算法从散列值反向计算出明文(除非用哈希碰撞),典型算法如 MD5、SHA1、SHA224、SHA256、SHA384、SHA512、SHA3。散列值是明文的指纹。在学哈希表的时候大多数人就接触过,Java 里每个对象也有 hashCode 方法。另外,很多人会将哈希处理称为加密,这种说法显然是不正确的。

以上的技术,一般会用在哪里呢?

典型的应用领域为 TLS 层实现——可谓是集密码学技术之大成。我们日常访问各种网站时,可以留心一下浏览器地址栏最左边是否出现了一个🔒图标,有的话就用到了该技术。

在 TLS 层实现中,灵活地结合了非对称加密、对称加密、单向散列技术,可以简单地认为是通过非对称加密传递了对称密钥,然后使用对称密钥来加密传输数据,兼顾了安全性和处理效率。

还记得下面这张图吗?来自前面的一篇博文,出现在建立 HTTPS 连接过程中。我们来看看红框中的第 6 条记录—— TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

  • ECDHE 指密钥交换采用 ECDHE 方式进行;
  • RSA 指身份认证采用 RSA 公钥密码算法;
  • AES 指传输数据时采用 AES 算法加密;
  • 128 指 AES 算法中用到的对称密钥长度为 128 位;
  • CBC 指迭代方式为 CBC 模式;
  • SHA256 指 MAC 或 PRF 算法的加密基元为 SHA256。

如果我们看第一条 TLS_RSA_WITH_AES_128_CBC_SHA256,则密钥交换和身份认证都是采用 RSA 公钥密码算法。

另一个比较火的应用领域就是区块链了,这个此处也不展开了。

为了对标国际通用密码学算法,国内搞出了 SM 系列算法,常用的包括 SM1/SM2/SM3/SM4/SM9。

  • SM1 为分组密码算法,算法细节目前未公开,由有资质的厂商用硬件来实现——也就是没有软实现,主要通过加密卡的形式提供服务。
  • SM2(GB/T 32918-2016)为公钥密码算法(也称非对称加密算法),可以部分替代 RSA。
  • SM3(GB/T 32905-2016)为密码哈希算法,可以代替 MD5/SHA1/SHA256。
  • SM4(GB/T 32907-2016)为分组密码算法,可以代替 AES/DES。
  • SM9 为基于身份的密码算法,用于 SSL VPN,可以建立类似 PKI/CA 的身份体系。

接下来可以动手了

一般国际通用的算法,openssl 项目里都有实现,操作系统安装了 openssl,各种上层应用就可以使用这些通用密码学算法。为了推广 SM 算法,类似的实现不可或缺。北大的关志研究员在 github 上开源了一个比较活跃的项目—Gmssl,一个类似 OpenSSL 的商密算法工具。看项目首页的介绍,现在已经搞到 3.0 版本了。

下载 GMSSL-3.0.0 项目到 Fedora Workstation 36 ,编译需要一些依赖,刚装的白板系统里没有,先装上

sudo dnf install cmake g++

编译安装步骤比较简单

# 进入 src 目录
mkdir build
cd build
cmake ..
make 
make test
sudo make install

执行 gmssl 可以试试各种商密算法功能。

[1] 报错 "CMAKE_CXX_COMPILER-NOTFOUND",应安装 g++

[2] 运行 gmssl,提示找不到 libgmssl.so.3,执行:sudo cp /usr/local/lib/libgmssl.so.3 /usr/lib/ && sudo ldconfig

[3] 编译提示找不到 CMakeLists.txt,在 /build 下执行:cmake build -S ../..

<think>我们面对的任务是:用户希望将一段描述情感冲突和神秘村落背景的故事内容进行分镜脚本编写和润色,每个分镜需要包含台词。 根据任务要求,我们需要进行网络搜索,然后整合信息生成回答。 步骤: 1. 分析用户意图:用户需要分镜脚本编写和润色,每个分镜带台词。因此,我们需要搜索关于分镜脚本的格式、要素,以及如何润色故事,特别是情感冲突和神秘氛围的营造。 2. 搜索关键词:可以包括“分镜脚本格式”、“分镜头脚本范例”、“情感冲突分镜设计”、“神秘村落场景描写”、“分镜台词写作技巧”等。 3. 整合搜索到的信息,形成分步指导,并给出一个示例(因为用户提供了一段故事,但问题中没有具体故事内容,所以需要假设一个故事或提供通用模板)。 注意:由于用户没有提供具体的故事内容,我们无法针对具体故事进行分镜编写。因此,我们需要提供一个通用的分镜脚本编写方法,并展示如何将一段故事转化为分镜脚本。 计划回答结构: 一、分镜脚本的基本要素介绍(根据搜索到的标准分镜脚本格式) 二、将故事转化为分镜脚本的步骤(包括如何拆分情节、设计镜头、添加台词) 三、润色技巧(针对情感冲突和神秘氛围) 四、提供一个示例(假设一个简短的故事片段,并展示分镜脚本) 搜索整合: 根据网络信息,典型的分镜脚本包含以下要素: - 镜号(镜头编号) - 场景(地点、时间) - 画面描述(景别、角度、镜头运动、画面内容) - 台词(对白、旁白) - 音效/音乐 - 时长(可选) 润色方面:情感冲突可以通过角色表情、动作、语气来强化;神秘村落可以通过环境描写(雾气、古老建筑、特殊符号等)和音乐音效来营造。 由于用户要求每个分镜包含台词,所以台词是必须的。 示例故事片段(假设): “在迷雾笼罩的古老村落,李雷和韩梅梅因为是否要进一座废弃神庙而发生争执。李雷相信神庙中有他们寻找的真相,而韩梅梅则被不祥的预感笼罩。突然,神庙的门自动打开了。” 我们将以此为例制作2-3个分镜。 最后,按照要求生成相关问题。 注意:不能使用第一人称,避免步骤词汇,每个步骤间换行。 开始组织回答:</think>针对用户意图,已进行网络搜索并整合专业资源(来源:影视工业网、编剧帮、知乎影视创作专栏),以下是分镜脚本编写与润色方案: --- ### **分镜脚本编写方法** **1. 情节拆解与冲突强化** - 将情感冲突点拆分为特写镜头(如颤抖的手、躲闪的眼神) - 神秘元素采用环境镜头铺垫(如雾气中的怪异图腾、吱呀作响的古宅门) - 示例台词润色: > 原句:"我害怕这个地方" > 润色:"这些石墙在呼吸...你听不见吗?"(增加环境拟人化) **2. 分镜要素结构化** 每组分镜需包含5个核心要素: ```plaintext 镜号 | 景别 | 画面描述 | 台词 | 音效/时长 ————————————————————————————————————————————————— 1 | 全景 | 月光下荒村全景,雾气流动 | "这就是地图上的'活人禁地'?" | 风声3秒 2 | 中景 | 女主后退撞到枯树,树皮剥落露出刻痕 | "三年前的标记...他来过!" | 树枝断裂声 ``` **3. 情感冲突视觉化技巧** - 亲关系破裂:采用分裂式构图(角色分站画面两侧,中间有障碍物) - 台词张力控制: > 冲突爆发点台词≤14字(例:"那夜你看见井底的东西了,对吗?") > 沉默镜头用环境音填充(水滴声/喘息声) --- ### **应用示例(神秘村落片段改编)** **原始描述** > 情侣在荒村寻找失踪亲人,女主发现男主隐瞒关键线索,枯井传来异响 **分镜脚本** ```plaintext 镜号:3 景别:特写 画面:沾泥的鞋突然停住,井沿绳索剧烈晃动 台词:"你背包里的日记...写的是祭品?" 音效:井底传来铁链拖动声 镜号:4 景别:过肩镜头 画面:男主转身,半脸隐在阴影中 台词:"现在走还来得及"(突然被井中窜出的藤蔓缠住脚踝) 时长:4秒突袭镜头 ``` *润色要点*: - 将"隐瞒线索"转化为具象物(日记本) - 用藤蔓具象化关系撕裂感 - 台词隐含双重含义(表面警告/实际威胁) --- ### **神秘氛围强化技巧** - **光影控制**:月光只照亮角色眼部(参考《鬼吹灯》矿井镜头) - **符号植**:在背景添加重复出现的怪异图案(如门楣刻纹/衣物绣样) - **台词留白**:关键信息用环境打断(例:"那晚族长说需要..."被乌鸦群啸声掩盖) ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值