Advertisement

加密算法的简易使用

阅读量:

在阐述加密实现方式之前,首先需要了解一个类javax.crypto.Cipher。该类是Java平台内置的加密实现工具,同时也是本文所依赖的核心组件。通过调用静态方法Cipher.getInstance(String)来创建实例,传入的参数用于指定具体的加密流程,其格式可采用以下两种形式:

  • “algorithm/mode/padding” 或者
  • “algorithm”

其中algorithm部分无需详细说明,它代表诸如AES、DES、RSA等具体的加密算法。

mode部分在此仅介绍两种较为常见的模式:CBC和ECB。至于OFB这类更高级的模式,暂且留待以后探讨。

ECB的全称是Electronic CodeBook,其工作原理是将明文msg划分为固定长度的数据块(如64位),并对每个数据块进行独立加密。这种机制导致了ECB的第一个缺陷:若某一数据块被篡改,则仅该块在解密后会出现异常,而其他块仍能正常解密。

此外,当使用ECB对具有固定格式的明文进行加密时,攻击者无需掌握解密方法即可破解密文。只需定位到密文中对应固定格式的位置,并替换所需篡改的内容即可完成攻击。

不仅如此,ECB模式还存在另一个问题:在64bit的块长度下对一段明文进行加密时,若该明文由一个32bit字符串重复八次组成,则所有待加密的数据块内容完全相同。因此生成的密文也会完全一致。

全部评论 (0)

还没有任何评论哟~