如何在使用javascript散列之前规范化密码?

如何在使用javascript散列之前规范化密码?,javascript,jquery,node.js,unicode-normalization,Javascript,Jquery,Node.js,Unicode Normalization,我在asp.net应用程序中使用Node.js库,通过使用其UNorm.normalize函数(如UNorm.normalize(“NFC”,strpwd))来规范化密码字符串;但它没有给我任何输出。为了跟踪它,我在调试模式下执行它,发现unorm.js file函数fromData(next,cp,needFeature)中出现错误,它说“javascript运行时错误无法获取未定义或空引用的属性“0”。如果我按下“忽略”按钮,它会显示输出,但如果我单击“继续”或“中断”按钮,则不会生成输出。

我在asp.net应用程序中使用Node.js库,通过使用其UNorm.normalize函数(如UNorm.normalize(“NFC”,strpwd))来规范化密码字符串;但它没有给我任何输出。为了跟踪它,我在调试模式下执行它,发现unorm.js file函数fromData(next,cp,needFeature)中出现错误,它说“javascript运行时错误无法获取未定义或空引用的属性“0”。如果我按下“忽略”按钮,它会显示输出,但如果我单击“继续”或“中断”按钮,则不会生成输出。我从中获取Node.js库代码。我的申请代码如下:

<script type="text/javascript" src="unorm-master/src/unorm.js"></script>
<script type="text/javascript" language="javascript">

 function strNormalize()
 {  

    var nstr;
    var strpwd = 'αλφα';

    nstr = UNorm.normalize('NFC',strpwd);    

    document.getElementById("txtNormalize").value = nstr;  

 }
 </script>  

函数strNormalize()
{  
var-nstr;
var strpwd='αλφα';
nstr=正常化('NFC',strpwd);
document.getElementById(“txtNormalize”).value=nstr;
}
有人能告诉我如何在Node.js文件unorm.js中解决这个问题吗?或者建议使用Javascript的任何其他解决方案,通过转换为punycode,然后散列

只要您在两种方式下进行相同的转换(例如,当您进行第一次哈希存储和进行哈希验证时),您就应该是好的


e、 g.您的示例的punycode为“-mxaa3a7b”

可能您错误地使用了此库,自述文件中有一些示例,请尝试:

nstr = UNorm.nfc(strpwd);

根据所针对的浏览器,您可以只使用
String.prototype.normalize()
()。要引用文档,请执行以下操作:

方法返回 给定字符串(如果该值不是字符串,则将转换为字符串 首先)

参数

NFC
NFD
NFKC
NFKD
中选择一种格式,指定Unicode 规范化表单。如果省略或未定义,则使用
NFC

  • NFC
    -规范化形式的规范化组合
  • NFD
    -规范化形式的规范化分解
  • NFKC
    -规范化表单兼容性组合
  • NFKD
    -规范化表单兼容性分解

例如
“\u1E9B\u0323”。normalize()
将使用NFC表单生成字符串。

我也尝试过,但同样的错误也会发生。您能告诉我如何使用这个库吗?我只需要包含在上可用的脚本文件,它们具有相同的结构,并通过包含其路径来使用它们。我只包括unorm.js文件,如果我试图包括unormdata.js文件,那么unorm不可用。您能告诉我如何正确使用这个库吗?那么我想这是unorm库中的错误,请尝试联系库开发人员进行修复。这是另一种方法。您只需使用punycode(即ascii)就可以解决您遇到的问题,而不是使用unicode。你要做的就是保存一个密码,这样它就可以工作了。