diff --git a/README b/README new file mode 100644 index 0000000..abeb9fc --- /dev/null +++ b/README @@ -0,0 +1,23 @@ +Cryptography Project + +Encrypt and decrypt any text right in your browser. You can also generate random key phrases from the list of 39,000 English words. Nothing is ever sent to a server! + +url: http://simplydo.com/cryptography +sources: https://github.com/SimplyDo/cryptography + +Created by Simply Do: http://simplydo.com + + + +Uses various libraries / framework under their respective licenses: + +AngularJS by Google - http://angularjs.org/ +CryptoJS - http://code.google.com/p/crypto-js/ +Twitter Bootstrapped - http://twitter.github.com/bootstrap/ +Kevin's Word List Page - http://wordlist.sourceforge.net/ + + + +Instructions: + +Simply point a web server to the root directory of this repository and view in any modern browser. \ No newline at end of file diff --git a/css/default.css b/css/default.css index 88744d7..cdbf7eb 100644 --- a/css/default.css +++ b/css/default.css @@ -122,7 +122,7 @@ label{display:block;margin-bottom:5px;} select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555555;} input,textarea{width:210px;} textarea{height:auto;} -textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);} +textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;transition-property:border linear 0.2s,box-shadow linear 0.2s;transition-timing-function:linear;-moz-transition-property:border linear 0.2s,box-shadow linear 0.2s;-moz-transition-timing-function:linear;-webkit-transition-property:border linear 0.2s,box-shadow linear 0.2s;-webkit-transition-timing-function:linear;-o-transition-property:border linear 0.2s,box-shadow linear 0.2s;-o-transition-timing-function:linear;}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);} input[type="radio"],input[type="checkbox"]{margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;} input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto;} .uneditable-textarea{width:auto;height:auto;} @@ -404,14 +404,14 @@ table .span24{float:none;width:1884px;margin-left:0;} .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);} .well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} .well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;} -.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-ms-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;}.collapse.in{height:auto;} +.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;transition-property:opacity 0.15s linear;transition-timing-function:linear;-moz-transition-property:opacity 0.15s linear;-moz-transition-timing-function:linear;-webkit-transition-property:opacity 0.15s linear;-webkit-transition-timing-function:linear;-o-transition-property:opacity 0.15s linear;-o-transition-timing-function:linear;}.fade.in{opacity:1;} +.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-ms-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;transition-property:height 0.35s ease;transition-timing-function:linear;-moz-transition-property:height 0.35s ease;-moz-transition-timing-function:linear;-webkit-transition-property:height 0.35s ease;-webkit-transition-timing-function:linear;-o-transition-property:height 0.35s ease;-o-transition-timing-function:linear;}.collapse.in{height:auto;} .close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40);} button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;} .btn{display:inline-block;*display:inline;*zoom:1;padding:4px 10px 4px;margin-bottom:0;font-size:13px;line-height:18px;*line-height:20px;color:#333333;text-align:center;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-ms-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(top, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);*background-color:#e6e6e6;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border:1px solid #cccccc;*border:0;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*margin-left:.3em;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{background-color:#e6e6e6;*background-color:#d9d9d9;} .btn:active,.btn.active{background-color:#cccccc \9;} .btn:first-child{*margin-left:0;} -.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;*background-color:#d9d9d9;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-ms-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;} +.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;*background-color:#d9d9d9;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-ms-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;transition-property:background-position 0.1s linear;transition-timing-function:linear;-moz-transition-property:background-position 0.1s linear;-moz-transition-timing-function:linear;-webkit-transition-property:background-position 0.1s linear;-webkit-transition-timing-function:linear;-o-transition-property:background-position 0.1s linear;-o-transition-timing-function:linear;} .btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} .btn.active,.btn:active{background-color:#e6e6e6;background-color:#d9d9d9 \9;background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);} .btn.disabled,.btn[disabled]{cursor:default;background-color:#e6e6e6;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} @@ -555,7 +555,7 @@ button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding- .navbar-form input,.navbar-form select{display:inline-block;margin-bottom:0;} .navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;} .navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;} -.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0;}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#ffffff;background-color:#626262;border:1px solid #151515;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.navbar-search .search-query:-moz-placeholder{color:#cccccc;} +.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0;}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#ffffff;background-color:#626262;border:1px solid #151515;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;transition-property:none;transition-timing-function:linear;-moz-transition-property:none;-moz-transition-timing-function:linear;-webkit-transition-property:none;-webkit-transition-timing-function:linear;-o-transition-property:none;-o-transition-timing-function:linear;}.navbar-search .search-query:-moz-placeholder{color:#cccccc;} .navbar-search .search-query:-ms-input-placeholder{color:#cccccc;} .navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;} .navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;} @@ -616,7 +616,7 @@ button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding- .modal-open .tooltip{z-index:2070;} .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;} .modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);} -.modal{position:fixed;top:50%;left:50%;z-index:1050;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-ms-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;} +.modal{position:fixed;top:50%;left:50%;z-index:1050;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-ms-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;transition-property:opacity .3s linear, top .3s ease-out;transition-timing-function:linear;-moz-transition-property:opacity .3s linear, top .3s ease-out;-moz-transition-timing-function:linear;-webkit-transition-property:opacity .3s linear, top .3s ease-out;-webkit-transition-timing-function:linear;-o-transition-property:opacity .3s linear, top .3s ease-out;-o-transition-timing-function:linear;top:-25%;} .modal.fade.in{top:50%;} .modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;} .modal-body{overflow-y:auto;max-height:400px;padding:15px;} @@ -671,7 +671,7 @@ a.label:hover,a.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;} .label-inverse,.badge-inverse{background-color:#333333;} .label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;} @-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}@-o-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;} to{background-position:0 0;}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-ms-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(top, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} -.progress .bar{width:0%;height:18px;color:#ffffff;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-ms-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(top, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-ms-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;} +.progress .bar{width:0%;height:18px;color:#ffffff;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-ms-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(top, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-ms-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;transition-property:width 0.6s ease;transition-timing-function:linear;-moz-transition-property:width 0.6s ease;-moz-transition-timing-function:linear;-webkit-transition-property:width 0.6s ease;-webkit-transition-timing-function:linear;-o-transition-property:width 0.6s ease;-o-transition-timing-function:linear;} .progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;} .progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;} .progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);} @@ -690,7 +690,7 @@ a.label:hover,a.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;} .accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;} .carousel{position:relative;margin-bottom:18px;line-height:1;} .carousel-inner{overflow:hidden;width:100%;position:relative;} -.carousel .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-ms-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;} +.carousel .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-ms-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;transition-property:0.6s ease-in-out left;transition-timing-function:linear;-moz-transition-property:0.6s ease-in-out left;-moz-transition-timing-function:linear;-webkit-transition-property:0.6s ease-in-out left;-webkit-transition-timing-function:linear;-o-transition-property:0.6s ease-in-out left;-o-transition-timing-function:linear;} .carousel .item>img{display:block;line-height:1;} .carousel .active,.carousel .next,.carousel .prev{display:block;} .carousel .active{left:0;} @@ -711,12 +711,17 @@ a.label:hover,a.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;} .hide{display:none;} .show{display:block;} .invisible{visibility:hidden;} -body{margin-top:60px;} -form.plain{background-color:green;} -form.cypher{background-color:yellow;} -form textarea{font-size:1.1em;width:95%;height:8em;} +.social-buttons{display:block;list-style:none;padding:0;margin:0px;float:right;} +.social-buttons>li{display:inline-block;margin-left:10px;float:left;} +form textarea{font-size:1.1em;width:100%;height:8em;} #passPhrase{font-size:1.4em;width:100%;height:2.5em;line-height:1.3em;}#passPhrase.large{height:12em;} -h2{font-size:1.7em;margin:0.3em 0;} -p{font-size:1.1em;line-height:1.5em;}p.large{font-size:1.5em;color:#999;} +h2{font-size:1.3em;margin:0.3em 0;} +p{font-size:1.1em;line-height:1.5em;}p.note{color:#999;} +.large p{font-size:1.2em;} p.status{font-weight:bold;font-size:1.1em;padding:5px 10px;background-color:#FFC;}p.status.success{color:green;} p.status.error{color:red;} +#footer{background-color:#333;padding:2em 0;margin-top:50px;border-top:5px solid rgba(0, 0, 0, 0.3);color:#AAA;} +#top{background-color:#8FBE00;margin-bottom:40px;padding-top:80px;padding-bottom:30px;border-bottom:1px solid #666;-moz-box-shadow:0px 3px 0px rgba(0, 0, 0, 0.2);-webkit-box-shadow:0px 3px 0px rgba(0, 0, 0, 0.2);box-shadow:0px 3px 0px rgba(0, 0, 0, 0.2);}#top.home{background-color:#8ABBCE;} +#top.keymaker{background-color:#FA6900;} +#top h1{font-size:4em;margin-bottom:20px;margin-top:30px;color:#FFF;-moz-text-shadow:0px -1px 0px rgba(0, 0, 0, 0.5);-webkit-text-shadow:0px -1px 0px rgba(0, 0, 0, 0.5);text-shadow:0px -1px 0px rgba(0, 0, 0, 0.5);} +#top p{font-size:1.5em;color:#F9F2E7;-moz-text-shadow:0px -1px 0px rgba(0, 0, 0, 0.5);-webkit-text-shadow:0px -1px 0px rgba(0, 0, 0, 0.5);text-shadow:0px -1px 0px rgba(0, 0, 0, 0.5);}#top p a{color:#F9F2E7;border-bottom:1px solid #FFF;text-decoration:none;font-weight:bold;}#top p a:hover{background-color:rgba(0, 0, 0, 0.1);padding-left:4px;padding-right:4px;margin:0 -4px;color:#FFF;} diff --git a/index.html b/index.html index 80debb2..85e5e24 100644 --- a/index.html +++ b/index.html @@ -2,8 +2,9 @@ - My AngularJS App + Simply Do - Cryptography Project + @@ -11,27 +12,61 @@ -
+
+ + @@ -40,5 +75,21 @@ + + + + diff --git a/js/app.js b/js/app.js index d37a4c8..1d5a079 100644 --- a/js/app.js +++ b/js/app.js @@ -5,9 +5,9 @@ angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives']). config(['$routeProvider', function($routeProvider) { $routeProvider.when('/aes', {template: 'partials/aes.html', controller: aesCtrl}); - $routeProvider.when('/home', {template: 'partials/home.html', controller: homeCtrl}); - $routeProvider.when('/memorize', {template: 'partials/memorize.html', controller: memorizeCtrl}); + $routeProvider.when('/about', {template: 'partials/about.html', controller: homeCtrl}); + //$routeProvider.when('/memorize', {template: 'partials/memorize.html', controller: memorizeCtrl}); $routeProvider.when('/phrases', {template: 'partials/phrases.html', controller: phrasesCtrl}); - $routeProvider.when('/about', {template: 'partials/about.html', controller: aboutCtrl}); - $routeProvider.otherwise({redirectTo: '/home'}); + //$routeProvider.when('/about', {template: 'partials/about.html', controller: aboutCtrl}); + $routeProvider.otherwise({redirectTo: '/aes'}); }]); diff --git a/js/controllers-ck.js b/js/controllers-ck.js new file mode 100644 index 0000000..25e1ee2 --- /dev/null +++ b/js/controllers-ck.js @@ -0,0 +1 @@ +"use strict";function aesCtrl(a,b){var c=5;a.message="";a.cypher="";a.cypherString="";a.passphrase="";a.feedBack="";a.status="";a.encrypt=function(){if(a.message!=""&&a.passphrase!=""){a.cypher=CryptoJS.AES.encrypt(a.message,a.passphrase);a.cypherString=String(a.cypher);a.message="";a.feedBack="The text was successfully encrypted.";a.status="success"}else{a.feedBack="You need to enter or generate a pass phrase to encrypt this text.";a.status="error"}};a.decrypt=function(){if(a.cypher==""|a.passphrase==""){a.feedBack="You need to enter your pass phrase to decrypt this cypher.";a.status="error"}else{a.message=CryptoJS.AES.decrypt(a.cypher,a.passphrase).toString(CryptoJS.enc.Utf8);if(a.message==""){a.feedBack="Cypher and pass phrase do not match";a.status="error"}else{a.cypherString="";a.cypher="";a.feedBack="The cypher was successfully decrypted.";a.status="success"}}};a.newPassPhrase=function(){a.passphrase=b.getWords(c)};a.clear=function(){a.message="";a.cypher="";a.cypherString="";a.passphrase="";a.feedBack="";a.status=""}}function navigationCtrl(a,b){a.location=b}function aboutCtrl(){}function memorizeCtrl(){}function homeCtrl(a){Socialite.load("social-buttons")}function phrasesCtrl(a,b){a.wordCount=4;a.wordListLength=b.wordListLength();a.getRandomWords=function(){a.words=b.getWords(a.wordCount);a.permutations=b.calculatePermutations(a.wordCount);a.lastWordCount=a.wordCount;a.wordListLength=b.wordListLength()};a.getRandomWords()}; \ No newline at end of file diff --git a/js/controllers.js b/js/controllers.js index bd4cf27..82c53f5 100644 --- a/js/controllers.js +++ b/js/controllers.js @@ -5,7 +5,7 @@ function aesCtrl($scope,WordService) { - var passPhraseWordCount = 18; + var passPhraseWordCount = 5; $scope.message = ''; $scope.cypher = ''; @@ -32,7 +32,7 @@ function aesCtrl($scope,WordService) { } else { - $scope.feedBack = 'You need to enter or generate a pass phrase to encrypt this text.'; + $scope.feedBack = 'You need to enter or generate a key phrase to encrypt text.'; $scope.status = 'error'; @@ -46,7 +46,7 @@ function aesCtrl($scope,WordService) { if ($scope.cypher == '' | $scope.passphrase == '' ) { - $scope.feedBack = 'You need to enter your pass phrase to decrypt this cypher.'; + $scope.feedBack = 'You need to enter your key phrase to decrypt this cypher.'; $scope.status = 'error'; @@ -56,7 +56,7 @@ function aesCtrl($scope,WordService) { if ($scope.message == '') { - $scope.feedBack = 'Cypher and pass phrase do not match'; + $scope.feedBack = 'Cypher and key phrase do not match'; $scope.status = 'error'; @@ -117,6 +117,8 @@ function memorizeCtrl() { function homeCtrl(WordService) { + Socialite.load('social-buttons'); + } function phrasesCtrl($scope,WordService) { @@ -129,6 +131,7 @@ function phrasesCtrl($scope,WordService) { $scope.words = WordService.getWords($scope.wordCount); $scope.permutations = WordService.calculatePermutations($scope.wordCount); $scope.lastWordCount = $scope.wordCount; + $scope.wordListLength = WordService.wordListLength(); } diff --git a/less/default.less b/less/default.less index 86f6b6b..ef7ef41 100644 --- a/less/default.less +++ b/less/default.less @@ -1,25 +1,20 @@ @import "../lib/bootstrap/less/bootstrap"; +@import "../lib/socialite/socialite.less"; +@import "mixins"; //@import "mixins"; @iconSpritePath: "../lib/bootstrap/img/glyphicons-halflings.png"; @iconWhiteSpritePath: "../lib/bootstrap/img/glyphicons-halflings-white.png"; -body { - margin-top:60px; -} - - form { &.plain { - background-color:green; } &.cypher { - background-color:yellow; } textarea { font-size:1.1em; - width:95%; + width:100%; height:8em; } } @@ -35,7 +30,7 @@ form { } h2 { - font-size:1.7em; + font-size:1.3em; margin:0.3em 0; } @@ -44,12 +39,17 @@ h2 { p { font-size:1.1em; line-height:1.5em; - &.large { - font-size:1.5em; + &.note { color:#999; } } +.large { + p { + font-size:1.2em; + } +} + p.status { font-weight:bold; @@ -62,4 +62,53 @@ p.status { &.error { color:red; } +} + + +#footer { + background-color:#333; + padding:2em 0; + margin-top:50px; + border-top:5px solid rgba(0,0,0,0.3); + color:#AAA; +} + +#top { + background-color:#8FBE00; + margin-bottom:40px; + padding-top:80px; + padding-bottom:30px; + border-bottom:1px solid #666; + .box-shadow(0px, 3px, 0px, rgba(0,0,0,0.2); + &.home { + background-color:#8ABBCE; + } + &.keymaker { + background-color:#FA6900; + } + h1 { + font-size:4em; + margin-bottom:20px; + margin-top:30px; + color:#FFF; + .text-shadow(0px, -1px, 0px, rgba(0,0,0,0.5)); + } + p { + font-size:1.5em; + color:#F9F2E7; + .text-shadow(0px, -1px, 0px, rgba(0,0,0,0.5)); + a { + color:#F9F2E7; + border-bottom:1px solid #FFF; + text-decoration:none; + font-weight:bold; + &:hover { + background-color:rgba(0,0,0,0.1); + padding-left:4px; + padding-right:4px; + margin:0 -4px; + color:#FFF; + } + } + } } \ No newline at end of file diff --git a/less/mixins.less b/less/mixins.less new file mode 100644 index 0000000..00fa1dd --- /dev/null +++ b/less/mixins.less @@ -0,0 +1,67 @@ +// mixins + + +.backgroundSize(@horizontal, @vertical) { + // used by the backgorund tiles in .tile + -moz-background-size: @horizontal @vertical; + -o-background-size: @horizontal @vertical; + -webkit-background-size: @horizontal @vertical; + background-size: @horizontal @vertical; +} + + +.transition(@property) { + transition-property: @property; + transition-timing-function: linear; + -moz-transition-property: @property; + -moz-transition-timing-function: linear; + -webkit-transition-property: @property; + -webkit-transition-timing-function: linear; + -o-transition-property: @property; + -o-transition-timing-function: linear; +} + + +.rounded-corners (@radius: 5px) { + border-radius: @radius; + -webkit-border-radius: @radius; + -moz-border-radius: @radius; +} + +.box-shadow(@vOffset, @hOffset, @blur, @color) { + -moz-box-shadow: @vOffset @hOffset @blur @color; + -webkit-box-shadow: @vOffset @hOffset @blur @color; + box-shadow: @vOffset @hOffset @blur @color; +} + +.text-shadow(@vOffset, @hOffset, @blur, @color) { + -moz-text-shadow: @vOffset @hOffset @blur @color; + -webkit-text-shadow: @vOffset @hOffset @blur @color; + text-shadow: @vOffset @hOffset @blur @color; +} + +.rotate(@angle) { + transform:rotate(@angle); + -ms-transform:rotate(@angle); /* IE 9 */ + -moz-transform:rotate(@angle); /* Firefox */ + -webkit-transform:rotate(@angle); /* Safari and Chrome */ + -o-transform:rotate(@angle); /* Opera */ +} + +.gradient(@colourTop: rgb(255,255,255),@colourBottom: rgb(0,0,0)) { + background-image: linear-gradient(bottom, @colourBottom 0%, @colourTop 100%); + background-image: -o-linear-gradient(bottom, @colourBottom 0%, @colourTop 100%); + background-image: -moz-linear-gradient(bottom, @colourBottom 0%, @colourTop 100%); + background-image: -webkit-linear-gradient(bottom, @colourBottom 0%, @colourTop 100%); + background-image: -ms-linear-gradient(bottom, @colourBottom 0%, @colourTop 100%); +} + +.noSelection() { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + diff --git a/lib/socialite/images/social-sprite.png b/lib/socialite/images/social-sprite.png new file mode 100755 index 0000000..19f36dd Binary files /dev/null and b/lib/socialite/images/social-sprite.png differ diff --git a/lib/socialite/socialite.less b/lib/socialite/socialite.less new file mode 100644 index 0000000..2ecc55d --- /dev/null +++ b/lib/socialite/socialite.less @@ -0,0 +1,20 @@ +/* + * Socialite Look-a-like defaults + */ + +.social-buttons { display: block; list-style: none; padding: 0; margin: 0px; float:right; } +.social-buttons > li { display: inline-block; margin-left:10px; float: left; } + + +/* +* Removed since these are optimized for white backgrounds + +.social-buttons .socialite { display: block; position: relative; background: url('../lib/socialite/images/social-sprite.png') 0 0 no-repeat; } +.social-buttons .socialite-loaded { background: none !important; } + + +.social-buttons .twitter-share { width: 55px; height: 65px; background-position: 0 0; } +.social-buttons .googleplus-one { width: 50px; height: 65px; background-position: -75px 0; } +.social-buttons .facebook-like { width: 50px; height: 65px; background-position: -145px 0; } +.social-buttons .linkedin-share { width: 60px; height: 65px; background-position: -215px 0; } +*/ \ No newline at end of file diff --git a/lib/socialite/socialite.min.js b/lib/socialite/socialite.min.js new file mode 100755 index 0000000..1db3726 --- /dev/null +++ b/lib/socialite/socialite.min.js @@ -0,0 +1,7 @@ +/*! + * Socialite v2.0 + * http://socialitejs.com + * Copyright (c) 2011 David Bushell + * Dual-licensed under the BSD or MIT licenses: http://socialitejs.com/license.txt + */ +window.Socialite=function(a,b,c){"use strict";var d=0,e=[],f={},g={},h=/^($|loaded|complete)/,i=a.encodeURIComponent,j={settings:{},trim:function(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")},hasClass:function(a,b){return(" "+a.className+" ").indexOf(" "+b+" ")!==-1},addClass:function(a,b){j.hasClass(a,b)||(a.className=a.className===""?b:a.className+" "+b)},removeClass:function(a,b){a.className=j.trim(" "+a.className+" ".replace(" "+b+" "," "))},extendObject:function(a,b,d){for(var e in b){var f=a[e]!==c;if(f&&typeof b[e]=="object")j.extendObject(a[e],b[e],d);else if(d||!f)a[e]=b[e]}},getElements:function(a,b){var c=0,d=[],e=!!a.getElementsByClassName,f=e?a.getElementsByClassName(b):a.getElementsByTagName("*");for(;c -
-
-

