Cyber Security & Dot Net Security

Sunday, November 14, 2010

Encrypting Passwords in ASP.NET

SHA1.js
/*
 *Pardeep Boora ( itsecurity.india@gmail.com )
 * Convert a 32-bit number to a hex string with ms-byte first
 */
var hex_chr = "0123456789abcdef";
function hex(num)
{
  var str = "";
  for(var j = 7; j >= 0; j--)
    str += hex_chr.charAt((num >> (j * 4)) & 0x0F);
  return str;
}


/*
 * Convert a string to a sequence of 16-word blocks, stored as an array.
 * Append padding bits and the length, as described in the SHA1 standard.
 */
function str2blks_SHA1(str)
{
  var nblk = ((str.length + 8) >> 6) + 1;
  var blks = new Array(nblk * 16);
  for(var i = 0; i < nblk * 16; i++) blks[i] = 0;
  for(i = 0; i < str.length; i++)
    blks[i >> 2] |= str.charCodeAt(i) << (24 - (i % 4) * 8);
  blks[i >> 2] |= 0x80 << (24 - (i % 4) * 8);
  blks[nblk * 16 - 1] = str.length * 8;
  return blks;
}


/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations internally 
 * to work around bugs in some JS interpreters.
 */
function add(x, y)
{
  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}


/*
 * Bitwise rotate a 32-bit number to the left
 */
function rol(num, cnt)
{
  return (num << cnt) | (num >>> (32 - cnt));
}


/*
 * Perform the appropriate triplet combination function for the current
 * iteration
 */
function ft(t, b, c, d)
{
  if(t < 20) return (b & c) | ((~b) & d);
  if(t < 40) return b ^ c ^ d;
  if(t < 60) return (b & c) | (b & d) | (c & d);
  return b ^ c ^ d;
}


/*
 * Determine the appropriate additive constant for the current iteration
 */
function kt(t)
{
  return (t < 20) ?  1518500249 : (t < 40) ?  1859775393 :
         (t < 60) ? -1894007588 : -899497514;
}


/*
 * Take a string and return the hex representation of its SHA-1.
 */
function calcSHA1(str)
{
  var x = str2blks_SHA1(str);
  var w = new Array(80);


  var a =  1732584193;
  var b = -271733879;
  var c = -1732584194;
  var d =  271733878;
  var e = -1009589776;


  for(var i = 0; i < x.length; i += 16)
  {
    var olda = a;
    var oldb = b;
    var oldc = c;
    var oldd = d;
    var olde = e;


    for(var j = 0; j < 80; j++)
    {
      if(j < 16) w[j] = x[i + j];
      else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
      t = add(add(rol(a, 5), ft(j, b, c, d)), add(add(e, w[j]), kt(j)));
      e = d;
      d = c;
      c = rol(b, 30);
      b = a;
      a = t;
    }


    a = add(a, olda);
    b = add(b, oldb);
    c = add(c, oldc);
    d = add(d, oldd);
    e = add(e, olde);
  }
  //return hex(a) + hex(b) + hex(c) + hex(d) + hex(e);
  var temp=rendomno()+hex(a) + hex(b) + hex(c) + hex(d) + hex(e)+rendomno();
return temp.length+"-"+temp;
  //alert(temp.length+"-"+temp);
  
}
function rendomno()
{
chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
  pass = "";
  for(x=0;x<10;x++)
  {
    i = Math.floor(Math.random() * 62);
    pass += chars.charAt(i);
  }
  return pass;
  
}







Second Step :
Password         :-  <asp:TextBox ID="txtpassword" runat="server" Width="93%" TextMode="Password" AutoCompleteType=None></asp:TextBox>


                            
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtpassword"<asp:Button ID="btnLogin" runat="server" Text="Login" Width="63px" Font-Bold="True"  Font-Names="Verdana" Font-Size="10pt" OnClick="btnLogin_Click" onclientclick="document.getElementById('txtpassword').value=calcSHA1(document.getElementById('txtpassword').value)" ValidationGroup="Login" />
                          
Button Click Event  -

 logoutmsg.Text = "";
            string[] strPassword;
            strPassword = txtpassword.Text.Trim().Split('-');
            Int32 passwordLength = Convert.ToInt32(strPassword[0]);
            string password = strPassword[1];
            //string EncryptedString = dut.EncryptString(txtuser.Text.Trim(), txtpassword.Text.Trim());
            if (Session["randomStr"].ToString() == "")
            {


                if (DAL.MyAuthentication(txtuser.Text.Trim(), password.Substring(10, (passwordLength - 20))))

No comments: