Welcome to the Black Parade——关注代码背后的知识

Fiat-Shamir 与零知识证明 零知识证明:不泄露个人信息的前提下证明自己是某信息的合法拥有者 Fiat-Shamir heuristic 根据wiki:前提:持有相同的message x的用户可以相互认证,他们持有相同的验证函数,以指数函数为例 f(x)=gx  1. alice想向bob证明她知道message x 同时又不想泄露出x2. Alice取一个非零整数v,同时得到t=gv3. 用加密哈希函数 c=H(g,y,t)... 阅读详情

【tip】
这是一篇初步潜入源代码身后,关注内存空间和地址分配的初级博,后续Coder将会继续po出更多更深入了解源代码背后细节的文章。

【热身码】
for instance:

#include <stdio.h>

int main()
{
    int i = 0;
    int arr[10];
    for (i = 0; i <=10; i++)
    {
        arr[i] = 0;
        printf("Welcome to Circle's blog!~\n");
    }
    return 0;
}

这是一道简单的数组下标越界问题,导致的结果是编译器会报错:

这里写图片描述

Coder使用的编译器是VS2015,编译器不同,出现的错误结果可能并不相同。有些编译器会出现死循环,这是由于不同编译器在地址空间的分配上有差别,接下来我们去查看它的地址空间分配——>

【Coder有话说】
老师总会说,一个好的程序猿,Ta的F10、F11等调试键一定被用的锃明瓦亮,我还不是一个合格的程序猿,我的调试键还很新。今天的问题很简单,我们不使用调试的方式,我们编码来分析地址分配问题:

int main()
{
    int i, arr[10];
    printf("%p\n", &i);
    for (i = 0; i <= 10; i++)
    {
        printf("&arr[%d]=%p\n", i, &arr[i]);
    }
    return 0;
}

如上代码,我们来观望 i 和 arr[i] 的地址分配,得到这样的结果:

这里写图片描述

如大家所知,变量从高地址开始创建。i的地址为0018FE4C,arr[10]的地址为0018FE44,中间未显示的0018FE48用于将arr数组和 i 隔开。按照数组的地址分配规律,我们可以猜测arr[11]的地址为0018FE48,这样下去,arr[12]的地址就为 i 的地址,当arr[12]在for循环中被置零时,相当于 i 被置零,for循环会回到初始化部分,导致循环一直不能跳出,死循环出现。为验证这一点,将for循环改为:

for(i=0;i<=12;i++)

编译运行,结果是:

这里写图片描述

Bingo~事情一直朝着预想的方向在发展~地址分配就是这样的有条有理~

【结语】
回到开头,这一博初入地址内存,简单易懂不抽象。后续我们将继续深入了解神秘的地址世界,入编码坑的感觉就像是一首歌,Welcome to the Black Parade!~ 欢迎来到黑色行军。

区块链的隐私技术——Mimble-Wimble 区块链上的隐私问题 区块链是公开的分布式交易账本,以比特币为例,链上的数据都是公开可见的,包括交易的金额和交易双方的地址信息等。尽管通过使用比特币地址而不是实名账户可以一定程度上保证用户的隐私需求,但是如果有人可以用比特币的地址链接到所有者的真实身份,那么所有者的比特币交易记录——不管是过去的、现在的,还是未来的,都会被暴露。可怕的是,把比特币地址和真实身份链接起来并不困难。虽然一笔交易的发送方和... 阅读详情

相关推荐

Fiat-Shamir transform 和零知识证明

零知识证明是区块链密码学的重要内容。近期在学习环签名,因此了解了一下证明机制。 零知识证明:向对方证明自己知道某个秘密,但不泄露秘密。 一个传统的证明步骤如下: 1 以离散对数加密为例,一证明者公开一系列信息(g,y1)(g,y1)(g,y_1),其中g是本原元,如果用椭圆曲线离散对数就是基点坐标,y1就是公钥。 2 选择一个伪随机数v∈Zqv∈Zqv\in \mathbb{Z}_...

反之亦然 2499

详细讲解:零知识证明 之 zk-SNARK 开篇

