如何将"[B@17da562"这样的字符传转换成byte[]
谢谢

解决方案 »

  1.   

    String str = "[B@17da562";
    str.getBytes()
      

  2.   

    String类
    方法
    public byte[] getBytes()
    用平台默认的字符集将此 String 解码为字节序列,并将结果存储到一个新的字节数组中
      

  3.   

    可能我说得不太清楚
    "[B@17da562"这个实际上是已经得到的byte[]
    只不过是在一个URL的参数中
    但是JSP程序通过这个URL参数,实际上得到的是一个String了
    我怎样将"[B@17da562"这个结果再转换成byte[]?
      

  4.   

    String name=request.getParameter("name"); 
    if(name==null) name=""; 
    byte b[]=name.getBytes("GBK");
      

  5.   

    原来“[B@17da562”是内存表示啊。我说怎么看着眼熟呢。
    要是通过URL传的话。需要你在URL中起很多的相同的名字。
    如:aaa.do?bytes=a&bytes=b&bytes=c&bytes=d
    然后在服务器端用:
    String[] bytes = requery.getParameterValues("bytes")
    即可
      

  6.   

    楼主的那个"[B@17da562"是内存地址·
      

  7.   

    怎样对JSP中采用DES加密的参数解密?
    我有一个类似"http://10.143.137.25/web800/call/a.jsp?key=[B@17da562"这样的URL
    怎样对key解密?另外,我已经拥有了
    /**
     * DES加密的,文件中共有两个方法,加密、解密
     * @author Lion
     * @author www.lionsky.net
     */
    这样的JAVA例程
    但我不知道对已经得到的类似[B@17da562这样的字串怎么解密
      

  8.   

    恩。想了想还是有些关系的。你既然有DES解密的方式。那就把[B@17da562解密试试啊。
    不过说实话,我怎么都觉得这个[B@17da562像内存的显示
      

  9.   

    我有一个类似"http://10.143.137.25/web800/call/a.jsp?key=[B@17da562"这样的URL 
    其中key已经采用DES加密
    怎样对key解密? 
      

  10.   

    ? 难道是这样?String key = request.getParameter("key");
    if(key!=null){
        key = 你的DES解密方法.解密(key);
    }
      

  11.   

    我有一个类似"http://10.143.137.25/web800/call/a.jsp?key=[B@17da562"这样的URL 
    其中key已经采用DES加密 现在我的key到底是String 还是 byte[]?
      

  12.   

    package com.wisdom.web;import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import javax.crypto.NoSuchPaddingException;
    import javax.crypto.SecretKey;
    import java.security.NoSuchAlgorithmException;
    import java.security.Security;
    /**
     * DES加密的,文件中共有两个方法,加密、解密
     * @author Lion
     * @author www.lionsky.net
     */
    public class DES {
        private String Algorithm = "DES";
        private KeyGenerator keygen;
        private SecretKey deskey;
        private Cipher c;
        private byte[] cipherByte;    /**
         * 初始化 DES 实例
         */
        public DES() {
              init();
        }    public void init() {
            Security.addProvider(new com.sun.crypto.provider.SunJCE());
            try {
                   keygen = KeyGenerator.getInstance(Algorithm);
                   deskey = keygen.generateKey();
                   c = Cipher.getInstance(Algorithm);
             }
             catch(NoSuchAlgorithmException ex){
                ex.printStackTrace();
            }
             catch(NoSuchPaddingException ex){
                ex.printStackTrace();
            }
           }    /**
         * 对 String 进行加密
         * @param str 要加密的数据
         * @return 返回加密后的 byte 数组
         */
         public byte[] createEncryptor(String str) {
            try {
                 c.init(Cipher.ENCRYPT_MODE, deskey);
                 cipherByte = c.doFinal(str.getBytes());
            }
            catch(java.security.InvalidKeyException ex){
                ex.printStackTrace();
            }
            catch(javax.crypto.BadPaddingException ex){
                ex.printStackTrace();
            }
            catch(javax.crypto.IllegalBlockSizeException ex){
                ex.printStackTrace();
            }
            return cipherByte;
         }    /**
         * 对 Byte 数组进行解密
         * @param buff 要解密的数据
         * @return 返回加密后的 String
         */
         public String createDecryptor(byte[] buff) {
            try {
               c.init(Cipher.DECRYPT_MODE, deskey);
               cipherByte = c.doFinal(buff);
            }
            catch(java.security.InvalidKeyException ex){
                ex.printStackTrace();
            }
            catch(javax.crypto.BadPaddingException ex){
                ex.printStackTrace();
            }
            catch(javax.crypto.IllegalBlockSizeException ex){
                ex.printStackTrace();
            }
            return (new String(cipherByte));
         }
    }
      

  13.   

    我用createDecryptor(key.getBytes())为什么不行呢?
      

  14.   

    楼主的[B@17da562其实上 直接或间接调用byte[]的toString方法获得的字符串,
    我想要达到楼主的意愿估计很难。
    但是我觉得你可以改变设计思路,不直接传byte[]的toString()方法的结果
    (可能是你隐式的调用,比如用了 +操作符等),
    你要硬传给url也可以,比byte[]里的内容取出来再传,但要注意几个问题:
    1,特殊字符可能被转换,比如 字节数组里可能有(byte)'&'等要进行处理
    2,数组太长用GET方法没法传你如果硬要这么作可以采用HttpConnection等对象来操作
    建议你改进你的设计
      

  15.   

    当然不行了。
    当你调用 createEncryptor时,他把一个字符串加密后放入了Byte[]中了。
    而你有想通过Http传到另外的页面进行解密。你要知道目前的网络传输全是基于字符串的。
    数组是不可以直接传输的。你这里传的其实是加密后的Byte[]数组的内存地址。
    两个方法:
    1.你需要再传之前先把这个Byte连成字符串key ,然后在a.jsp再调用createDecryptor(key.getBytes())2.像我先前说的那样。把加密后的Byte[]连成bytes=a&bytes=b&bytes=c&bytes=d 传过去也可以第二种方法一定是可以的。第一中我不敢肯定,你可以试试。