关于银行用的DES算法怎么写      
MAC算法如下:
算法定义:采用DES CBC算法。
初始数据:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00。
原始数据:
补位数据:若原始数据不是8的倍数,则右补齐0x00。若原
始数据为8的整数倍,则不用补齐0x00。
请问我应该怎么做

解决方案 »

  1.   

    可否直接用类库的DES加密算法啊,如果可以的话,就万事OK
      

  2.   

    public static byte[] des (byte[] plaintext, byte[] key) throws Exception {
    //产生一个可信任的随机数源
    java.security.SecureRandom sr = new java.security.SecureRandom();
    //从原始密钥数据创建DESKeySpec对象
    java.crypto.spec.DESKeySpec dks = new java.crypto.spec.DESKeySpec (key);
    //创建一个密钥工厂,然后用它把DESKeySpec转换成Secret Key对象
    java.crypto.SecretKeyFactory keyFactory = java.crypto.SecretKeyFactory.getInstance("DES");
    java.crypto.SecretKey keySpec = keyFactory.generateSecret(dks);
    //Cipher对象实际完成加密操作
    java.crypto.Cipher cipher = java.crypto.Cipher.getInstance("DES/ECB/NoPadding");
    //用密钥初始化Cipher对象
    cipher.init(Cipher.ENCRYPT_MODE, keySpec, sr);
    //执行加密操作
    int length = plaintext.length;
    byte[] temp;
    // 以下循环进行补位
    if (length % 8 != 0) {
    while (length % 8 != 0) length ++;
    temp = new byte [length];
    System.arraycopy (plaintext, 0, temp, 0, plaintext.length);
    for (int i = plaintext.length; i < temp.length; i ++) temp [i] = 0;
    } else
    temp = plaintext;
    return cipher.doFinal (temp);
    }