作者:林冠宏 / 指尖下的幽灵 掘金:juejin.im/user/587f0d… 博客:www.cnblogs.com/linguanh/ GitHub : github.com/af913337456… 腾讯云专栏: cloud.tencent.com/developer/u… 虫洞区块链专栏:www.chongdongshequ.com/article/153… ...

weixin_34396103的博客 987

零知识证明学习资源汇总

摘要:本文收集整理了关于零知识证明的一些学习资料,希望能对大家有所帮助。

SECBIT区块链安全实验室 3702

浅谈零知识证明协议——zk-SNARK

一、介绍 简洁非交互式零知识证明(zero-knowledge succinct non-interactive argument of knowledge,以下简称zk-SNARKs)是一种新颖的零知识密码学形式,它指的是一种证据构造,在不泄露机密信息的情况下,人们可以证明自己拥有某些信息,能够满足一些预设的条件,同时在证明者和验证者之间无需任何交互。 二、zk-SNARKs概述及定义...

qq_28925345的博客 5490

triton-inference-server-ge-backend

新版本特性 v2.3.0 支持对全局、session、graph 的options进行添加,从而进一步调优模型,相关案例请参考 性能调优方法论。 支持采用分档模式将符合条件模型转化为静态图,提高吞吐性能。 补充如何采用分档模式+锁核+调整精度,进一步提高性能。 在AscendHub下载镜像时需确认好版本,若使用旧版本镜像,需要手工下载源码编译生成新的backend后才能支持新特性。 版本特性 v2.2.0 支持从onnx文件读取模型输入输出信息, config中若无指定input,output,将会自动从文件中读取; 调整动态图在多实例下使用多Session方式,提高并发吞吐(显存占用会增高); 支持动态batch场景小batch动态合并特性,配合多Session,提高吞吐; 补充调优方法论以及cnclip模型的最佳实践; 支持多模型特性,可支持同时拉起多个模型,提高显存利用率; 支持非0轴动态shape场景; 支持TensorFlow的pb文件。

2007-2025年36家商业银行绿色信贷余额数据(2025年无缺失)

1、指标覆盖区间为2007年至2025年 2、数据取自各银行年度报告及社会责任报告 3、核心指标为绿色信贷余额 4、涉及银行包括:苏农银行、中国银行、紫金银行、杭州银行、华夏银行、邮储银行、青岛银行、兴业银行、苏州银行、农业银行、宁波银行、上海银行、江阴银行、招商银行、长沙银行、北京银行、无锡银行、民生银行、浙商银行、常熟银行、成都银行、工商银行、郑州银行、光大银行、南京银行、建设银行、浦发银行、贵阳银行、渝农商行、西安银行、交通银行、江苏银行、中信银行、张家港行、平安银行、青农商行

随机预言机模型 Random Oracle Model

最近事比较多,写的也比较少了,之前看的安全多方计算、秘密共享、差分隐私保护又忘了,以后有时间再写吧就当做笔记了,还得多写随机预言机模型随机预言机模型通常是现实中哈希函数的理想化替身,其起源于把哈希函数看伪随机的函数的思想。ROM理解为完美的散列函数具有以下性质:(1)一致性:相同的输入必有相同的输出(2)可计算性:输出的计算可在多项式时间内完成(3)均匀分布性:预言机的输出在取值空间内均匀分布,无...

小熊划水博 1万+

2019-2026年 中国分行业进出口数据 xlsx

数据整理中国各细分行业海关进出口数据,包括中国对各个国家进口、出口数据,中国各个行业进出口数据,各国贸易数据是了解每个国家市场的最基础和重要信息。数据非面板数据,时间、行业分类有缺失。 标 日期 采购商国家/地区 供应商国家/地区 采购商 供应商 采购商地址 供应商地址 通知人 通知人地址 制造商 原产国 目的国 起运港 目的港 HS编码 产品描述 唛头 数量 数量单位 重量 金额($) 单号 集装箱号 品牌

Bulletproofs用于verifiable shuffle随机组合证明

Consider two lists of committed values x1,…,xn and y1,…,yn. The goal is to prove that the second list is a permutation of the fi rst. This problem is called a veri able shuffle. It has many applicatio...

mutourend2010@gmail.com 423

