Skip to content

Commit

Permalink
Fixed tests for time estimates, updated readme to restore language, a…
Browse files Browse the repository at this point in the history
…nd bumped version.
  • Loading branch information
Tostino committed Feb 27, 2017
1 parent 81f0214 commit 06b2934
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 38 deletions.
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ Password #2, while not allowed by our policy, is only susceptible to a brute for
<dependency>
<groupId>me.gosimple</groupId>
<artifactId>nbvcxz</artifactId>
<version>1.3.3</version>
<version>1.3.4</version>
</dependency>
```

Expand All @@ -90,7 +90,7 @@ Password #2, while not allowed by our policy, is only susceptible to a brute for

### Standalone
To use as a stand-alone program, just compile, and run it by calling:
`java -jar nbvcxz-1.3.3.jar`
`java -jar nbvcxz-1.3.4.jar`
![alt text](http://i.imgur.com/9c070FX.png)

### Library
Expand All @@ -99,14 +99,14 @@ Below is a full example of the pieces you'd need to implement within your own ap
##### Configure and create object

###### All defaults
```
```java
// With all defaults...
Nbvcxz nbvcxz = new Nbvcxz();
```

###### Custom configuration
Here we're creating a custom configuration with a custom exclusion dictionary and minimum entropy
```
```java
// Create a map of excluded words on a per-user basis using a hypothetical "User" object that contains this info
List<Dictionary> dictionaryList = ConfigurationBuilder.getDefaultDictionaries();
dictionaryList.add(new DictionaryBuilder()
Expand All @@ -131,7 +131,7 @@ Nbvcxz nbvcxz = new Nbvcxz(configuration);
##### Estimate password strength

###### Simple
```
```java
// Estimate password
Result result = nbvcxz.estimate(password);

Expand All @@ -141,7 +141,7 @@ return result.isMinimumEntropyMet();
###### Feedback
This part will need to be integrated into your specific front end, and really depends on your needs.
Here are some of the possibilities:
```
```java

// Get formatted values for time to crack based on the values we
// input in our configuration (we used default values in this example)
Expand Down Expand Up @@ -197,7 +197,7 @@ else
We have a passphrase/password generator as part of `nbvcxz` which very easy to use.

###### Passphrase
```
```java
// Generate a passphrase from the standard (eff_large) dictionary with 5 words with a "-" between the words
String pass1 = Generator.generatePassphrase("-", 5);

Expand All @@ -206,7 +206,7 @@ String pass2 = Generator.generatePassphrase(new Dictionary(...), "-", 5);
```

###### Password
```
```java
// Generate a random password with alphanumeric characters that is 15 characters long
String pass = Generator.generateRandomPassword(Generator.CharacterTypes.ALPHANUMERIC, 15);
```
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<groupId>me.gosimple</groupId>
<artifactId>nbvcxz</artifactId>
<packaging>jar</packaging>
<version>1.3.3</version>
<version>1.3.4</version>

<name>nbvcxz</name>
<description>Nbvcxz takes heavy inspiration from the zxcvbn library built by Dropbox, and in a lot of ways is
Expand Down
58 changes: 29 additions & 29 deletions src/test/java/me/gosimple/nbvcxz/scoring/TimeEstimateTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ public void testCalculateEntropy()
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA512));
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_5));
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_10));
Assert.assertEquals(new BigDecimal(2), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_12));
Assert.assertEquals(new BigDecimal(8), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_14));
Assert.assertEquals(new BigDecimal(1), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_12));
Assert.assertEquals(new BigDecimal(5), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_14));
Assert.assertEquals(new BigDecimal(10), TimeEstimate.getTimeToCrack(result, ONLINE_UNTHROTTLED));
Assert.assertEquals(new BigDecimal(528), TimeEstimate.getTimeToCrack(result, ONLINE_THROTTLED));

Expand All @@ -53,7 +53,7 @@ public void testCalculateEntropy()
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_5));
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_10));
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_12));
Assert.assertEquals(new BigDecimal(3), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_14));
Assert.assertEquals(new BigDecimal(2), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_14));
Assert.assertEquals(new BigDecimal(4), TimeEstimate.getTimeToCrack(result, ONLINE_UNTHROTTLED));
Assert.assertEquals(new BigDecimal(214), TimeEstimate.getTimeToCrack(result, ONLINE_THROTTLED));

Expand All @@ -62,34 +62,34 @@ public void testCalculateEntropy()
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_MD5));
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA1));
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA512));
Assert.assertEquals(new BigDecimal(1), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_5));
Assert.assertEquals(new BigDecimal(50), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_10));
Assert.assertEquals(new BigDecimal(200), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_12));
Assert.assertEquals(new BigDecimal(800), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_14));
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_5));
Assert.assertEquals(new BigDecimal(30), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_10));
Assert.assertEquals(new BigDecimal(121), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_12));
Assert.assertEquals(new BigDecimal(483), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_14));
Assert.assertEquals(new BigDecimal(1000), TimeEstimate.getTimeToCrack(result, ONLINE_UNTHROTTLED));
Assert.assertEquals(new BigDecimal(50000), TimeEstimate.getTimeToCrack(result, ONLINE_THROTTLED));

