byte[] InitEncrypted(int key, NpaTitleId game_id, byte[] key_table) { var position = Position; if (0 != position) { Position = 0; } byte[] buffer = new byte[m_encrypted_length]; m_encrypted_length = m_stream.Read(buffer, 0, m_encrypted_length); Position = position; if (game_id == NpaTitleId.LAMENTO) { for (int i = 0; i < m_encrypted_length; i++) { buffer[i] = (byte)(key_table[buffer[i]] - key); } } else { for (int i = 0; i < m_encrypted_length; i++) { buffer[i] = (byte)(key_table[buffer[i]] - key - i); } } return(buffer); }
int GetEncryptedLength(NpaEntry entry, NpaTitleId game_id) { int length = 0x1000; if (game_id != NpaTitleId.LAMENTO) { length += entry.RawName.Length; } return(length); }
internal static int GetArchiveKey(NpaTitleId game_id, int key1, int key2) { if (NpaTitleId.LAMENTO == game_id) { return(key1 + key2); } else { return(key1 * key2); } }
public EncryptionScheme(NpaTitleId id, uint key, byte[] order) { TitleId = id; NameKey = key; Order = order; }