如何加密 HTML5 网络存储?

Posted

技术标签:

【中文标题】如何加密 HTML5 网络存储?【英文标题】:How can I encrypt HTML5 web storage? 【发布时间】:2014-04-10 08:03:49 【问题描述】:

mcrypt 还是 cryptojs 更好?

谁能给我一个如何使用 HML5 加密网络存储的示例?

HTML:

<div id="Data Personal">
    <h1>Silakan Masukkan Data</h1>
    <div>Nama = <span id="nama" contenteditable="true" onkeyup="storeMyContact(this.id)"></span></div>
    <div>telepon =  <span id="Telepon" contenteditable="true" onkeyup="storeMyContact(this.id)"></span></div>
    <div>Email =  <span id="email" contenteditable="true" onkeyup="storeMyContact(this.id)"></span></div>
    <div>Kartu kredit =  <span id="cc" contenteditable="true"onkeyup="storeMyContact(this.id)"></span></div>
</div>

JavaScript:

function storeMyContact(id) 
    var nama = document.getElementById('nama').innerhtml;
    var Telepon = document.getElementById('Telepon').innerHTML;
    var email = document.getElementById('email').innerHTML;
    var cc = document.getElementById('cc').innerHTML;
    localStorage.setItem('datnama', nama);
    localStorage.setItem('dattlp', Telepon);
    localStorage.setItem('datemail', email);
    localStorage.setItem('datcc', cc);

【问题讨论】:

由于解密密钥仍将在源代码 js 文件中,所以有什么好处?根本不应该使用本地存储来存储敏感数据.. 就像 Mohammed 所说的,您可以对其进行加密以使其更难“窃取”敏感数据,但由于加密是在客户端代码中完成的,因此并不那么安全。您可以在服务器端服务上对其进行加密,其中加密(和盐)将对用户隐藏,但这样您就不会真正受益于本地存储...... @MohammedR.El-Khoudary,感谢您提供的信息。那我可以用php解密吗? 是的,我更喜欢服务器端加密..这种方式在客户端存储数据可以很好..但是你应该使用强大的加密算法,你应该指定一个特定的密钥更改周期..跨度> 【参考方案1】:

除了我在上面的评论.. 存储常规或加密数据没有任何区别.. 因为本地存储只接受文本,那么如果您存储 JSON,例如它需要首先被字符串化.. 所以在存储你之前字符串化->然后加密->然后存储..并在检索时检索->然后解密->然后解析。

我曾经使用过 CryptoJS,那是用于哈希计算的,我曾经通过 SMS 发送哈希盐......它真的很好用。

使用例如 AES 进行加密/解密的示例是:

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js">
</script>
<script>
    var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");

    var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");
</script>

The howto here is straightforward and easy to follow

Demo Link : Look for the Console

【讨论】:

幸好它是引号中的“秘密密码”;-) 链接在我回答的最后。如果你想学习任何具体的东西。请不要犹豫,在这里问。 你现在也有这个库:github.com/brix/crypto-js【参考方案2】:

如果使用 PHP,则必须使用 Mcrypt 等服务器端加密,然后使用 Base64 对其进行编码。

var nama = '<?php echo $base64EncryptedValue; ?>';
localStorage.setItem('datnama', nama);

【讨论】:

以上是关于如何加密 HTML5 网络存储?的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 网络存储与 Cookie

如何使用没有 Flash 的网络浏览器捕获和存储 h.264 格式的视频?

盘古开源分析:为什么IPFS&Filecoin的存储网络是加密行业最有前途的创新?

HTML5 中的本地存储、会话存储、Web 存储、Web 数据库和 cookie

目前云存储平台的视频安全与视频加密技术对比分析

存储网络服务的密码?