About

-

The why and how.

+
+
+
+
+

Cryptography Project

+

A Simply Do Exploration.

+
-
-
-

Advanced Encryption Standard (AES)

-

Using CryptoJS

-

Using words lists from Kevin's Word List Page

+
+
+
+

Encrypt & Decrypt

+

Encrypt & Decrypt utilizes the Advanced Encryption Standard (AES). Since the source code is open you can check for your self what happens with your data. No funny business! Guaranteed.

+

Nothing ever leaves your local browser.

+

Encrypt and Decrypt

+
+
+

Key Maker

+

Typical passwords are hard to remember yet easy to crack. Why not use a somewhat longer but easy to remember sequence of random words instead?

+

Key Maker

+
+
+

Memorize

+

It is easier than you think to quickly memorize word sequences with the Method of Loci (aka Memory Palace).

+

Check out this video or even better read Moonwalking with Einstein by Joshua Foer for a great introduction.

+ +
\ No newline at end of file diff --git a/partials/aes.html b/partials/aes.html index 277c2cd..1332024 100644 --- a/partials/aes.html +++ b/partials/aes.html @@ -1,67 +1,65 @@ -
-
-
-

Like privacy?

-

Encrypt any text.

+
+
+
+
+

Like privacy?

+

Encrypt any text.

