《表1 CPU遍历key的查询函数》

《表1 CPU遍历key的查询函数》   提示:宽带有限、当前游客访问压缩模式
本系列图表出处文件名:随高清版一同展现
《基于GPU并行枚举DES密钥Bitslice方法的实现》


  1. 获取 高清版本忘记账户?点击这里登录
  1. 下载图表忘记账户?点击这里登录

单CPU端的单线程的Bitslice程序的流程如下:输入两个8字节的明文iv_p和pt_p这两个数字按位做异或运算,运算后得到64位的明文并存在在ptext[64]中,每一个字节的最后一位与前七位进行与操作,判断是否为非零,如果非零则输出非零的无符号长整型,否则则输出零。将这个数作为明文存在p[64]中。同样的道理将密文和预输入的key也存在c[64]和k[64]中。在32位系统中32bit为25,取位长的log值,使key的后五位与1或运算,如果这5位bit数与密文的相对应的bit位一致则进行另5bit位的比较,一次比较相当于进行了32次密钥搜索,Bitslice程序相当于自身并行运行提高破解效率。CPU单线程Bitslice程序不对密钥数据分组,会从高位一直向低位遍历,每一字节为0~255的数,通过Bitslice程序和最后一位奇偶效验位的简化,0~255被分成1,3,5,7.....255的128个数,相当于每个字节搜索128个数。如表1所示,程序将key[56]的一维数组输入到deseval函数中进行计算,如果对比发现为0,进行increment_key函数改变key的5个bit位之后的一位置为无符号的1,再进行deseval函数计算,以此类推直到所有的bit位全部对上才算找到key。