后端开发 Docker4.99.0 AppleSilicon 苹果芯片 Mac 安装包

本资源为 Docker Desktop 4.99.0 苹果芯片(Apple Silicon)专用安装包,原生适配 M 系列 Mac,可快速搭建本地容器开发环境,支持镜像拉取、容器编排、项目打包部署。适合后端开发、运维、全栈开发者,用于本地微服务、测试环境、项目容器化开发。

milvus-v2.6.25镜像文件

milvus-v2.6.25镜像文件

区块链知识系列 - Raft 共识

Raft算法由斯坦福大学的Diego Ongaro和John Ousterhout于2014年在论文《In Search of anUnderstandable Consensus Algorithm》中提出。Raft算法面向对多个决策达成一致的问题,分解了Leader选举、日志复制和安全方面的考虑,并通过约束减少了不确定性的状态空间。 典型的过程包括以下两个主要阶段: Leader选举:开始所有节点都是Follower,在随机超时发生后未收到来自Leader或Candidate消息,则转变角色为Cand

搬砖魁首的博客 3691

什么是Merkle树?用“文件柜”类比理解区块链的核心技术

Merkle树是一种用于区块链的数据结构,像一个高效的“文件柜”,用于存储和验证大量交易数据。比特币通过Merkle树将交易哈希组织成树状结构,层层汇总,最终生成一个唯一的根哈希,存储在区块头中。这种设计大幅减少数据存储和验证成本,支持快速校验交易的完整性和存在性。Merkle树通过密码学保证数据不可篡改,广泛应用于比特币、区块链及其他分布式系统。它的优势在于高效、轻量和安全,尤其适合轻节点验证和数据同步。理解Merkle树就像掌握区块链的“索引秘籍”,是Web3世界的关键技术。

在路上的专栏 1192

Web前端开发一些有趣的新书

首先要介绍一下《Ajax模式与最佳实践》 作者Christian Gross的新书:Ajax and REST Recipes: A Problem-Solution Approach在Amazon上搜索名称中含有“REST”的书,这几乎是仅有的一本。我是通过翻译《Ajax模式与最佳实践》理解了REST这种架构风格的重要性。《Ajax模式与最佳实践》是目前Ajax领域理论性最强的一本书,里面处处体

天山雪的技术博客 3813

别再折腾老教程了!树莓派4B/5最新系统(Raspberry Pi OS Bookworm)红外遥控配置,用gpio-ir驱动一次成功

本文详细介绍了树莓派4B/5在最新Raspberry Pi OS Bookworm系统下配置红外遥控的完整指南,摒弃过时的lirc-rpi驱动,采用现代gpio-ir驱动方案。从硬件连接到软件配置,提供10分钟快速上手指南,涵盖驱动加载、信号测试、按键映射及高级应用场景,帮助用户高效完成红外遥控配置。

weixin_42520909的博客 442

W5500 MACRAW模式实战:在ESP32上抓取并解析原始以太网数据包

本文详细介绍了如何在ESP32开发板上使用W5500芯片的MACRAW模式捕获和解析原始以太网数据包。通过硬件连接指南、代码实现示例和协议解析技巧,帮助开发者深入理解网络通信底层机制,实现网络嗅探和自定义协议开发等高级应用。

weixin_42520573的博客 418

信息安全与密码学博士:应该掌握的52个知识--(4)T46-- 菲亚特-沙米尔(Fiat-Shamir)变换

目录 概念和应用 背景和数学表示 Schnorr 协议 数学表示[2] 概念和应用 Fiat-Shamir变换,又叫Fiat-Shamir Heurisitc(启发式),或者Fiat-Shamir Paradigm(范式)。是Fiat和Shamir 在1986年提出的一个变换,其特点是可以将交互式零知识证明转换为非交互式零知识证明。这样就通过减少通信步骤而提高了通信的效率! 背...

u010665790的博客 2785

别再手动配电脑了!手把手教你用Windows Server 2022搭建企业AD域(附DNS配置避坑指南)

本文详细介绍了如何使用Windows Server 2022搭建企业AD域,提升20+终端的管理效率。通过实战案例和避坑指南,解析AD域的核心价值、部署步骤及DNS配置技巧,帮助企业实现集中权限管理、安全策略统一部署,显著降低IT运维成本。

