longjianlandray 2010-01-12 15:00
浏览 559
已采纳

如何用IBM的jdk 写DES 加密程序啊?????

import java.security.Key;
import java.security.SecureRandom;
import java.util.Scanner;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

//使用DES加密与解密,可对byte[],String类型进行加密与解密
//密文可使用String,byte[]存储.
//方法:
//void getKey(String strKey)从strKey的字条生成一个Key
//String getEncString(String strMing)对strMing进行加密,返回String密文
//String getDesString(String strMi)对strMin进行解密,返回String明文
//byte[] getEncCode(byte[] byteS)byte[]型的加密
//byte[] getDesCode(byte[] byteD)byte[]型的解密

public class DES{

  public static Key key;
//根据参数生成KEY
public static void getKey(String strKey){
    try{
        KeyGenerator _generator = KeyGenerator.getInstance("DES");
        _generator.init(new SecureRandom(strKey.getBytes()));
        key = _generator.generateKey();
        _generator=null;
    }catch(Exception e){
        e.printStackTrace();
    }
}

//考试大提示加密String明文输入,String密文输出
public static String getEncString(String strMing){
    byte[] byteMi = null;
    byte[] byteMing = null;
    String strMi ="";
    BASE64Encoder base64en = new BASE64Encoder();
    try{
        byteMing = strMing.getBytes("UTF-8");
        byteMi = getEncCode(byteMing);
        strMi = base64en.encode(byteMi);
    }catch(Exception e){
        e.printStackTrace();
    }finally{
        base64en = null;
        byteMing = null;
        byteMi = null;
    }
    return strMi;
}

//解密 以String密文输入,String明文输出
public static String getDesString(String strMi) throws Exception{
    BASE64Decoder base64De = new BASE64Decoder();
    byte[] byteMing = null;
    byte[] byteMi = null;
    String strMing = "";
    try{
        byteMi = base64De.decodeBuffer(strMi);
        byteMing = getDesCode(byteMi);
        strMing = new String(byteMing,"UTF-8");
    }catch(Exception e){
        throw e;
    }finally{
        base64De = null;
        byteMing = null;
        byteMi = null;
    }
    return strMing;
}

//加密以byte[]明文输入,byte[]密文输出
private static byte[] getEncCode(byte[] byteS){
    byte[] byteFina = null;
    Cipher cipher;
    try{
        cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.ENCRYPT_MODE,key);
        byteFina = cipher.doFinal(byteS);
    }catch(Exception e){
        e.printStackTrace();
    }finally{
        cipher = null;
    }
    return byteFina;
}

//考试大解密以byte[]密文输入,以byte[]明文输出
//@param byteD
//@return

private static byte[] getDesCode(byte[] byteD) throws Exception{
    Cipher cipher;
    byte[] byteFina=null;
    try{
        cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.DECRYPT_MODE,key);
        byteFina = cipher.doFinal(byteD);
    }catch(Exception e){
        throw e;
    }finally{
        cipher=null;
    }
    return byteFina;
}

//加密字符串,返回String的密文
public static String getCryptograph(String str){
     getKey("MYKEY11ERDCDVEIOKPUE");//生成密匙
     String strEnc = getEncString(str);
     return strEnc;
}

//把String 类型的密文解密
public static String getDisplay(String cryptograph) throws Exception{
     String strEnc=null;
    try {
        getKey("MYKEY11ERDCDVEIOKPUE");
        strEnc = getDesString(cryptograph);
    } catch (Exception e) {
        throw e;
    }
    return strEnc;
}

public static void main(String[] args){
    try {
        while(true){
            Scanner san=new Scanner(System.in);
            String str=san.nextLine();
             getKey("MYKEY11ERDCDVEIOKPUE");//生成密匙
            String strEnc = getEncString(str);
            System.out.println(strEnc);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

一用IBM 的jdk 就报错 如何解决

[b]问题补充:[/b]
说了半天 具体怎么解决啊????大哥

  • 写回答

4条回答 默认 最新

  • wanghaolovezlq 2010-01-12 16:48
    关注

    好像换成
    import com.ibm.misc.BASE64Decoder;
    import com.ibm.misc.BASE64Encoder;

    参考下这文章
    http://www.iteye.com/topic/540018

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