本文介绍了姚期智院士提出的百万富翁问题,并在此基础上探讨了社会主义百万富翁问题(SMP)。SMP旨在验证两位百万富翁是否拥有相同的财富,而不泄露各自的实际金额。文章详细阐述了基于Baudot方法的SMP解决方案,并通过Zig语言实现了一个代码示例,展示了如何在实际应用中验证这一概念。
本文介绍了使用 Zig 编程语言实现基于 Fiat-Shamir 启发式的非交互式零知识证明(NIZKP),并结合有限域算术运算,通过示例代码详细展示了如何在 secp256k1 曲线以及 NIST P256、Ristretto255、Edwards25519 和 P384 曲线上验证 Peggy 知道秘密 x,同时比较了使用有限域和标量值进行计算的不同方法。
本文介绍了有限域(Finite Field)的概念,它在密码学中的重要性,以及如何在 Zig 编程语言中实现有限域的计算。通过示例展示了在有限域上进行加法、减法、乘法和指数运算,并提供了 Zig 语言的源代码和在线演示。
本文介绍了使用 Zig 语言实现 NaCl Box 加密方法的三种方式:Box、Sealed Box 和 Secret Box。Box 方法使用公钥加密和私钥签名;Secret Box 方法使用共享密钥加密;Sealed Box 方法使用公钥加密,实现匿名发送。文章提供了相应的 Zig 代码示例,并展示了消息加密和解密的过程。
本文介绍了混合加密的概念,重点讲解了使用公钥密码术和对称密钥的Box加密方法。同时,文章还提到了PGP(Pretty Good Privacy)加密软件,回顾了其历史和基本工作原理,并展示了如何在实践中使用PGP加密和解密邮件信息。最后,通过Zig语言实现的Box包示例,进一步阐释了混合加密在实际应用中的过程。
本文介绍了AEGIS加密算法,它是AES的替代方案,具有身份验证标签和唯一标识符。文章还提供了libsodium.js中使用AEGIS-128l, AEGIS-256 或 XChaCha20的示例。此外,展示了在Zig语言中使用AEGIS进行消息认证码(CMAC)的实现,并对比了AEGIS与XChaCha20的性能。
本文介绍了SHAKE128和SHAKE256这两种可扩展输出函数(XOF),它们是SHA-3的变体,可以生成任意长度的哈希值。同时,还介绍了cSHAKE128和cSHAKE256,它们允许在哈希过程中添加上下文字符串,从而实现域分离。文章通过代码示例展示了如何在Zig语言中使用这些函数,并演示了如何使用上下文字符串来区分不同的哈希应用场景,例如添加pepper字符串。
本文介绍了NIST(美国国家标准与技术研究院)批准的TupleHash算法,该算法基于SHA-3,用于生成可变长度的哈希值,尤其适用于处理字符串序列,它能区分顺序不同的字符串组合,文章展示了如何在Zig语言中实现TupleHash128和TupleHash256,并通过示例验证了其独特性。
本文介绍了在 Zig 编程语言中使用 Ed25519 和 ECDSA 实现数字签名的方法。通过 Zig 语言,开发者可以在嵌入式系统中高效地进行签名生成和验证,确保数据的完整性和真实性。文章分别提供了 Ed25519 和 ECDSA 的原理概述、代码示例和运行结果,展示了如何在 Zig 中使用这两种签名算法。
本文讨论了微软和谷歌等公司逐渐采用 Rust 语言来替代 C/C++ 的趋势,Rust 在内存安全和代码质量方面的优势,以及学习 Rust 的一些挑战和益处。文章还分享了谷歌关于开发者学习 Rust 语言的调查结果,包括学习时间、编译器速度以及最具挑战性的领域等。