weixin_30652897的博客 349

法乎其上,得乎其中——从基础出发,写更优化的代码

【写在前面】 从开始学编程起,老师一直在问我们一个问题,“想想看,你写的代码还可以再优化吗?”同一道题目,编程方法难易兼有,找最优化的方法,做更专业的程序猿,这是我们的主业。 【热身赛】 从最基础的题目开始,我们来逐步向最优化代码行军。 Q:交换两个给定变量的值。 题目很基础,面试也会有,大家嫑忽视。 很容易大家就可以写出这样的代码:#include <stdio.h>int main(

Circle Lee's blog 1511

产品必备技能(十):如何绘制原型图?先要绘制页面流程图+页面原型图!附实操原型图、流程图实例(抖音)

文章目录目标题目实操步骤模板实操【抖音】APP的视频发布功能页面流程绘制页面流程图合格标准绘制页面原型图合格标准 目标 新入行的产品经理都对原型抱有向往的心境,但是有经验的产品经理不会一上来就画原型,而是先画页面流程再来画原型。通过学习,你将学会如何用页面流程图规划用户行为路径、如何借助原型识别问题、减少风险、有效沟通。 题目 任意选择一款你喜欢的产品,体验某个功能,下载并梳理此功能至少5个以上的页面流程跳转点(后面会解释),还原2 - 3个主要界面的低保真原型图。 实操步骤 可使用手绘以及Process

汪雯琦的博客 4842

【知识图谱】neo4j安装与配置_社区版_2025(附完整安装软件包)

(经历过各种版本NEO4J,遇见杂七杂八的各种问题,也看过非常多很好的教程,特此来分享一下,为大家排排坑。

知识靠谱的博客 2万+

一道Google面试题引发的代码优化战

【前情提要】 在第一篇技术博里,以”交换两个给定变量的值”为例,Coder谈到了代码的优化问题。今天我们以一道Google面试题为例,继续谈优化。这道题做得好,今夜我们都是Google-ese.【Talk is cheap,show you the code】 Q:写一个函数,返回参数二进制中1的个数。 e.g.15 二进制 0000 1111 返回4个1 函数原型:int cou

Circle Lee's blog 1276

如何在Windows上安装Node-RED?

Node-RED 是一款基于流程的可视化编程工具,专注于物联网(IoT)和自动化应用的快速开发,其核心特点是通过拖拽节点构建数据流网络,实现低代码/无代码编程。

猿小白的博客 1171

一段源代码的旅行——程序运行背后的机制和由来

【自省】 自学习编码以来,Coder本人很少去认真去研究一段代码的运行过程,关注更多的是代码的产生结果。但随着知识越学越深,Coder深觉,我们往往会被复杂的集成工具所提供的强大功能所蒙蔽,很多系统软件的运行机制被埋藏,其程序的很多莫名其妙的错误让我们不知所措,面对程序运行时种种性能瓶颈我们望天扶额。 能看得到的是问题的现象,看不到的是问题的本质。所有问题的本质就是软件背后的机理及支撑软件运行的

Circle Lee's blog 1263

字节最新开源模型 DA3(Depth Anything 3)使用教程(一)从任意视角恢复视觉空间

本文介绍DepthAnything3(DA3)模型,一种能够从任意视觉输入中预测几何结构的创新解决方案。DA3采用Transformer骨干网络,通过统一的深度光线表示简化学习过程,支持单目/多视角深度估计、姿态估计和3D高斯预测等多项任务。模型系列包含基础版、度量级和单目专用版本,其中嵌套版本DA3NESTED-GIANT-LARGE表现最佳。代码库提供交互界面、CLI工具和多格式导出功能,支持模块化扩展。实验表明DA3在各项任务上超越现有模型,所有训练数据均来自公开学术数据集。

2506_90492529的博客 2548

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: 法乎其上,得乎其中——从基础出发,写更优化的代码
下一篇: 一段源代码的旅行——程序运行背后的机制和由来
CircleServer
博客等级 码龄11年 12粉丝 4原创
评论 22
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值