Guest User

Untitled

a guest
Dec 12th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.87 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <meta charset="utf-8">
  3. <title>klg.passwordEntropy demo</title>
  4. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
  5. <script type="text/ecmascript" src="passwordModel.js"></script>
  6. <script type="text/ecmascript" src="passwordEntropy.js"></script>
  7. <script type="text/ecmascript">
  8. jQuery(function($){
  9. "use strict";
  10.  
  11. var d2f = function(x) {
  12. var f = Math.round(100*x)%100;
  13. return Math.floor(x) + (f<10?".0":".") + f;
  14. };
  15.  
  16. var rg = function(x) {
  17. if (x < 0) x = 0; else if (x > 1) x = 1;
  18. var a,b,c,d;
  19. // rat. fun. approx. of red-green geodesic
  20. a = 18.8686; b = 2.21763;
  21. c = 401.943; d = 650.562;
  22. a *= x; b *= x; c *= x; d *= x;
  23. a += 20.3168; b += 30.2787;
  24. c += 19.1898; d -= 675.851;
  25. a *= x; b *= x; c *= x; d *= x;
  26. a += 1.45626; b += 8.00815;
  27. c -= 447.809; d -= 304.904;
  28. a *= x; b *= x; c *= x; d *= x;
  29. b += 0.13718; c -= 251.399;
  30. d -= 94.2593; c *= x; d *= x;
  31. c -= 441.895; d -= 285.105;
  32. c *= x; d *= x;
  33. c += 719.97; d += 719.97;
  34. a /= b; a *= 255; a |= 0;
  35. c /= d; c *= 255; c |= 0;
  36. return "rgb("+c+","+a+",0)";
  37. };
  38.  
  39. // get a model string and create a strength checker function
  40. var entropy = klg.passwordEntropy(klg.passwordModel);
  41.  
  42. // create GUI
  43. var ent, bpc, bar, input;
  44. var update;
  45.  
  46. $("#demo")
  47. .empty()
  48. .append($("<div>Password:</div>"))
  49. .append(input = $(document.createElement("input"))
  50. .css({width:"200px",borderWidth:"1px",padding:0,margin:0})
  51. .prop({type:"password"})
  52. .keyup(update = function() {
  53. var p = $(this).val();
  54. var s = entropy(p);
  55. ent.text(d2f(s));
  56. bpc.text(p ? d2f(s / p.length) : "-");
  57. bar.css({
  58. "width": Math.round(Math.atan(s/96)*400/Math.PI)+"px",
  59. "border-color": rg(s/256)
  60. });
  61. })
  62. .click(update))
  63. .append($(document.createElement("label"))
  64. .append($(document.createElement("input"))
  65. .prop({type:"checkbox",checked:true})
  66. .change(function() {
  67. input.prop("type", this.checked ? "password" : "text")
  68. }))
  69. .append($(document.createTextNode(" hide"))))
  70. .append(bar = $(document.createElement("div"))
  71. .css({width:0,border:"2px solid red",padding:0,margin:0}))
  72. .append($(document.createElement("div"))
  73. .append(ent = $(document.createElement("span"))
  74. .css({display:"inline-block",minWidth:"7ex",textAlign:"right"}))
  75. .append(document.createTextNode(" bits")))
  76. .append($(document.createElement("div"))
  77. .append(bpc = $(document.createElement("span"))
  78. .css({display:"inline-block",minWidth:"7ex",textAlign:"right"}))
  79. .append(document.createTextNode(" bpc")));
  80. ent.text(d2f(0));
  81. bpc.text("-");
  82. bar.css({"border-width":"2px 0"});
  83. });
  84. </script>
  85. <div id="demo">Javascript required</div>
Add Comment
Please, Sign In to add comment