读书频道 > 网站 > 网页设计 > Android应用程序安全
5.3.3 数据填充
13-11-17    奋斗的小年轻
收藏    我要投稿   

本文所属图书 > Android应用程序安全

本书是一本系统讲解Android应用开发安全的书籍。它首先介绍了Android系统的架构和安全机制,然后详细说明了Android应用中存在的安全风险,并提出如何实现相应的安全控制以保护用户的私密信息。同时,本书还深入讲立即去当当网订购

到目前为止,我们讲述了处理固定块长度数据的对称加密算法。但是,若你的数据小于算法要求的块长度的时候会发生什么呢?如图5-2所示,这里我们有两个数据块,但只有一个数据块包含了数据块长度的数据(简单起见我们假设块长度为8字节),另外一个数据块只有4位。如果我们对这个数据块用AES算法进行加密就会失败。为了解决这个问题,我们可以采用几种不同的数据填充方式。

偏移              | 00 01 02 03 04 05 06 07 | 00 01 02 03 04 05 06 07 |

数据                            | 41 42 43 44 45 46 47 48 | 49 50 51 52

图5-2 没有进行填充的数据块

很可能你看到图5-2的第一反应就是把剩余的4位填充为0,这就是我们熟知的数据补零。当然也存在其他的填充方式,在这一点上我不想做过多的论述,但是你要记住:我们不能把明文直接用于分组加密。分组密码就是对明文按照固定长度进行分组加密,然后输出固定长度且相同分组的密文。图5-3和图5-4分别说明了数据补零和PKCS5/5填充方式。

偏移                              | 00 01 02 03 04 05 06 07 | 00 01 02 03 04 05 06 07 |

数据                               | 41 42 43 44 45 46 47 48 | 49 50 51 52 00 00 00 00 |

图5-3 数据补零(黑体部分是填充的)

偏移                | 00 01 02 03 04 05 06 07 | 00 01 02 03 04 05 06 07 |

数据                    | 41 42 43 44 45 46 47 48 | 49 50 51 52 04 04 04 04 |

图5-4 PKCS5/7填充(黑体部分是填充的)

注意 PKCS5/7填充就是取你需要填充的位数作为填充的内容。比如,若还有10位需要填充,那么填充的内容就是0A(10的16进制表达形式)。同样,如果还有28位剩余需要填充,那么填充的内容就是1C。[3]

在第2章的例子中并没有制定数据填充的方式。默认的,Android会使用PKCS5填充方式。

 

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站