mirror of
https://git.um-react.app/um/lib_um_crypto_rust.git
synced 2026-03-08 04:29:54 +00:00
[kgm/ncm/kwm] refactor: improve performance for large file
This commit is contained in:
@@ -11,10 +11,8 @@ const KEY: [u8; 0x20] = [
|
||||
impl CipherV1 {
|
||||
pub fn new(resource_id: u32) -> Self {
|
||||
let mut key = KEY;
|
||||
for (k, r) in key
|
||||
.iter_mut()
|
||||
.zip(resource_id.to_string().as_bytes().iter().cycle())
|
||||
{
|
||||
let resource_id = resource_id.to_string();
|
||||
for (k, &r) in key.iter_mut().zip(resource_id.as_bytes().iter().cycle()) {
|
||||
*k ^= r;
|
||||
}
|
||||
|
||||
@@ -26,10 +24,9 @@ impl CipherV1 {
|
||||
T: AsMut<[u8]> + ?Sized,
|
||||
{
|
||||
let data = data.as_mut();
|
||||
let key_stream = self.key.iter().cycle().skip(offset % self.key.len());
|
||||
|
||||
for (datum, key) in data.iter_mut().zip(key_stream) {
|
||||
*datum ^= *key;
|
||||
for (datum, offset) in data.iter_mut().zip(offset..) {
|
||||
*datum ^= self.key[offset % self.key.len()];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user