Turpial: nuevo cliente twitter

Revisando por la web algunos clientes para twittear, encontre uno muy simpatico, se llama Turpial, esta escrito en python y la verdad he quedado satisfecho con este, anteriormente usaba gwibber pero la verdad desde que cambio su apariencia y al notar que parecia consumir mas recursos, decidi cambiarlo. Actualmente el proyecto Turpial sigue en desarrollo y para lo que lo quieran probarlo, hay un paquete listo para instalar en Fedora y un manual de instalación para Ubuntu.

El mejor firewall del mundo

1.Una célula humana contiene 75MB de información genetica.
2.Un espermatozoide contine la mitad; eso significa 37.5MB
3.Un ml de semen contiene 100 millones de espermatozoides.
4.En promedio la eyaculación dura 5 segundos y contiene 2.24 ml de semen
5.Esto significa que la producción del miembro de un hombre equivale 37.5MB x 100,000,000 x 2.25)/5 = 1,687,500,000,000,000 bytes/segundo = 1,6875 Terabytes/seg

Esto quiere decir que el óvulo femenino soporta este ataque DDoS a 1,5 terabytes por segundo, y solo permite que pase un solo paquete de información lo que la hace el mejor hardware firewall del mundo.
La mala noticia de esto, es que ese paquete de información que deja pasar, cuelga el sistema por aproximadamente nueve meses.

Visto en Ubuntu Life

TripleDES con Java

Hace poco revisando algo de información acerca de métodos de encriptación o cifrado, revisaba básicamente acerca de DES y TripleDES, especificamente por temas laborales, bueno encontre muchas clases y formas de poder trabajar con DES desde Java pero muy pocas con TripleDES y me preguntaba porque, pues bueno, resulta que TripleDES es una “mejora” del DES obviamente y como su propio nombre lo dice es generar cadenas cifradas utilizando tres veces el algoritmo DES pero teniendo en cuenta algunos parametros, para algunos quizas esto sea algo risorio pero creanme, hay gente que no conoce estos temas. No voy ha entrar a temas teóricos para eso tenemos la wiki :).

Escribi una clase simple de ejemplo que muestra la forma de hacerlo, aqui lo propongo , espero obtener mejoras en base a comentarios y si hay que hacer correcciones tambien y ademas espero sea utilidad para muchos.

Para esto utilize una libreria para DES que la descargue de aqui

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.encripta;
import java.security.InvalidKeyException;

/**
 *
 * @author nachxs
 */

public class TripleDES {
    DES tdes = new DES();
    private static final int BLOCK_128 = 16;
    private static final int BLOCK_192 = 24;

    public String encrypt3DES(String str, String key) throws Exception {
        String enc = null;
        try {
            if (key.length() == 32) {
                byte[] keys = new byte[BLOCK_128];
                keys = FunctionByte.hex2byte(key);
                byte[] k1 = new byte[8];
                byte[] k2 = new byte[8];
                System.arraycopy(keys, 0, k1, 0, 8);
                tdes.setKey(k1);
                byte[] encode_1 = tdes.encrypt(FunctionByte.hex2byte(str));
                System.arraycopy(keys, 8, k2, 0, 8);
                tdes.setKey(k2);
                byte[] encode_2 = tdes.decrypt(encode_1);
                tdes.setKey(k1);
                byte[] encode_3 = tdes.encrypt(encode_2);
                enc = FunctionByte.toHEX1(encode_3);
                System.out.println("Encripta TipleDES: " + str + " --> " + enc);
            } else if (key.length() == 48) {
                byte[] keys = new byte[BLOCK_192];
                keys = FunctionByte.hex2byte(key);
                byte[] k1 = new byte[8];
                byte[] k2 = new byte[8];
                byte[] k3 = new byte[8];
                System.arraycopy(keys, 0, k1, 0, 8);
                tdes.setKey(k1);
                byte[] encode_1 = tdes.encrypt(FunctionByte.hex2byte(str));
                System.arraycopy(keys, 8, k2, 0, 8);
                tdes.setKey(k2);
                byte[] encode_2 = tdes.decrypt(encode_1);
                System.arraycopy(keys, 16, k3, 0, 8);
                tdes.setKey(k3);
                byte[] encode_3 = tdes.encrypt(encode_2);
                enc = FunctionByte.toHEX1(encode_3);
                System.out.println("Encripta TipleDES: " + str + " --> " + enc);
            } else {
                throw new InvalidKeyException("ERROR: Longitud de la llave incorrecta");
            }
        } catch (Exception ex) {
            throw ex;
        }
        return enc;
    }

