Android Open Source - password-generator-app Password Generator Impl






From Project

Back to project page password-generator-app.

License

The source code is released under:

GNU General Public License

If you think the Android project password-generator-app listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.skylark95.passwordgenerator.generator;
/* w  w  w .j a v a  2s  . c  om*/
import com.skylark95.passwordgenerator.charactergroup.CharacterGroup;

import java.security.SecureRandom;
import java.util.Collection;
import java.util.Iterator;
import java.util.Random;


public class PasswordGeneratorImpl implements PasswordGenerator {

    @Override
    public String generatePassword(int length, Collection<CharacterGroup> characterGroups) {
        String password = "";
        if (!characterGroups.isEmpty()) {
            char[] chars = flatten(characterGroups);
            password = generatePasswordFromCharacters(chars, length);
        }
        return password;
    }

    /*
     * https://en.wikipedia.org/wiki/Random_password_generator#Java
     */
    private String generatePasswordFromCharacters(char[] chars, int length) {
        Random random = new SecureRandom();
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < length; i++) {
            int idx = random.nextInt(chars.length);
            sb.append(chars[idx]);
        }
        return sb.toString();
    }

    private char[] flatten(Collection<CharacterGroup> characterGroups) {
        Iterator<CharacterGroup> iterator = characterGroups.iterator();
        char[] array = iterator.next().getChars();
        while (iterator.hasNext()) {
            array = concat(array, iterator.next().getChars());
        }
        return array;
    }

    /*
     * http://stackoverflow.com/a/80503
     */
    private char[] concat(char[] a, char[] b) {
        char[] c = new char[a.length + b.length];
        System.arraycopy(a, 0, c, 0, a.length);
        System.arraycopy(b, 0, c, a.length, b.length);
        return c;
    }

}




Java Source Code List

com.skylark95.passwordgenerator.ApplicationTest.java
com.skylark95.passwordgenerator.PasswordGeneratorActivity.java
com.skylark95.passwordgenerator.PasswordGeneratorException.java
com.skylark95.passwordgenerator.PasswordGeneratorTest.java
com.skylark95.passwordgenerator.charactergroup.CharacterGroup.java
com.skylark95.passwordgenerator.charactergroup.Lowercase.java
com.skylark95.passwordgenerator.charactergroup.Numbers.java
com.skylark95.passwordgenerator.charactergroup.Special.java
com.skylark95.passwordgenerator.charactergroup.Uppercase.java
com.skylark95.passwordgenerator.generator.PasswordGeneratorImpl.java
com.skylark95.passwordgenerator.generator.PasswordGenerator.java