CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  非技术区

<求救>DES及3DES加密算法

楼主dj0517(小可)2005-04-11 10:43:38 在 Java / 非技术区 提问

请问在哪可以找到DES及3DES的源代码(Java版)啊!?  
  问题点数:30、回复次数:17Top

1 楼an_andy()回复于 2005-04-11 10:45:33 得分 0

顶帖也是解决的前提...Top

2 楼dj0517(小可)回复于 2005-04-11 11:01:10 得分 0

哪里有下的呀!? 急用 ̄ ̄Top

3 楼xuetinge(薛挺)回复于 2005-04-11 11:20:28 得分 20

看看这个。  
  http://community.csdn.net/Expert/TopicView.asp?id=3787998Top

4 楼dj0517(小可)回复于 2005-04-11 11:36:11 得分 0

真的很感谢 ̄ ̄ ̄Top

5 楼dj0517(小可)回复于 2005-04-11 13:42:40 得分 0

为什么我输出不了结果呢,改后代码如下:  
  import   java.security.*;  
   
  import   javax.crypto.*;  
  import   javax.crypto.spec.*;  
   
  import   java.util.*;  
  import   java.io.*;  
  public   class   DES   {  
  /**  
        *   DES   加密算法  
        *   @param   data   处理数据  
        *   @param   key     密钥  
        *   @param   mode   =0加密     =1解密  
        */  
      public   static   String   des(String   data,String   key,int   mode)  
      {  
      if(mode   ==   0   )  
      {  
      mode   =   Cipher.ENCRYPT_MODE;  
      }else{  
      mode   =   Cipher.DECRYPT_MODE;  
      }  
      try{  
      Cipher   cipher   =   Cipher.getInstance("DES");  
              SecretKeySpec   spec   =   new   SecretKeySpec(key.getBytes(),"DES");  
              Key   deskey   =   spec;  
            cipher.init(mode,   deskey);      
              return   crypt(new   ByteArrayInputStream(data.getBytes()),cipher);  
      }catch(Exception   e)  
  {  
      e.printStackTrace();  
      return   "";  
  }  
       
       
      }  
       
      private   static   String   crypt(InputStream   in,Cipher   cipher)throws   IOException,    
   
  GeneralSecurityException  
      {  
            int   blockSize   =   cipher.getBlockSize();  
            int   outputSize   =   cipher.getOutputSize(blockSize);  
            byte[]   inBytes   =   new   byte[blockSize];  
            byte[]   outBytes   =   new   byte[outputSize];  
            ByteArrayOutputStream   out   =   new   ByteArrayOutputStream();  
            int   inLength   =   0;;  
            boolean   more   =   true;  
            while   (more)  
            {  
                  inLength   =   in.read(inBytes);  
                  if   (inLength   ==   blockSize)  
                  {  
                        int   outLength    
                              =   cipher.update(inBytes,   0,   blockSize,   outBytes);  
                        out.write(outBytes,   0,   outLength);  
                        System.out.println(outLength);  
                  }  
                  else   more   =   false;                    
            }  
            if   (inLength   >   0)  
                  outBytes   =   cipher.doFinal(inBytes,   0,   inLength);  
            else  
                  outBytes   =   cipher.doFinal();  
            System.out.println(outBytes.length);  
            out.write(outBytes);  
            return   new   String(out.toByteArray());  
      }  
  public   static   void   main(String[]   args)   {  
                            DES   des   =   new   DES();  
                            System.out.println(des.des("123","wer",1));  
  }  
  }Top

6 楼dj0517(小可)回复于 2005-04-11 13:44:18 得分 0

显示错误为:  
   
  java.security.InvalidKeyException:   Invalid   key   length:   3   bytes  
                  at   com.sun.crypto.provider.DESCipher.engineGetKeySize(DashoA6275)  
                  at   javax.crypto.Cipher.b(DashoA12275)  
                  at   javax.crypto.Cipher.a(DashoA12275)  
                  at   javax.crypto.Cipher.a(DashoA12275)  
                  at   javax.crypto.Cipher.a(DashoA12275)  
                  at   javax.crypto.Cipher.init(DashoA12275)  
                  at   javax.crypto.Cipher.init(DashoA12275)  
                  at   DES.des(DES.java:27)  
                  at   DES.main(DES.java:71)  
   
  Invalid   key   length:   3   bytes 什么意思啊!?Top

