PT-BR/passwordHash
Jump to navigation
Jump to search
Nota: Using passwordHash é o meio recomendado para guardar senhas. | |
Esta função cria um hash a partir de uma senha especificada (basicamente, a senha criptografada) usando um algorítmo específico de hashing.
Aviso: É altamente recomendado usar a versão assíncrona desta função (especificando a função callback). Por outro lado, você pode sofrer algumas travadas devido à lentidão do algoritmo bcrypt. |
Sintaxe
string passwordHash ( string password, string algorithm, table options [, function callback ] )
Argumentos necessários
- password: A senha para criptografar.
- algorithm: O algoritmo para usar:
- bcrypt: usa o algoritmo de criptografia bcrypt. Tamanho do hash: 60 caracteres. Note que apenas o prefixo $2y$ é suportado (prefixos antigos podem causar problemas de segurança).
- options: tabela com opções para o algoritmo de criptografia, detalhados abaixo.
Argumentos opcionais
- callback: especificando uma função callback vai fazer com que esta função funcione de forma assíncrona, os parâmetros da função callback são o mesmo dos valores retornados abaixo.
Opções para cada algoritmo de criptografia
- bcrypt:
- cost (int), padrão: 10. Veja este link para determinar o número de voltas apropriadas para seu servidor.
- salt (string), Padrão: string vazia
""
- uma string vazia vai automaticamente gerar um salt com o cost especificado
- obsoleto: se uma string é especificada, isso vai ser usado como um salt. (NÃO FAÇA ISSO!)
- a string especificada deve ser igual ou maior que 22 caracteres
Retorna
Retorna a senha criptografada como string, false caso contrário. Se uma função callback é especificada, os valores mencionados acima viram os parâmetros do callback, e esta função vai sempre retornar true.
Exemplo
Aviso: Se você vai usar o "Exemplo 1" então você vai ter que salvar em 'account data' na chave "hash_password" depois que o servidor reiniciar, senão o script não vai mais funcionar. |
Este exemplo faz uso do passwordHash e do passwordVerify na criação e no login de conta para aumentar a segurança.
Click to collapse [-]
Examplo 1- Use /accountCreate [username] [password] para criar uma conta.
- Use /accountLogin [username] [password] para logar em uma conta.
-- vamos criar um command handler que vai nos permitir criar uma conta. addCommandHandler("accountCreate",function(source,cmd,username,password) if (username and password) then local hashedPassword = passwordHash(password,"bcrypt",{}) -- cria um novo hash da senha if (hashedPassword) then -- verificamos se o hash foi gerado local account = addAccount(username,hashedPassword) -- agora vamos criar a conta com a senha que especificamos (só que criptografada) if (account) then setAccountData(account,"hash_password",hashedPassword) -- salva a senha criptografada desta conta para podermos verificar isso depois, se necessário. outputChatBox("Account successfuly created! Now please login. Syntax </accountLogin [username] [password]>",source,20,160,20) else outputChatBox("Account already exists! Please try again with different username.",source,20,160,20) end else outputChatBox("Securing your password failed! Please try again or contact an administrator.",source,160,20,20) end else outputChatBox("Wrong parameters! Correct Syntax </accountCreate [username] [password]>",source,160,20,20) end end); -- vamos criar um command handler que vai nos permitir logar em uma conta addCommandHandler("accountLogin",function(source,cmd,username,password) if (username and password) then local account = getAccount(username) -- obtemos a conta pelo nome if (account) then -- checamos se a conta especificada existe local hashedPassword = getAccountData(account,"hash_password") -- obtemos a senha (criptografada) desta conta if (passwordVerify(password,hashedPassword)) then -- verifico se a senha especificada é igual a senha criptografada if logIn(source,account,hashedPassword) then -- agora logamos o jogador em sua conta outputChatBox("Login successfull. Welcome, "..getAccountName(account).."!",source,20,160,20) end else outputChatBox("Password is incorrect!",source,160,20,20) end else outputChatBox("Account doesn't exist! Please try again with different account.",source,160,20,20) end else outputChatBox("Wrong parameters! Correct Syntax </accountLogin [username] [password]>",source,160,20,20) end end);
Veja também
- addDebugHook
- base64Decode
- base64Encode
- debugSleep
- decodeString
- encodeString
- fromJSON
- generateKeyPair
- getColorFromString
- getDevelopmentMode
- getDistanceBetweenPoints2D
- getDistanceBetweenPoints3D
- getEasingValue
- getNetworkStats
- getNetworkUsageData
- getPerformanceStats
- getRealTime
- getTickCount
- getTimerDetails
- getTimers
- getFPSLimit
- getUserdataType
- getVersion
- gettok
- isTransferBoxVisible
- setTransferBoxVisible
- hash
- inspect
- interpolateBetween
- iprint
- isOOPEnabled
- isTimer
- killTimer
- md5
- passwordHash
- passwordVerify
- pregFind
- pregMatch
- pregReplace
- removeDebugHook
- resetTimer
- setDevelopmentMode
- setFPSLimit
- setTimer
- ref
- deref
- sha256
- split
- teaDecode
- teaEncode
- toJSON
- tocolor
- getProcessMemoryStats
- utfChar
- utfCode
- utfLen
- utfSeek
- utfSub
- bitAnd
- bitNot
- bitOr
- bitXor
- bitTest
- bitLRotate
- bitRRotate
- bitLShift
- bitRShift
- bitArShift
- bitExtract
- bitReplace