diff --git a/src/utils/cipher.ts b/src/utils/cipher.ts index f75c1e3..3121e8d 100644 --- a/src/utils/cipher.ts +++ b/src/utils/cipher.ts @@ -1,28 +1,20 @@ -function decryptResIndex(encData: Uint8Array, key: string): Uint8Array { +function processResIndex(data: Uint8Array, key: string, isEncrypt: boolean): Uint8Array { const keyBytes = Buffer.from(key, 'utf-8'); - const keyLength = keyBytes.length; - const result = new Uint8Array(encData.length); - for (let i = 0; i < encData.length; i++) { - const encByte = encData[i]!; - const keyByte = keyBytes[i % keyLength]!; - result[i] = (encByte - keyByte + 256) % 256; + const result = new Uint8Array(data.length); + + for (let i = 0; i < data.length; i++) { + const keyByte = keyBytes[i % keyBytes.length]!; + result[i] = isEncrypt ? (data[i]! + keyByte) % 256 : (data[i]! - keyByte + 256) % 256; } return result; } +function decryptResIndex(encData: Uint8Array, key: string): Uint8Array { + return processResIndex(encData, key, false); +} + function encryptResIndex(plainData: Uint8Array, key: string): Uint8Array { - const keyBytes = Buffer.from(key, 'utf-8'); - const keyLength = keyBytes.length; - const result = new Uint8Array(plainData.length); - for (let i = 0; i < plainData.length; i++) { - const plainByte = plainData[i]!; - const keyByte = keyBytes[i % keyLength]!; - result[i] = (plainByte + keyByte) % 256; - } - return result; + return processResIndex(plainData, key, true); } -export default { - decryptResIndex, - encryptResIndex, -}; +export default { decryptResIndex, encryptResIndex };