Inspiration
From our past knowledge of computers, we knew that computers never really had a "random" chance to select a specific value to create strings of characters. Although, with the random nature of pictures and their RGB values, we knew that pictures were the key to concatenating truly random strings of characters, which could be strung into passwords, solving the problem of randomness.
What it does
Our project takes all of the possible characters that can be in a password and, first, puts them into an array. Then, we read all of the RGB values of every pixel in a picture submitted by the user. Next, we take those RGB values, divide them by a specific, non-integer number, multiply them together, then add all those values into a sperate array. Then, we traverse through the first array of possible characters, assigning each their own value. Once we have exhausted all the initial possible password characters, we remove one of them at random, and start again at the beginning assigning them values. We do this loop until we run out of characters to assign values. Next, with these possible characters all having their specific values, we can read through the RGB pixels array and look at the values, then search through our possible characters array and find the value of the possible character, assigning it to its pixel value. Finally, we create the password array which is comprised of those RGB pixel values from their assigned possible password character.
After this array is created, we generate a password of user specified length by again choosing at random from the password character array. To ensure the password is extra strong, we also generate 1000 other passwords from the password character array and compare through an algorithm that analyzes all of the password's randomness. This algorithm rates passwords based on attributes like symbol to number ratio and repeating characters. Finally, we return the password which scores highest amount of randomness to the user.
How we built it
We used React.js and Express.js for the frontend and backend, respectively. These helped us build quickly while maintaining responsiveness and quality.
Challenges we ran into
We ran into problems generating the algorithm to read all the RGB values and other problems related to the backend.
Accomplishments that we're proud of
We are proud of making a password that is truly random and is completely generated from user input, that being a picture.
What we learned
We learned that sometimes writing something on the white board may initially sound easy, but soon, developing the white board ideas into code can take more time than expected.
What's next for PictoPass
The next move for PictoPass is starting a Chrome extension so that the user can have it at all times with the click of a few buttons.
Check out our GitHub's!
Zack Bostock
&
Jack Saysana
Built With
- express.js
- react.js
Log in or sign up for Devpost to join the conversation.