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));
}