当前位置:  开发笔记 > 编程语言 > 正文

用java加密整数

如何解决《用java加密整数》经验,为你挑选了3个好方法。

我正在尝试使用java.security和javax.crypto加密java中的一些整数.

问题似乎是Cipher类只加密字节数组.我不能直接将整数转换为字节字符串(或者我可以?).做这个的最好方式是什么?

我应该将整数转换为字符串,将字符串转换为byte []吗?这看起来效率太低了.

有谁知道快速/简单或有效的方法吗?

请告诉我.

提前致谢.

JBU



1> jodonnell..:

您可以使用DataOutputStream将ints转换为byte [],如下所示:

ByteArrayOutputStream baos = new ByteArrayOutputStream ();
DataOutputStream dos = new DataOutputStream (baos);
dos.writeInt (i);
byte[] data = baos.toByteArray();
// do encryption

然后再解密它:

byte[] decrypted = decrypt (data);
ByteArrayInputStream bais = new ByteArrayInputStream (data);
DataInputStream dis = new DataInputStream (bais);
int j = dis.readInt();



2> asalamon74..:

您还可以使用BigInteger进行转换:

 BigInteger.valueOf(integer).toByteArray();



3> James Schek..:

只需使用NIO.它专为此特定目的而设计.ByteBuffer和IntBuffer将快速,高效,优雅地完成您的需求.它将处理大/小端字节转换,高性能IO的"直接"缓冲区,甚至可以将数据类型混合到字节缓冲区中.

将整数转换为字节:

ByteBuffer bbuffer = ByteBuffer.allocate(4*theIntArray.length);
IntBuffer ibuffer = bbuffer.asIntBuffer(); //wrapper--doesn't allocate more memory
ibuffer.put(theIntArray);                  //add your int's here; can use 
                                           //array if you want
byte[] rawBytes = bbuffer.array();         //returns array backed by bbuffer--
                                           //i.e. *doesn't* allocate more memory

将字节转换为整数:

ByteBuffer bbuffer = ByteBuffer.wrap(rawBytes);
IntBuffer ibuffer = bbuffer.asIntBuffer();
while(ibuffer.hasRemaining())
   System.out.println(ibuffer.get());      //also has bulk operators

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有