问题
I am working on a project that requires a client to de-crypt binary data received from the server. The scenario is that a server has binary data in a compressed and encrypted form. The browser needs to receive this data (files), decrypt and decompress them and then download them to a user-specified location on the local machine. I understand that their are several limitations of doing this in the browser -
Does Javascript have access to the local storage. Can I write/stream multiple files to a user-specified location on the hard drive? If so, what APIs to look for.
Can Javascript (or any other technology) be used in the browser to decrypt (AES-256) and decompress this data stream within the browser?
Can these issues be solved using the FileAPI of HTML5?
EDIT:
Replaced SHA2 with AES. We are using SHA2 for integrity check, not for encryption.That was a typo.
回答1:
- You can't directly access the user's file system. Though, the HTML5 file system API can be used to save data in a virtual, sandboxed filesystem.
- CryptoJS has an implementation for SHA-2
To receive the data from the server, I suggest to use XMLHttpRequest
with responseType = "arraybuffer".
回答2:
I suggest you use a javascript cryptography library, here is one: http://code.google.com/p/crypto-js/
回答3:
SHA-2 is not a means of encrypting or decrypting data, its a hash algorithm, it is used to determine if data has been tampered with. Encryption algorithms are: DES, 3-DES, AES etc.
I suspect you need to generate a hash on the data you have and compare with the hash you have received.
来源:https://stackoverflow.com/questions/11666165/encryption-decryption-of-binary-data-in-the-browser