Encrypt Password

Encrypt SmartConnect Password

by ethan_sorenson

HTML

<script src="https://rawgit.com/digitalbazaar/forge-dist/master/dist/forge.min.js"></script>
<p><strong>Encrypt your password.</strong></p>
  <label for="mod">Module:</label><br>
  <input type="text" value="vYofWQ63vYJZTB/EW4NT5LMlfiB5LftMMQSbJgFHvfE+Z8AXnCLNplBByGLWBLMolSwJZjJdUN5gLF0V/Q9aVwOK5GWAezt8IPwMYqAgwQ2btnlhrsKLkKoTtogGj9MYz9briYn/DHZlW56aOYvwSoz1LYhnoja59cG2UvIXxVE=" id="mod" name="mod"><br>
  <label for="exp">Exponent:</label><br>
  <input type="text" value="AQAB" id="exp" name="exp"><br>
  <label for="pass">Password:</label><br>
  <input type="text" id="pass"placeholder="my password" name="pass"><br><br>
  <button id="submit" class="myButton">Submit</button>
<p>
  <span id="encrypt"></span>
</p>

CSS

input[type=text] {
  font-family: 'Consolas', monospace;
  font-size: 1.1em;
  padding: .03em;
  width: auto;
  text-align: left;
}

/* insane button CSS from http://www.bestcssbuttongenerator.com/ */ 
.myButton {
	-moz-box-shadow: 0px 1px 0px 0px #f0f7fa;
	-webkit-box-shadow: 0px 1px 0px 0px #f0f7fa;
	box-shadow: 0px 1px 0px 0px #f0f7fa;
	background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #33bdef), color-stop(1, #019ad2));
	background:-moz-linear-gradient(top, #33bdef 5%, #019ad2 100%);
	background:-webkit-linear-gradient(top, #33bdef 5%, #019ad2 100%);
	background:-o-linear-gradient(top, #33bdef 5%, #019ad2 100%);
	background:-ms-linear-gradient(top, #33bdef 5%, #019ad2 100%);
	background:linear-gradient(to bottom, #33bdef 5%, #019ad2 100%);
	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#33bdef', endColorstr='#019ad2',GradientType=0);
	background-color:#33bdef;
	-moz-border-radius:6px;
	-webkit-border-radius:6px;
	border-radius:6px;
	border:1px solid #057fd0;
	display:inline-block;
	cursor:pointer;
	color:#ffffff;
	font-family:Arial;
	font-size:15px;
	font-weight:bold;
	padding:6px 24px;
	text-decoration:none;
	text-shadow:0px -1px 0px #5b6178;
}
.myButton:hover {
	background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #019ad2), color-stop(1, #33bdef));
	background:-moz-linear-gradient(top, #019ad2 5%, #33bdef 100%);
	background:-webkit-linear-gradient(top, #019ad2 5%, #33bdef 100%);
	background:-o-linear-gradient(top, #019ad2 5%, #33bdef 100%);
	background:-ms-linear-gradient(top, #019ad2 5%, #33bdef 100%);
	background:linear-gradient(to bottom, #019ad2 5%, #33bdef 100%);
	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#019ad2', endColorstr='#33bdef',GradientType=0);
	background-color:#019ad2;
}
.myButton:active {
	position:relative;
	top:1px;
}

JavaScript

var theButton = document.getElementById("submit");
theButton.onclick = click;

function click() {
  var password = "j";
  var rsa = forge.pki.rsa;
  var BigInteger = forge.jsbn.BigInteger;

  function parseBigInteger(b64) {
    return new BigInteger(forge.util.createBuffer(forge.util.decode64(b64)).toHex(), 16);
   }
  var n = document.getElementById("mod").value;
  var e = document.getElementById("exp").value;
  var pubKey = rsa.setPublicKey(parseBigInteger(n), parseBigInteger(e));
  var encryptedData = pubKey.encrypt(document.getElementById("pass").value, 'RSAES-PKCS1-V1_5');
  //document.write('Encrypted Password: ' + btoa(encryptedData) +
  //'<br>Unencrypted Password: ' + encodeURIComponent(btoa(encryptedData)));
  var place = document.getElementById("encrypt");
  place.innerHTML = '<strong>Encrypted Password: </strong><br>' + btoa(encryptedData) +
  '<br><strong>URI Encoded Encrypted Password: </strong><br>' + encodeURIComponent(btoa(encryptedData));
}