|
@@ -13,6 +13,7 @@ fun ByteArray.compress(level: Int = java.util.zip.Deflater.BEST_COMPRESSION): By
|
|
|
val j_infl = java.util.zip.Deflater(level)
|
|
|
defer { j_infl.end() }
|
|
|
j_infl.setInput(this@compress)
|
|
|
+ j_infl.finish()
|
|
|
val j_bufs = java.io.ByteArrayOutputStream()
|
|
|
defer { j_bufs.close() }
|
|
|
val j_out = ByteArray(4096)
|
|
@@ -74,6 +75,20 @@ fun ByteArray.xor(key: ByteArray): ByteArray {
|
|
|
return ByteArray(size) { j_i -> (this[j_i].toInt() xor key[j_i % j_keysize].toInt()).toByte() }
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * 使用指定的密钥对当前字节数组执行逐字节的 XOR 操作。
|
|
|
+ * 如果当前字节数组或密钥为空,则不会进行任何操作并直接返回当前字节数组。
|
|
|
+ *
|
|
|
+ * @param key 用于执行 XOR 操作的密钥字节数组。密钥将按其长度循环用于操作。
|
|
|
+ * @return 经过 XOR 操作后的当前字节数组。操作是在当前数组上就地进行。
|
|
|
+ */
|
|
|
+fun ByteArray.xorc(key: ByteArray): ByteArray {
|
|
|
+ if (this.isEmpty() || key.isEmpty()) return this
|
|
|
+ val j_keysize = key.size
|
|
|
+ for (j_i in this.indices) this[j_i] = (this[j_i].toInt() xor key[j_i % j_keysize].toInt()).toByte()
|
|
|
+ return this
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* 将字节数组的指定位置转换为短整型(Short)。
|
|
|
*
|