    public String dencrypt3DES(String str, String key) throws Exception {
        String denc = "";
        try {
            if (key.length() == 32) {
                byte[] keys = new byte[BLOCK_128];
                keys = FunctionByte.hex2byte(key);
                byte[] k1 = new byte[8];
                byte[] k2 = new byte[8];
                System.arraycopy(keys, 0, k1, 0, 8);
                tdes.setKey(k1);
                byte[] decode_3 = tdes.decrypt(FunctionByte.hex2byte(str));
                System.arraycopy(keys, 8, k2, 0, 8);
                tdes.setKey(k2);
                byte[] decode_2 = tdes.encrypt(decode_3);
                tdes.setKey(k1);
                byte[] decode_1 = tdes.decrypt(decode_2);
                denc = FunctionByte.toHEX1(decode_1);
                System.out.println("Desencripta TipleDES: " + str + " --> " + denc);
            } else if (key.length() == 48) {
                byte[] keys = new byte[BLOCK_192];
                keys = FunctionByte.hex2byte(key);
                byte[] k1 = new byte[8];
                byte[] k2 = new byte[8];
                byte[] k3 = new byte[8];
                System.arraycopy(keys, 16, k3, 0, 8);
                tdes.setKey(k3);
                byte[] decode_3 = tdes.decrypt(FunctionByte.hex2byte(str));
                System.arraycopy(keys, 8, k2, 0, 8);
                tdes.setKey(k2);
                byte[] decode_2 = tdes.encrypt(decode_3);
                System.arraycopy(keys, 0, k1, 0, 8);
                tdes.setKey(k1);
                byte[] decode_1 = tdes.decrypt(decode_2);
                denc = FunctionByte.toHEX1(decode_1);
                System.out.println("Desencripta TipleDES: " + str + " --> " + denc);
            } else {
                throw new InvalidKeyException("ERROR: Longitud de la llave incorrecta");
            }
        } catch (Exception ex) {
            throw ex;
        }
        return denc;
    }
}

Vale la pena esta discusión?: Avatar hecho con Red Hat o Ubuntu

La verdad no me termina de sorprender lo que leo en algunos comentarios de algunos blogs sobre el tema de que si Avatar fue hecha con Red Hat Linux Enterprise o Ubuntu, en realidad me causa risa y preocupacion a la vez viendo como gente pierde el tiempo creando discuciones tontas o que no tiene ningun sentido y mas aun si no tiene ningun aporte al sotware libre, cuando entenderemos que GNU/Linux es uno solo, la diferencia son los nombres de cada distribucion, las aplicaciones que se instalan y el tunning que se realiza para un uso especifico nada mas, lo único que debemos entender es que sí se utilizó GNU/Linux y punto no hay mas, eso para nosotros deberia ser suficiente como comunidad, ademas esto no es de ahora ya varios studios cinematograficos tales como pixar utilizan GNU/Linux como parte de sus  herramientas de desarrollo (renderizado especificamente), no se que nos sorprende. GNU/Linux ha sobresalido y seguira haciendolo en muchos campos de acción, no entiendo cual es la sorpresa.

Evitemos discuciones tontas y mejor aportemos con cosas mas productivas a la comunidad.