以下是我正在使用的代码:
byte[] encodedBytes1 = null;
byte[] encodedBytes2 = null;
try {
Cipher c = Cipher.getInstance(encryptationMode);
c.init(Cipher.ENCRYPT_MODE, key);
encodedBytes1 = c.doFinal(TestText1.getBytes());
encodedBytes2 = c.doFinal(TestText2.getBytes());
} catch (Exception e) {
//Log.e(TAG, "AES encryption error");
}
byte[] encodedHomo = null;
boolean encoded1_2 = TestText1.getBytes() || TestText2.getBytes();
因此,我尝试对encodedBytes1
和encodedBytes2
执行按位操作,并创建新值encodedHomo
(我的项目是AES算法的同态加密)。为什么我不能对类型byte[]
执行按位运算操作? byte
和byte[]
类型之间的区别是什么?
答案 0 :(得分:0)
如果要在两个字节数组之间进行按位OR,则需要为每个字节执行此操作。
byte
注意:两个byte[]
或两个|
没有byte
次操作。<!--- badges.html -->
<ul>
{% for badge in badges %}
<li> {{ badge }} </li>
{% endfor %}
</ul>
只有show_badges
答案 1 :(得分:-1)
按位运算对原始数据类型起作用,数组不是原始数据类型。
例如,按位OR运算对数字具有良好定义的行为,但对于复合对象(不仅仅是'由位'组成)不具有明确定义的行为。
答案 2 :(得分:-1)
Java不是C.你的byte[]
对象不是指向很多位的指针。
您必须在byte
s中的每个 byte[]
上进行按位操作。