+
+
+

Encrypt any text right in your browser. Nothing is sent to a server.

+

Learn more about the Advanced Encryption Standard (AES) used.

+
+
+
+
-
-

Encrypt any text right in your browser. Nothing is sent to a server.

-

Learn more about the Advanced Encryption Standard (AES) used.

-
- - -
-

1. Key

-

The key is used to encrypt a text into a cypher and vice versa. Longer keys are better.

- - -
+ +
+

{{feedBack}}

+
+ +
+

Enter a custom key or generate random key

+ +

The key is used to encrypt a text into a cypher and vice versa. Longer keys are better. See also: Key Maker

+
-
-

2. Content

-

Using the key above you can encrypt a new text or descrypt a previously encrypted text.

-

{{feedBack}}

-
+ -
-
-

Encrypt

-
- -
- +
+ +

Plain Text

+
+
+ +
-
-
-
- +
+
+ +
-
- -
+ +
-
-
-

Decrypt

-
- -
- +
+ +

Cypher

+
+
+ +
-
-
-
- +
+
+ +
-
- -
+ +
- -
\ No newline at end of file diff --git a/partials/home.html b/partials/home.html deleted file mode 100644 index d9aee38..0000000 --- a/partials/home.html +++ /dev/null @@ -1,26 +0,0 @@ -
-
-
-

