【问题标题】:Encrypt a password in AngularJS before saving into database在保存到数据库之前在 AngularJS 中加密密码
【发布时间】:2016-03-05 00:15:20
【问题描述】:

我在我的 Web 应用程序中使用 AngularJS。我必须从 UI 中获取密码并以加密格式将其保存到数据库中。

我必须取回它并解密它。我的想法是读取js文件中的文本字符串,然后在保存到数据库之前在服务中对其进行加密。

有什么建议吗?

【问题讨论】:

  • 更好的方法不是加密,而是获取哈希并存储它。每当您想授权用户时,请从他/她提供的字符串中获取一个哈希值作为密码并比较哈希值
  • 检查这个Encrypting & Decrypting a String in C#它会真正解决你的问题。
  • obviex.com/samples/hash.aspx 获取一些代码示例,这些示例展示了如何改为散列。您永远不需要解密,您只需要在用户发送给您时验证密码。
  • 我完全同意存储哈希而不是密码。此外,请确保通过 https 完成与服务器的任何连接

标签: html sql-server angularjs encryption


【解决方案1】:

正如Dmitry Bychenko 所说,创建一个工厂服务来散列密码。然后存储并比较哈希。

angular.module("myApp").factory("sha1", function () {
function sha1(msg)
{
  function rotl(n,s) { return n<<s|n>>>32-s; };
  function tohex(i) { for(var h="", s=28;;s-=4) { h+=(i>>>s&0xf).toString(16); if(!s) return h; } };
  var H0=0x67452301, H1=0xEFCDAB89, H2=0x98BADCFE, H3=0x10325476, H4=0xC3D2E1F0, M=0x0ffffffff; 
  var i, t, W=new Array(80), ml=msg.length, wa=new Array();
  msg += fcc(0x80);
  while(msg.length%4) msg+=fcc(0);
  for(i=0;i<msg.length;i+=4) wa.push(msg.cca(i)<<24|msg.cca(i+1)<<16|msg.cca(i+2)<<8|msg.cca(i+3));
  while(wa.length%16!=14) wa.push(0);
  wa.push(ml>>>29),wa.push((ml<<3)&M);
  for( var bo=0;bo<wa.length;bo+=16 ) {
    for(i=0;i<16;i++) W[i]=wa[bo+i];
    for(i=16;i<=79;i++) W[i]=rotl(W[i-3]^W[i-8]^W[i-14]^W[i-16],1);
    var A=H0, B=H1, C=H2, D=H3, E=H4;
    for(i=0 ;i<=19;i++) t=(rotl(A,5)+(B&C|~B&D)+E+W[i]+0x5A827999)&M, E=D, D=C, C=rotl(B,30), B=A, A=t;
    for(i=20;i<=39;i++) t=(rotl(A,5)+(B^C^D)+E+W[i]+0x6ED9EBA1)&M, E=D, D=C, C=rotl(B,30), B=A, A=t;
    for(i=40;i<=59;i++) t=(rotl(A,5)+(B&C|B&D|C&D)+E+W[i]+0x8F1BBCDC)&M, E=D, D=C, C=rotl(B,30), B=A, A=t;
    for(i=60;i<=79;i++) t=(rotl(A,5)+(B^C^D)+E+W[i]+0xCA62C1D6)&M, E=D, D=C, C=rotl(B,30), B=A, A=t;
    H0=H0+A&M;H1=H1+B&M;H2=H2+C&M;H3=H3+D&M;H4=H4+E&M;
  }
  return tohex(H0)+tohex(H1)+tohex(H2)+tohex(H3)+tohex(H4);
};
return sha1;
});

感谢this answer SHA1 函数。

【讨论】:

    猜你喜欢
    • 2011-04-28
    • 1970-01-01
    • 2021-03-18
    • 2016-10-11
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多