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

阅读全文 »

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

阅读全文 »

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

阅读全文 »

思科的技术博客网站设立了Wi-Fi 6专题页,讲解Wi-Fi 6技术要点及思科相应产品功能。近期的一篇由思科高级无线工程师史瑞亚斯·特里维迪和octoScope公司首席科学家史蒂夫·希勒合作的博文,结合测试实例介绍OFDMA与MU-MIMO技术相结合,在多用户环境下达到两倍多总吞吐量的能力。文章简洁明了,可以让读者快速领悟Wi-Fi 6的关键技术革新,特此翻译为中文,分享给感兴趣的朋友。

阅读全文 »

现代计算机的硬件设计建立于数字电路的基础之上,而数字电路采用以2为基数的二进制记数系统。由此,二进制及其数字位(称为比特)的运算构成计算机系统软件的基石。一个常见的程序员面试题,就是比特位计数,即计算给定整数的二进制表示中比特1的个数。

阅读全文 »

在计算机网络设备和嵌入式系统的研发中,常常需要硬件和软件设计人员紧密配合,以实现精准而有效的平台支持。特别地,对于需要数据存取的设备,了解设备的基本工作原理、控制和数据线路的连接方式及信号流程,对于可靠的软件设计和实现必不可少。否则,如果硬件电路设计或软件程序编写基于错误的假定,将需要更多的时间调试、排错和补救,可能严重影响项目的进度。

阅读全文 »