关于银行用的DES算法怎么写
MAC算法如下:
算法定义:采用DES CBC算法。
初始数据:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00。
原始数据:
补位数据:若原始数据不是8的倍数,则右补齐0x00。若原
始数据为8的整数倍,则不用补齐0x00。
请问我应该怎么做
MAC算法如下:
算法定义:采用DES CBC算法。
初始数据:0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00。
原始数据:
补位数据:若原始数据不是8的倍数,则右补齐0x00。若原
始数据为8的整数倍,则不用补齐0x00。
请问我应该怎么做
//产生一个可信任的随机数源
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);
}