RSA加密算法是现代公钥密码学的核心技术之一,在互联网中应用广泛。作为公钥密码学的经典算法,教科书RSA的编程实现可以帮助我们迅速掌握其数学机理和设计思想,并积累重要的密码技术软件实现经验。这里详述Python3.8编程环境下教科书RSA的实现示例。

阅读全文 »

IPv6支持多个地址,地址分配更加灵活方便。与 IPv4 仅仅依赖 DHCP 协议的地址分配方法不同,IPv6 加入了原生的无状态地址自动配置 (Sateless Address Autoconfiguration,简写 SLAAC) 协议。SLAAC 既可以单独工作为主机提供 IPv6 地址,又能与 DHCPv6 协同运作产生新的分配方案。这里对 IPv6 动态地址分配机制做一个全面分析。

阅读全文 »

密文填充攻击 (Padding Oracle Attack) 可能是现代密码学史上的最有名也最成功的攻击方法。攻击者利用密文的填充验证反馈信息,实现密文破解。这里简单回顾密文填充攻击的发展历史,然后深入剖析AES-CBC工作模式下的攻击原理,最后给出了Python的编程实现示例。

阅读全文 »

网络附接存储(NAS)通过计算机网络提供对异构网络用户的文件级数据访问。随着硬盘价格的持续下降,NAS设备已经走入大众家庭。领先中小企业及家用NAS市场的品牌产商如群晖科技(Synology),其产品价格从低端$300到高端$700不等。但如果你是树莓派玩家,只需要最低价一半左右的成本,就可以搭建很不错的家用NAS及流媒体播放服务。

阅读全文 »

内存访问错误是最常见的软件错误,常常造成程序崩溃。程序员们一直在找寻优秀的内存访问错误检测工具,以便及时定位和排除错误以提高软件的可靠性。2012年由谷歌工程师开发的一款AddressSanitizer工具,以其覆盖面广、高效率和低开销的特性,已成为C/C++程序员们的首选。这里对其原理和使用方法做一个简要的介绍。

阅读全文 »

遇到面试题“实现开平方根的函数”时,如果回答调用库函数sqrt()就可以了,那你就会错意了。很显然,面试官要求你实现自己的平方根运算函数。这时,如果再问为什么要自己写,那你的这次面试就危险了😌。

阅读全文 »