I found the solution.
And they where different because Joomla! uses the configuration.php "secret word" to build the hash of the token (this make your tokens different from other installations even if you session id):
The configuration depends on the application. During installation in Joomla! there is no configuration.php, so there is not "secret word". And in my language installation I'm using the just created "configuration.php" to be able to use the JUpdater and other classes that needs the main configuration file.
So I just did that:
public function installLanguages()
{
+ JFactory::$config = null;
+ JFactory::getConfig(JPATH_SITE . '/configuration.php');
+ JFactory::$session = null;
// Check for a valid token. If invalid, send a 403 with the error message.
JSession::checkToken() or $this->sendResponse(new Exception(JText::_('JINVALID_TOKEN'), 403));
That makes Joomla! to reload the config including the configuration.php information.
By now it looks like a hack, maybe doesn't look bad for you. I was wondering if any of you have any idea of how to make it look better?
Thanks everyone