比如说,我想用des实现 ,非常复杂的密码实现,最好是 可以输出指定的位数

解决方案 »

  1.   

    不太懂这个CipherInputStream和CipherOutputSteam不知道能不能满足你的需求.
      

  2.   


    System.out.println( "Cur minutes:" + System.currentTimeMillis()  );
    Des des = new Des();
    //直接加密
    byte ttt[] = des.encrypt( "111111".getBytes(), "12345678".getBytes() );
    System.out.println( "Encrype[12345678] with [111111]:" ); 
    System.out.print( StringConvertor.ByteToHexString( ttt )) ;

    //密码加密
    String key = "111111";
    String src = "Test Src for DES encrypt abcdefg";
    System.out.println( "Now encrypt the src:\n" + src );
    byte encryptBuf[] = des.encrypt( key, src.getBytes() );
    byte decryptBuf[] = des.decrypt( key, encryptBuf );
    System.out.println( "Decrypt String:\n" + new String( decryptBuf ) );

    //base64对sha1的密文进行加密解密(base64只能对密文进行加密解密操作)
    SHA1 sha = new SHA1();
    String password = "123456";
    sha.update( password.getBytes(), 6L );
    byte digest[] = sha.end();
    byte base64Digest[] = Base64.encode( digest );
    System.out.println( "Base64 Digest:\n" + new String( base64Digest ) );
    sha.init();
    sha.update( password.getBytes(), 6L );
    byte newDigest[] = sha.end();
    byte oldDigest[] = Base64.decode( base64Digest );
    if ( newDigest.length != oldDigest.length )
    System.out.println( "Compare the digest failed!" );
    for ( int i = 0; i < newDigest.length; i++ )
    if ( newDigest[i] != oldDigest[i] )
    System.out.println( "Compare the digest failed!" );
    //base64解密和des的解密
    String src1 = "fk73gxkxkxw=";
    byte encValue[] = Base64.decode( src1.getBytes() );
    byte decValue[] = des.decrypt( "123456", encValue );
    System.out.println( "Dec Value: " + new String( decValue ) );
    String src2="12345678";
    byte desValue[] =des.encrypt( "123456", src2.getBytes() );
    byte baseValue[] =Base64.encode( desValue );
    System.out.println(new String(baseValue));


    System.out.println( "Cur minutes:" + System.currentTimeMillis()  );