本文共 1524 字,大约阅读时间需要 5 分钟。
上一篇文章已经讲述了如何用Kryo对对象进行序列化和还原,但序列化后的数据在储存、传送的过程中需要加密处理,那么我们应该怎么做呢?
Kryo自带了BlowfishSerializer序列化器可轻松对任何类进行加解密,看下面的应用吧:
我们把testBean方法修改一下,加入Blowfish算法的加密:
public static void testBeanWithEncrypt() throws NoSuchAlgorithmException{ Kryo kryo=new Kryo(); byte[] key = KeyGenerator.getInstance("Blowfish").generateKey().getEncoded(); kryo.register(TestBean.class,//new BeanSerializer(kryo, TestBean.class)); new BlowfishSerializer(new BeanSerializer没看错,仅仅是把BeanSerializer换成BlowfishSerializer就可以了。 Kryo的BlowfishSerializer提供了源代码,你很容易将其衍生出AESSerializer或AESZipSerializer等等。(kryo,TestBean.class), key)); //注册TestBean的 Serializer为BlowfishSerializer TestBean tb1=new TestBean(); tb1.setStrVal("test1"); tb1.setHashMapVal(new HashMap ()); tb1.getHashMapVal().put("k1", "v1"); tb1.getHashMapVal().put("k2", "v2"); int[] ints=new int[3]; ints[0]=1; ints[1]=2; ints[2]=3; tb1.setIntArray(ints); Output output=new Output(1, 1024); kryo.writeObject(output, tb1); output.close(); byte[] data=output.toBytes(); //[1, -4, -11, 19, 57, 102, 105, 3, -43, -24, -40, -34, 39, 84, 124, -73, 92, 13, 56, -128, -13, 107, -6, -98, -48, 40, -44, 111, -3, -73, -19, 68, -104, -40, -79, -4, 68, -79, -83, -16, -106, 117, 68, 57, 24, 3, 94, 1, 104, -104, 51, -82, -32, 85, 23, 91, 48] Input i=new Input(data); i.close(); TestBean tb2= (TestBean)kryo.readObject(i, TestBean.class); System.out.println(tb2.strVal); System.out.println(tb2.hashMapVal.get("k1")); System.out.println(tb2.intArray[2]); }
转载地址:http://hlzfi.baihongyu.com/