首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

java-Delphi -ANSI X9.9 MAC 算法,该怎么解决

2012-09-08 
java-Delphi ---------ANSI X9.9 MAC 算法功能是实现MAC算法,下面是Java版本的,用到了DES,如果大家有delph

java-Delphi ---------ANSI X9.9 MAC 算法
功能是实现MAC算法,下面是Java版本的,用到了DES,如果大家有delphi版本的MAC算法,贴上,就不用翻译底下的java版本了,如果没的话,帮忙翻译一下,其中涉及Des部分(红色部分),就不需要翻译了。谢谢

Java code
/**     * 实现ECB加密,返回16位十六进制MAC码,如果出现异常返回null     *      * @param input     *            明文     * @param key     *            密钥十六进制(明文)     * @return 8位MAC码     */    public String ecbEncrypt(String input, String key) {        byte[] mac = new byte[8];        byte[] temp = new byte[8];        int z = 0;        try {            byte[] bt = input.getBytes("iso-8859-1");            int len = bt.length;            int other = len % 8;            // 如果密文最后不足8个字节,则以0补足            if (other != 0) {                byte[] tt = bt;                bt = new byte[tt.length + (8 - other)];                System.arraycopy(tt, 0, bt, 0, len);            }            // 初始化mac数组,最明文的前8个字节,用来进行循环异或            for (int i = 0; i < 8; i++) {                mac[i] = bt[i];            }            // 循环异或            for (int i = 8; i <= bt.length; i++, z++) {                if (i != 8 && i % 8 == 0) {                    for (int j = 0; j < 8; j++) {                        mac[j] = (byte) (mac[j] ^ temp[j]);                    }                    z = 0;                    temp = new byte[8];                }                if (i != bt.length) {                    temp[z] = bt[i];                }            }            byte[] tmpResult = new byte[8];// 用来存放异或结果            tmpResult = [color=#FF6600]des(mac, String2Hex(key));[/color]                    return Hex2String(tmpResult).toUpperCase();        } catch (Exception e) {            return null;        }    }


[解决办法]
两块钱?:)

热点排行