Welcome

-

Explorations into Cryptography.

-
-
-
- -
-
-

Encrypt & Decrypt

-

Encrypt any text right in your browser. Nothing is ever sent to a server.

-

Utilizes the Advanced Encryption Standard (AES). Since all source code is open you can check for your self what happens with your data. No funny business! Guaranteed.

-
-
-

Key Maker

-

Typical passwords are hard to remember yet easy to crack.

-

Why not use a somewhat longer but easy to remember sequence of random words instead?

-

The Key Maker can make keys of any desired length using common English words.

-
-
-

Memorize

-

coming soon

-
-
diff --git a/partials/memorize.html b/partials/memorize.html index 747e0f7..43104db 100644 --- a/partials/memorize.html +++ b/partials/memorize.html @@ -1,20 +1,24 @@ -
-
-
-

Memorize

-

How to easily remember a list of words (or anything).

+
+
+
+
+

Memorize

+

How to easily remember a list of words (or anything).

+
-
-
-

Security is most likely compromised by ineffective passwords (e.g. 1234) or by passwords being stored insecurely (post it notes, anybody?). So the best way to improve security is to: a) Choose better passwords and b) Not write it down.

-

Using the Method of loci also known as Memory Palace it is surprisingly easy to memorize things.

-

It relies on our ability to quickly memorize and reliably recall spacial information.

