无法使crypto.js将散列输入与散列数组进行比较

时间:2015-04-02 05:51:56

标签: javascript hash

我试图制作优惠券验证表单,使用加密方式隐藏用户的优惠券。

<input name="coupon-code" id="coupon-code" type="text" value="fedora">

这是验证功能:

     //validated dynamically
     $("#coupon-code").on('keyup', function () {
    //stringified hash
    coupons = ["3DA8FF923121DE176A1AB9FA3609A2AEAC25623628C8EB9E2C3D0D7364131648DE8E3F86259720EDC2C761F440AEB45225945765E05D21532B413834316EDBDB" ];
    //after hashing the value of the input, convert it to a string
    hash = CryptoJS.SHA512($(this).val()).toString(CryptoJS.enc.base64);
    //loop and compare
    for (i = 0; i < coupons.length; i++) {
        if (hash == i) {
            $('#coupon-code').css("background-color", "green");
        } else {
            $('#coupon-code').css("background-color", "red");
        }
    }
});

我保持&#34;真实&#34;优惠券而不是阵列中的哈希值用于演示目的。

第一个问题是我无法让crypto将输入与数组中的元素进行比较:

CryptoJS.SHA512($("#coupon-code").val()) == CryptoJS.SHA512("fedora");

false

另一个问题是用户可以看到加密算法(在这种情况下为SHA 512)并且可以反向散列数组中的优惠券。 Crypto.js没有问过/提供了一个密钥,所以我想这很容易。

0 个答案:

没有答案