A modern and intuitive Android app for generating secure and customizable passwords, developed in Kotlin with Material Design.
- Customizable length: 4 to 50 characters
- Secure algorithm: Uses
kotlin.random.Random
for maximum randomness - Diversity guarantee: Ensures at least one character of each selected type
- ✅ Uppercase Letters (A-Z)
- ✅ Lowercase Letters (a-z)
- ✅ Numbers (0-9)
- ✅ Symbols (!@#$%^&*()_+-=[]{}|;:,.<>?)
- 🚫 Character exclusion Similar (i, l, 1, L, o, 0, O)
- Visual password strength indicator
- 4-level classification:
- 🔴 Very Weak (<25%)
- 🟡 Weak (25-49%)
- 🟠 Medium (50-74%)
- 🟢 Strong (≥75%)
- Copy to clipboard with one tap
- Responsive interface with ScrollView
- Real-time input validation
- Visual feedback through toasts
- Language: Kotlin
- Target SDK: Android API 34
- SDK Minimum: Android API 21 (Android 5.0+)
- Design: Material Design 3
- Architecture: Activity-based with implicit ViewBinding
src/main/java/com/example/passwordgenerator/
├── MainActivity.kt # Main application logic
└── res/
└── layout/
└── activity_main.xml # User interface
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.activity)
implementation(libs.androidx.constraintlayout)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
}
- Android Studio Arctic Fox or higher
- JDK 8 or higher
- Android SDK with API 21+
- Clone the repository
git clone https://github.com/natsalete/Password_Generator.git
cd Password_Generator
- Open Android Studio
- Launch Android Studio
- Select "Open an Existing Project"
- Navigate to the project folder
- Synchronize Dependencies
- Wait for Android Studio to load the project
- Click "Sync Now" when Requested
- Run the app
- Connect an Android device or launch an emulator
- Click the "Run" button (
▶️ ) or press Shift + F10
- Set the length
- Use the slider to set between 4 and 50 characters
- The current value is displayed next to the slider
- Select the character types
- Select the desired checkboxes
- At least one option must be selected
- Set advanced options
- Enable "Delete Similar Characters" to avoid confusion
- This option removes:
i, l, 1, L, o, 0, O
- Generate the password
- Tap the "Generate Password" button
- The password will appear in the highlighted area
- Copy the password
- Tap the "Copy" button
- The password will be copied to the clipboard.
Password strength is calculated based on:
- Length (≥ 8 characters)
- Character diversity (uppercase, lowercase, numbers, symbols)
- Maximum score: 4 points
To add new character types, modify the MainActivity.kt
file:
// Add the new character set
private val customChars = "ÀÁÂÃÇÉÊÍÓÔÕÚàáâãçéêíóôõú"
// Add the checkbox to the interface
// Include the logic in buildCharacterPool()
To customize the strength is calculated, edit the calculatePasswordStrength()
function:
private fun calculatePasswordStrength(password: String): Int {
var score = 0
// Add your own rules here
if (password.length >= 12) score++
if (password.contains(Regex("[ÀÁÂÃÇÉÊÍÓÔÕÚàáâãçéêíóôõú]"))) score++
return score.coerceIn(0, 4)
}
// Main Colors
Primary Blue: #3498DB
Success Green: #27AE60
Warning Orange: #F39C12
Danger Red: #E74C3C
// Text Colors
Dark Text: #2C3E50
Medium Text: #34495E
Light Text: #7F8C8D
// Background Colors
Background: #F5F5F5
Card Background: #FFFFFF
Input Background: #F8F9FA
- Title: 28sp, Bold
- Subtitles: 18sp, Bold
- Normal Text: 16sp, Regular
- Small Text: 14sp, Regular
- Passwords: 18sp, Bold, Monospace
- Basic Functionality
- Generate password with different settings
- Copy password to clipboard
- Change password length
- Input Validation
- Attempt to generate password without selecting any options
- Check if at least one character of each type is included
- Responsive Interface
- Test on different screen sizes
- Check scrolling on small devices
- Strength Calculation
- Check indicator with weak and strong passwords
- Confirm correct colors for each level
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! To contribute:
- Fork the project
- Create a branch for your feature (git checkout -b feature/AmazingFeature)
- Commit your changes (git commit -m 'Add: Amazing Feature')
- Push to the branch (git push origin feature/AmazingFeature)
- Open a Pull Request
- Add: for new features
- Fix: for bug fixes
- Update: for updates to existing features
- Docs: for documentation changes
If you encounter any problems or have suggestions:
- 🐛 Bugs: Open an issue (https://github.com/natsalete/Password_Generator/issues)
- 💡 Suggestions: Open an issue discussion
- 📧 Contact: natsalete20@gmail.com
- Password History (secure local storage)
- Themes (light/dark)
- Settings Backup/Restore
- Home Screen Widget
- Passphrase Generation (diceware)
- Accessibility Improvements
- Language Support (EN, ES, PT)
- Transition Animations
- Automated Unit Tests
Developed with ❤️ by Natalia Salete
- Android Community for the documentation
- Material Design for the visual inspiration
- Stack Overflow for troubleshooting help
⭐ If this project was helpful to you, please consider giving the repository a star!
🇧🇷 Versão em Português
Um aplicativo Android moderno e intuitivo para gerar senhas seguras e personalizáveis, desenvolvido em Kotlin com Material Design.
- Comprimento personalizável: 4 a 50 caracteres
- Algoritmo seguro: Utiliza
kotlin.random.Random
para máxima aleatoriedade - Garantia de diversidade: Assegura pelo menos um caractere de cada tipo selecionado
- ✅ Letras Maiúsculas (A-Z)
- ✅ Letras Minúsculas (a-z)
- ✅ Números (0-9)
- ✅ Símbolos (!@#$%^&*()_+-=[]{}|;:,.<>?)
- 🚫 Exclusão de caracteres similares (i, l, 1, L, o, 0, O)
- Indicador visual de força da senha
- Classificação em 4 níveis:
- 🔴 Muito Fraca (< 25%)
- 🟡 Fraca (25-49%)
- 🟠 Média (50-74%)
- 🟢 Forte (≥ 75%)
- Copiar para área de transferência com um toque
- Interface responsiva com ScrollView
- Validação de entrada em tempo real
- Feedback visual através de toasts
- Linguagem: Kotlin
- SDK Target: Android API 34
- SDK Mínimo: Android API 21 (Android 5.0+)
- Design: Material Design 3
- Arquitetura: Activity-based com ViewBinding implícito
src/main/java/com/example/passwordgenerator/
├── MainActivity.kt # Lógica principal da aplicação
└── res/
└── layout/
└── activity_main.xml # Interface do usuário
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.activity)
implementation(libs.androidx.constraintlayout)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
}
- Android Studio Arctic Fox ou superior
- JDK 8 ou superior
- Android SDK com API 21+
-
Clone o repositório
git clone https://github.com/natsalete/Password_Generator.git cd Password_Generator
-
Abra no Android Studio
- Inicie o Android Studio
- Selecione "Open an Existing Project"
- Navegue até a pasta do projeto
-
Sincronize as dependências
- Aguarde o Android Studio carregar o projeto
- Clique em "Sync Now" quando solicitado
-
Execute o aplicativo
- Conecte um dispositivo Android ou inicie um emulador
- Clique no botão "Run" (
▶️ ) ou pressioneShift + F10
-
Configure o comprimento
- Use o slider para definir entre 4 e 50 caracteres
- O valor atual é exibido ao lado do slider
-
Selecione os tipos de caracteres
- Marque as caixas de seleção desejadas
- Pelo menos uma opção deve estar selecionada
-
Configure opções avançadas
- Ative "Excluir Caracteres Similares" para evitar confusão
- Esta opção remove:
i, l, 1, L, o, 0, O
-
Gere a senha
- Toque no botão "Gerar Senha"
- A senha aparecerá na área destacada
-
Copie a senha
- Toque no botão "Copiar"
- A senha será copiada para a área de transferência
A força da senha é calculada baseada em:
- Comprimento (≥ 8 caracteres)
- Diversidade de caracteres (maiúsculas, minúsculas, números, símbolos)
- Pontuação máxima: 4 pontos
Para adicionar novos tipos de caracteres, modifique o arquivo MainActivity.kt
:
// Adicione o novo conjunto
private val customChars = "ÀÁÂÃÇÉÊÍÓÔÕÚàáâãçéêíóôõú"
// Adicione o checkbox na interface
// Inclua a lógica no buildCharacterPool()
Para personalizar como a força é calculada, edite a função calculatePasswordStrength()
:
private fun calculatePasswordStrength(password: String): Int {
var score = 0
// Adicione suas próprias regras aqui
if (password.length >= 12) score++
if (password.contains(Regex("[ÀÁÂÃÇÉÊÍÓÔÕÚàáâãçéêíóôõú]"))) score++
return score.coerceIn(0, 4)
}
// Cores principais
Primary Blue: #3498DB
Success Green: #27AE60
Warning Orange: #F39C12
Danger Red: #E74C3C
// Cores de texto
Dark Text: #2C3E50
Medium Text: #34495E
Light Text: #7F8C8D
// Cores de fundo
Background: #F5F5F5
Card Background: #FFFFFF
Input Background: #F8F9FA
- Título: 28sp, Bold
- Subtítulos: 18sp, Bold
- Texto normal: 16sp, Regular
- Texto pequeno: 14sp, Regular
- Senhas: 18sp, Bold, Monospace
-
Funcionalidade básica
- Gerar senha com diferentes configurações
- Copiar senha para área de transferência
- Alterar comprimento da senha
-
Validação de entrada
- Tentar gerar senha sem selecionar nenhuma opção
- Verificar se pelo menos um caractere de cada tipo é incluído
-
Interface responsiva
- Testar em diferentes tamanhos de tela
- Verificar scroll em dispositivos pequenos
-
Cálculo de força
- Verificar indicador com senhas fracas e fortes
- Confirmar cores corretas para cada nível
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.
Contribuições são bem-vindas! Para contribuir:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add: Amazing Feature'
) - Push para a branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
Add:
para novas funcionalidadesFix:
para correções de bugsUpdate:
para atualizações de funcionalidades existentesDocs:
para mudanças na documentação
Se você encontrar algum problema ou tiver sugestões:
- 🐛 Bugs: Abra uma issue
- 💡 Sugestões: Abra uma discussion
- 📧 Contato: natsalete20@gmail.com
- Histórico de senhas (armazenamento local seguro)
- Temas (claro/escuro)
- Backup/Restore de configurações
- Widget para tela inicial
- Geração de frases-passe (diceware)
- Melhorias de acessibilidade
- Suporte a idiomas (EN, ES, PT)
- Animações de transição
- Testes unitários automatizados
Desenvolvido com ❤️ por Natalia Salete
- Comunidade Android pela documentação
- Material Design pela inspiração visual
- Stack Overflow pela ajuda na resolução de problemas
⭐ Se este projeto foi útil para você, consider dar uma estrela no repositório!