Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java Security  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 关于把加密后的信息存入数据库的问题
eagle110





发贴: 12
积分: 0
于 2004-07-06 08:22 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我写了一个加密、解密的包,在运用过程中由于要把进行加密后的数据存入数据库,我做了如下试验:向包中输入一个String值,如“12345678”,进行加密后(用DESede方法),返回一个byte数组,打印在控制台上显示为“114,-99,-93,-119,87,5,-7,1,-17,16,-55,-10,39,-49,-13,93”;我的数据库中在一个表中有一列值为charMusical Note,要把这个数据存入这一列,请问应该如何处理加密后的数据?另外,我在表中设的列值charMusical Note是否合适?


作者 Re:关于把加密后的信息存入数据库的问题 [Re:eagle110]
Jove



CJSDN高级会员


发贴: 1228
积分: 194
于 2004-07-06 09:47 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
可以把byte[]变为一个16进制的字符串,保存在数据库

  /**
   * 把二进制流转换成十六进制的文本
   * @param bytes
   * @param wantCapital 是否需要大写,默认输出的十六进制字符都是小写的
   * @return
   */
  private static String bytes2hex(byte[] bytes, boolean wantCapital) {
    StringBuffer buf = new StringBuffer(bytes.length * 2);
    for (int pos = 0; pos < bytes.length; pos++) {
      int n = bytes[pos] & 0xFF;
      buf.append(halfByte2hex((n >> 4) & 0xF));
      buf.append(halfByte2hex(n & 0xF));
    }
    String rv = buf.toString();
    if (wantCapital) {
      return rv;
    } else {
      return rv.toLowerCase();
    }
  }

  private static char halfByte2hex(int n) {
    //ensure: 0 <= n <= 15
    return (char) (n > 9 ? 'A' + n - 10 : '0' + n);
  }



作者 Re:关于把加密后的信息存入数据库的问题 [Re:eagle110]
eagle110





发贴: 12
积分: 0
于 2004-07-06 10:01 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
首先要谢谢楼上的朋友能回应,但是我的问题好象还没有解决(可能是我太笨了)。

对于把byte数组转化成String,我也早就做过了,程序也早就写好了,但是就象上面我讲的,如果转换成String后,打印在控制台上是“729DA3895705F901EF10C9F627CFF35D”,而我的数据库里设的列值是charMusical Note,如何把这个String值存到数据库中这个列里呢?(可能这是个基础问题,但我还是不太明白)



作者 Re:关于把加密后的信息存入数据库的问题 [Re:eagle110]
Jove



CJSDN高级会员


发贴: 1228
积分: 194
于 2004-07-06 10:20 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
若建表时该字段为CHAR(32),则表示最多存放32位的字符串

String sql="insert into tab(sec,f1,f2,f3,f4) values(?,?,?,?,?)";
PreparedStatement pStat=conneciton.prepareStatement(sql);
pStat.setString(1,"729DA3895705F901EF10C9F627CFF35D");
...
pStat.executeUpdate();
...



作者 Re:关于把加密后的信息存入数据库的问题 [Re:eagle110]
eagle110





发贴: 12
积分: 0
于 2004-07-06 10:58 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
谢谢!因为我现在做的项目中数据库中这一列只设计了8个字符,如果是32个字符的话,我早就可以处理了;但是项目经理说可以经过转化存入进去的,所以我才不知道怎么转化后存,想问问高手们是否可以转化后存入8个字符的列中!


作者 Re:关于把加密后的信息存入数据库的问题 [Re:eagle110]
jeffrey_he





发贴: 21
积分: 0
于 2004-07-12 13:15 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
自己写个简单加密算法,加密后字符串长度不变就可以了。


作者 Re:关于把加密后的信息存入数据库的问题 [Re:eagle110]
fatboyslim





发贴: 53
积分: 11
于 2004-07-16 15:55 user profilesend a private message to usersend email to fatboyslimsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我猜你老板的意思是缩减比特位吧?你看我说得对不对阿
一般一个char是16位,存一个字母会浪费高位,如果把这些零取掉,总长度就短了。
作毕设的时候我做的是加密算法,这个缩位问题也碰上了,需要的话回家我把代码找出来:p




flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923