7 楼xuetinge(薛挺)回复于 2005-04-11 13:55:48 得分 0

http://javaalmanac.com/egs/javax.crypto/pkg.html  
  Top

8 楼dj0517(小可)回复于 2005-04-11 14:00:42 得分 0

能直接告诉我问题所在吗!? 我英文不太好哦,要看懂不是很容易。。。。Top

9 楼ChDw(米)回复于 2005-04-11 14:11:52 得分 10

因为绝对不可以将加密后的数据变成String  
  唉,你必须清楚,这个byte[]根本不是字符串,这样一转换就存在丢失了  
  所以你应该使用sun.misc.BASE64Encoder来将它们变成String,而绝对不是new   StringTop

10 楼dj0517(小可)回复于 2005-04-11 14:19:17 得分 0

我调用时没有用new   string啊,而是直接去调的,因为返回值就是String型的。。。  
  如下:  
     
    public   static   String   des(String   data,String   key,int   mode)  
   
  你的意思是我在调用时出错,还是这个方法String   des()本身就是错的。。。。!?  
   
   
  Top

11 楼dj0517(小可)回复于 2005-04-11 14:19:43 得分 0

我调用时没有用new   string啊,而是直接去调的,因为返回值就是String型的。。。  
  如下:  
     
    public   static   String   des(String   data,String   key,int   mode)  
   
  你的意思是我在调用时出错,还是这个方法String   des()本身就是错的。。。。!?Top

12 楼dj0517(小可)回复于 2005-04-11 14:29:38 得分 0

你指的是这句错吗!?return   new   String(out.toByteArray());  
   
  “sun.misc.BASE64Encoder”是什么东东啊,为什么我在JDK文档中查不到,要怎么使用啊!?Top

13 楼lasthope(学生)回复于 2005-04-11 15:23:11 得分 0

捧场来了,接分来了Top

14 楼ChDw(米)回复于 2005-04-11 15:41:53 得分 0

就是这句错误了:return   new   String(out.toByteArray());  
   
  sun.misc.BASE64Encoder是一个没有在JDK文档中的类,方法也就两三个啦,从方法名就可以知道意思  
  它可以完成base64编码,对应的有sun.misc.BASE64Decoder  
   
  这两个类经常会有用的,你只有肯定byte[]的确是一个可见字符的字符串时才可以调用new   String  
   
  否则就使用sun.misc.BASE64Encoder或者其它不会产生丢失数据(如逐个byte   to   String)的方法来进行转换Top

15 楼dj0517(小可)回复于 2005-04-11 15:51:28 得分 0

谢谢。。。  
  是这样写吗!?return   sun.misc.BASE64Encoder(out.toByteArray());Top

16 楼zyf128(狂风)回复于 2005-04-19 22:25:13 得分 0

怎么用:sun.misc.BASE64Encoder啊?Top

17 楼dj0517(小可)回复于 2005-04-25 09:30:33 得分 0

这样用。。。  
   
  String   pw="中文";  
  System.out.println(pw);  
  pw=new   sun.misc.BASE64Encoder().encode(pw.getBytes());  
  System.out.println(pw);  
  Top

相关问题

  • 关于DES加密算法
  • 求!!DES加密算法!!
  • DES加密算法的原程序或例子及使用说明?
  • 寻求java加密算法及实例
  • 一个软件的正版用户验证方案的问题以及DES加密算法的问题。
  • 谁知道哪有DES加密算法的C++实现代码?
  • 加密算法DES,3DES的资料哪儿有啊? 高分求教!
  • 哪位有DES的16位加密算法
  • 谁有加密算法的源程序,比如des、rc4等
  • DES加密算法的JAVA实现,最好有源代码:-)

关键词

  • sun
  • 数据
  • cipher
  • misc
  • des
  • base64encode
  • pw
  • tobytearray
  • mode
  • crypto

得分解答快速导航

  • 帖主:dj0517
  • xuetinge
  • ChDw

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo