Java密码学问题(AES-ECB加密)

时间:2012-02-07 17:38:33

标签: java security encryption aes bit-manipulation

1)我无法在JCE AES加密的任何地方找到Java实现,但是有人知道它作为参数的字节数组是被视为有符号还是无符号?我使用的代码是:

public static byte [] ecbAesEncrypt(byte [] key, byte [] currentVector) {
        SecretKeySpec keySpec = null;
        Cipher cipher = null;
        byte [] encryptedValue = null;

        try {
            keySpec = new SecretKeySpec(key, "AES");

            cipher = Cipher.getInstance("AES/ECB/NoPadding");
            cipher.init(Cipher.ENCRYPT_MODE, keySpec);

            encryptedValue = cipher.doFinal(currentVector);
        }
        catch (Exception e) {
            e.printStackTrace();
            return null;
        }

        if (DEBUG)
            printHex("AES-ECB encrypt: ", encryptedValue);

        return encryptedValue;
    }

2)2个有符号字节的按位异或会给出与2个无符号字节的按位异或相同的结果吗?通过这个我的意思是只是位表示将是相同的。我想是的,但只想确定。

3)问题1有点相关,什么按位运算会在有符号和无符号字节之间产生不同的结果?

1 个答案:

答案 0 :(得分:2)

AES将字节视为纯二进制数据。不是带有符号或没有符号的数字。

Java中没有无符号字节。他们总是签名。但只有当你对它们进行整数红细胞生成时,这个标志才有意义。

Java tutorial中描述了按位运算符。