DES 加密----笔记

enc = Cipher.getInstance("DES/CBC/PKCS5Padding"); keySpec = new SecretKeySpec(key, "DES");//key ivSpec = new IvParameterSpec(iv);//iv enc.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); enc.doFinal(indata);//encrypt

DES可以有这几种模式:  Electronic Codebook (ECB) , Cipher Block Chaining (CBC) , Cipher Feedback (CFB) ,  Output Feedback (OFB)   最基本的是ECB模式,CBC和其他模式都是改进。  ECB模式的缺点是相同的明文加密成相同的密文,明文的规律带到密文。\\ 因为DES是一种block cipher,一个block要8个字节,所以要加密的东西要分成8字节的整数倍,不足的就填充。  PKCS5Padding这种填充,填的字节代表所填字节的总数:   比如差三个字节的话填为 @@@@@333  差7个字节就填为        @7777777  没有差就填             88888888   这样只要读出最后一个字节的内容就知道哪些字节是填充的。   其他填充方式还有:  ISO10126-2Padding  ISO7816-4Padding  X9.23Padding  TBCPadding  ZeroBytePadding

http://www.iteye.com/topic/152405

http://www.cnblogs.com/janken/archive/2012/04/05/2432930.html  

   DES的几种工作方式

第一种电子密本方式(ECB)    将明文分成n个64比特分组,如果明文长度不是64比特的倍数,则在明文末尾填充适当数目的规定符号。对明文组用给定的密钥分别进行加密,行密文C=(C0,C1,……,Cn-1)其中Ci=DES(K,xi),i=0,1,…..,n-1。     第二种密文分组链接方式(CBC)    在CBC方式下,每个明文组xi在加密前与先一组密文按位模二加后,再送到DES加密,CBC方式克服了ECB方式报内组重的缺点,但由于明文组加密前与一组密文有关,因此前一组密文的错误会传播到下一组。     第三种密文反馈方式(CFB),可用于序列密码    明文X=(x0,x1,……,xn-1),其中xi由t个比特组成0   第四种输出反馈方式(OFB),可用于序列密码    与CFB唯一不同的是OFB是直接取DES输出的t个比特,而不是取密文的t个比特,其余都与CFB相同。但它取的是DES的输出,所以它克服了CFB的密文错误传播的缺点      DES的几种填补方式    DES是对64位数据的加密算法,如数据位数不足64位的倍数,需要填充,补充到64位的倍数。

   NoPadding    API或算法本身不对数据进行处理,加密数据由加密双方约定填补算法。例如若对字符串数据进行加解密,可以补充\0或者空格,然后trim

   PKCS5Padding    加密前:数据字节长度对8取余,余数为m,若m>0,则补足8-m个字节,字节数值为8-m,即差几个字节就补几个字节,字节数值即为补充的字节数,若为0则补充8个字节的8

 

posted @ 2013-05-31 01:01  Blue Sky ......  阅读(3955)  评论(0编辑  收藏  举报