-

Try it for yourself:

-

Visualize a familiar place (e.g. your home)

-

It should be easy for you to imagine yourself walking through you home starting at the front door.

+
+
+
+

Security is most likely compromised by ineffective passwords (e.g. 1234) or by passwords being stored insecurely (post it notes, anybody?). So the best way to improve security is to: a) Choose better passwords and b) Not write it down.

+

Using the Method of loci also known as Memory Palace it is surprisingly easy to memorize things.

+

It relies on our ability to quickly memorize and reliably recall spacial information.

+

Try it for yourself:

+

Visualize a familiar place (e.g. your home)

+

It should be easy for you to imagine yourself walking through you home starting at the front door.

+
\ No newline at end of file diff --git a/partials/phrases.html b/partials/phrases.html index 15d5ea5..b6dc9fd 100644 --- a/partials/phrases.html +++ b/partials/phrases.html @@ -1,39 +1,44 @@ -
-
-
-

Need a key?

-

Generate random phrases.

+
+
+
+
+

Need a key?

+

Generate random phrases.

+
+
+

Typical passwords are hard to remember yet easy to crack.

+

Why not use a somewhat longer but easy to remember sequence of random words instead?

+
+
+
+
-
-

Typical passwords are hard to remember yet easy to crack.

-

Why not use a somewhat longer but easy to remember sequence of random words instead?

-
- -
-

Your random key:

-
- -
- -

One of {{permutations}} possible {{lastWordCount}}-word permutations based on our {{wordListLength}} words long list. The longer your phrase is the more secure and harder to guess it is!

-
+
+

Your random key:

+
+ +
+ +

One of {{permutations}} possible {{lastWordCount}}-word permutations based on our {{wordListLength}} words long list.The longer your phrase is the more secure and harder to guess it is!

+
-
-
-
-
- +
+ +
+
+ +
-
-
- -
- +
+ +
+ +
-
- -
+ +
+
\ No newline at end of file