password = "helpimaliveinhere";
result = nbvcxz.estimate(password);
Assert.assertEquals(new BigDecimal(12), TimeEstimate.getTimeToCrack(result, OFFLINE_MD5));
Assert.assertEquals(new BigDecimal(38), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA1));
Assert.assertEquals(new BigDecimal(285), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA512));
Assert.assertEquals(new BigDecimal(22305885), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_5));
Assert.assertEquals(new BigDecimal(713788324), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_10));
Assert.assertEquals(new BigDecimal(2855153297L), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_12));
Assert.assertEquals(new BigDecimal(11420613188L), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_14));
Assert.assertEquals(new BigDecimal(7), TimeEstimate.getTimeToCrack(result, OFFLINE_MD5));
Assert.assertEquals(new BigDecimal(20), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA1));
Assert.assertEquals(new BigDecimal(165), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA512));
Assert.assertEquals(new BigDecimal(13634925), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_5));
Assert.assertEquals(new BigDecimal(432206069), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_10));
Assert.assertEquals(new BigDecimal(1728301027L), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_12));
Assert.assertEquals(new BigDecimal(6896505548L), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_14));
Assert.assertEquals(new BigDecimal(14275766485L), TimeEstimate.getTimeToCrack(result, ONLINE_UNTHROTTLED));
Assert.assertEquals(new BigDecimal(713788324296L), TimeEstimate.getTimeToCrack(result, ONLINE_THROTTLED));

password = "a.b.c.defy";
result = nbvcxz.estimate(password);
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_MD5));
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA1));
Assert.assertEquals(new BigDecimal(7), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA512));
Assert.assertEquals(new BigDecimal(556939), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_5));
Assert.assertEquals(new BigDecimal(17822064), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_10));
Assert.assertEquals(new BigDecimal(71288256), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_12));
Assert.assertEquals(new BigDecimal(285153024), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_14));
Assert.assertEquals(new BigDecimal(4), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA512));
Assert.assertEquals(new BigDecimal(340440), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_5));
Assert.assertEquals(new BigDecimal(10791440), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_10));
Assert.assertEquals(new BigDecimal(43152697), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_12));
Assert.assertEquals(new BigDecimal(172193855), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_14));
Assert.assertEquals(new BigDecimal(356441280), TimeEstimate.getTimeToCrack(result, ONLINE_UNTHROTTLED));
Assert.assertEquals(new BigDecimal(17822064000L), TimeEstimate.getTimeToCrack(result, ONLINE_THROTTLED));

Expand All @@ -99,21 +99,21 @@ public void testCalculateEntropy()
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA1));
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA512));
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_5));
Assert.assertEquals(new BigDecimal(1), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_10));
Assert.assertEquals(new BigDecimal(4), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_12));
Assert.assertEquals(new BigDecimal(19), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_14));
Assert.assertEquals(new BigDecimal(0), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_10));
Assert.assertEquals(new BigDecimal(3), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_12));
Assert.assertEquals(new BigDecimal(12), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_14));
Assert.assertEquals(new BigDecimal(24), TimeEstimate.getTimeToCrack(result, ONLINE_UNTHROTTLED));
Assert.assertEquals(new BigDecimal(1245), TimeEstimate.getTimeToCrack(result, ONLINE_THROTTLED));

password = "6c891879ed0a0bbf701d5ca8af39a766";
result = nbvcxz.estimate(password);
Assert.assertEquals(new BigDecimal("214187920684036864625534562"), TimeEstimate.getTimeToCrack(result, OFFLINE_MD5));
Assert.assertEquals(new BigDecimal("664547051961614270361632839"), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA1));
Assert.assertEquals(new BigDecimal("4962305746407766079644384737"), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA512));
Assert.assertEquals(new BigDecimal("387680136438106724972217557596504"), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_5));
Assert.assertEquals(new BigDecimal("12405764366019415199110961843088130"), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_10));
Assert.assertEquals(new BigDecimal("49623057464077660796443847372352520"), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_12));
Assert.assertEquals(new BigDecimal("198492229856310643185775389489410080"), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_14));
Assert.assertEquals(new BigDecimal("123871835906334650016085490"), TimeEstimate.getTimeToCrack(result, OFFLINE_MD5));
Assert.assertEquals(new BigDecimal("360784760030228299693503419"), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA1));
Assert.assertEquals(new BigDecimal("2876799046000304984315039791"), TimeEstimate.getTimeToCrack(result, OFFLINE_SHA512));
Assert.assertEquals(new BigDecimal("236977351786426269323991630240460"), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_5));
Assert.assertEquals(new BigDecimal("7511816146545210535338154310074556"), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_10));
Assert.assertEquals(new BigDecimal("30038170377770981111648818022005157"), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_12));
Assert.assertEquals(new BigDecimal("119862457642699663759526201382494010"), TimeEstimate.getTimeToCrack(result, OFFLINE_BCRYPT_14));
Assert.assertEquals(new BigDecimal("248115287320388303982219236861762600"), TimeEstimate.getTimeToCrack(result, ONLINE_UNTHROTTLED));
Assert.assertEquals(new BigDecimal("12405764366019415199110961843088130048"), TimeEstimate.getTimeToCrack(result, ONLINE_THROTTLED));

Expand Down

0 comments on commit 06b2934

Please sign in to comment.