使用Crypto-js就地隐藏元素内容

时间:2015-12-20 13:16:35

标签: javascript html dom hash cryptojs

我正在尝试使用JavaScript散列数据。当我运行第一个代码时,它将使用document.write进行哈希。现在我尝试第二个代码按内容ID进行哈希,但它没有工作。任何人都可以解释原因吗?

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha256.js"></script>
<script>
    var hash = CryptoJS.SHA256("hello");
    document.write(hash.toString(CryptoJS.enc.Hex));
</script>

使用第一种方法可以很好地工作 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

<script>
    var hash = CryptoJS.SHA256;
    var it = (hash.toString(CryptoJS.enc.Hex));
    document.getElementById('hashit').innerHTML = 'it';
</script>

<p id="hashit">Hello</p>

1 个答案:

答案 0 :(得分:0)

如果你想在一个元素中哈希 in ,那么你需要读出值/文本,哈希并写回文本:

var element = document.getElementById('hashit');
var hash = CryptoJS.SHA256(element.innerHTML);
element.innerHTML = hash.toString();

这是一个可运行的片段,可在2秒后更改值。

setTimeout(function(){
  var element = document.getElementById('hashit');
  var hash = CryptoJS.SHA256(element.innerHTML);
  element.innerHTML = hash.toString();
}, 2000);
<script src="https://cdn.rawgit.com/CryptoStore/crypto-js/3.1.2/build/rollups/sha256.js"></script>
<p id="hashit">Hello</p>

请记住,JavaScript与PHP不同。您不能简单地在像element.innerHTML = 'it';这样的字符串中使用变量。您必须使用element.innerHTML = it;