Dieses Repository beinhaltet HTML- und Javascript Code zur einer NotizenWebApp auf Basis von Web Storage. Zudem sind Mocha/Chai Tests im Browser enthalten. https://meinenotizen.netlify.app/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 9.7KB

4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. bcrypt.js
  2. =========
  3. Optimized bcrypt in JavaScript with zero dependencies. Compatible to the C++ [bcrypt](https://npmjs.org/package/bcrypt)
  4. binding on node.js and also working in the browser.
  5. <a href="https://travis-ci.org/dcodeIO/bcrypt.js"><img alt="build static" src="https://travis-ci.org/dcodeIO/bcrypt.js.svg?branch=master" /></a> <a href="https://npmjs.org/package/bcryptjs"><img src="https://img.shields.io/npm/v/bcryptjs.svg" alt=""></a> <a href="https://npmjs.org/package/bcryptjs"><img src="https://img.shields.io/npm/dm/bcryptjs.svg" alt=""></a> <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=dcode%40dcode.io&item_name=Open%20Source%20Software%20Donation&item_number=dcodeIO%2Fbcrypt.js"><img alt="donate ❤" src="https://img.shields.io/badge/donate-❤-ff2244.svg"></a>
  6. Security considerations
  7. -----------------------
  8. Besides incorporating a salt to protect against rainbow table attacks, bcrypt is an adaptive function: over time, the
  9. iteration count can be increased to make it slower, so it remains resistant to brute-force search attacks even with
  10. increasing computation power. ([see](http://en.wikipedia.org/wiki/Bcrypt))
  11. While bcrypt.js is compatible to the C++ bcrypt binding, it is written in pure JavaScript and thus slower ([about 30%](https://github.com/dcodeIO/bcrypt.js/wiki/Benchmark)), effectively reducing the number of iterations that can be
  12. processed in an equal time span.
  13. The maximum input length is 72 bytes (note that UTF8 encoded characters use up to 4 bytes) and the length of generated
  14. hashes is 60 characters.
  15. Usage
  16. -----
  17. The library is compatible with CommonJS and AMD loaders and is exposed globally as `dcodeIO.bcrypt` if neither is
  18. available.
  19. ### node.js
  20. On node.js, the inbuilt [crypto module](http://nodejs.org/api/crypto.html)'s randomBytes interface is used to obtain
  21. secure random numbers.
  22. `npm install bcryptjs`
  23. ```js
  24. var bcrypt = require('bcryptjs');
  25. ...
  26. ```
  27. ### Browser
  28. In the browser, bcrypt.js relies on [Web Crypto API](http://www.w3.org/TR/WebCryptoAPI)'s getRandomValues
  29. interface to obtain secure random numbers. If no cryptographically secure source of randomness is available, you may
  30. specify one through [bcrypt.setRandomFallback](https://github.com/dcodeIO/bcrypt.js#setrandomfallbackrandom).
  31. ```js
  32. var bcrypt = dcodeIO.bcrypt;
  33. ...
  34. ```
  35. or
  36. ```js
  37. require.config({
  38. paths: { "bcrypt": "/path/to/bcrypt.js" }
  39. });
  40. require(["bcrypt"], function(bcrypt) {
  41. ...
  42. });
  43. ```
  44. Usage - Sync
  45. ------------
  46. To hash a password:
  47. ```javascript
  48. var bcrypt = require('bcryptjs');
  49. var salt = bcrypt.genSaltSync(10);
  50. var hash = bcrypt.hashSync("B4c0/\/", salt);
  51. // Store hash in your password DB.
  52. ```
  53. To check a password:
  54. ```javascript
  55. // Load hash from your password DB.
  56. bcrypt.compareSync("B4c0/\/", hash); // true
  57. bcrypt.compareSync("not_bacon", hash); // false
  58. ```
  59. Auto-gen a salt and hash:
  60. ```javascript
  61. var hash = bcrypt.hashSync('bacon', 8);
  62. ```
  63. Usage - Async
  64. -------------
  65. To hash a password:
  66. ```javascript
  67. var bcrypt = require('bcryptjs');
  68. bcrypt.genSalt(10, function(err, salt) {
  69. bcrypt.hash("B4c0/\/", salt, function(err, hash) {
  70. // Store hash in your password DB.
  71. });
  72. });
  73. ```
  74. To check a password:
  75. ```javascript
  76. // Load hash from your password DB.
  77. bcrypt.compare("B4c0/\/", hash, function(err, res) {
  78. // res === true
  79. });
  80. bcrypt.compare("not_bacon", hash, function(err, res) {
  81. // res === false
  82. });
  83. // As of bcryptjs 2.4.0, compare returns a promise if callback is omitted:
  84. bcrypt.compare("B4c0/\/", hash).then((res) => {
  85. // res === true
  86. });
  87. ```
  88. Auto-gen a salt and hash:
  89. ```javascript
  90. bcrypt.hash('bacon', 8, function(err, hash) {
  91. });
  92. ```
  93. **Note:** Under the hood, asynchronisation splits a crypto operation into small chunks. After the completion of a chunk, the execution of the next chunk is placed on the back of [JS event loop queue](https://developer.mozilla.org/en/docs/Web/JavaScript/EventLoop), thus efficiently sharing the computational resources with the other operations in the queue.
  94. API
  95. ---
  96. ### setRandomFallback(random)
  97. Sets the pseudo random number generator to use as a fallback if neither node's `crypto` module nor the Web Crypto
  98. API is available. Please note: It is highly important that the PRNG used is cryptographically secure and that it is
  99. seeded properly!
  100. | Parameter | Type | Description
  101. |-----------------|-----------------|---------------
  102. | random | *function(number):!Array.&lt;number&gt;* | Function taking the number of bytes to generate as its sole argument, returning the corresponding array of cryptographically secure random byte values.
  103. | **@see** | | http://nodejs.org/api/crypto.html
  104. | **@see** | | http://www.w3.org/TR/WebCryptoAPI/
  105. **Hint:** You might use [isaac.js](https://github.com/rubycon/isaac.js) as a CSPRNG but you still have to make sure to
  106. seed it properly.
  107. ### genSaltSync(rounds=, seed_length=)
  108. Synchronously generates a salt.
  109. | Parameter | Type | Description
  110. |-----------------|-----------------|---------------
  111. | rounds | *number* | Number of rounds to use, defaults to 10 if omitted
  112. | seed_length | *number* | Not supported.
  113. | **@returns** | *string* | Resulting salt
  114. | **@throws** | *Error* | If a random fallback is required but not set
  115. ### genSalt(rounds=, seed_length=, callback)
  116. Asynchronously generates a salt.
  117. | Parameter | Type | Description
  118. |-----------------|-----------------|---------------
  119. | rounds | *number &#124; function(Error, string=)* | Number of rounds to use, defaults to 10 if omitted
  120. | seed_length | *number &#124; function(Error, string=)* | Not supported.
  121. | callback | *function(Error, string=)* | Callback receiving the error, if any, and the resulting salt
  122. | **@returns** | *Promise* | If `callback` has been omitted
  123. | **@throws** | *Error* | If `callback` is present but not a function
  124. ### hashSync(s, salt=)
  125. Synchronously generates a hash for the given string.
  126. | Parameter | Type | Description
  127. |-----------------|-----------------|---------------
  128. | s | *string* | String to hash
  129. | salt | *number &#124; string* | Salt length to generate or salt to use, default to 10
  130. | **@returns** | *string* | Resulting hash
  131. ### hash(s, salt, callback, progressCallback=)
  132. Asynchronously generates a hash for the given string.
  133. | Parameter | Type | Description
  134. |-----------------|-----------------|---------------
  135. | s | *string* | String to hash
  136. | salt | *number &#124; string* | Salt length to generate or salt to use
  137. | callback | *function(Error, string=)* | Callback receiving the error, if any, and the resulting hash
  138. | progressCallback | *function(number)* | Callback successively called with the percentage of rounds completed (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.
  139. | **@returns** | *Promise* | If `callback` has been omitted
  140. | **@throws** | *Error* | If `callback` is present but not a function
  141. ### compareSync(s, hash)
  142. Synchronously tests a string against a hash.
  143. | Parameter | Type | Description
  144. |-----------------|-----------------|---------------
  145. | s | *string* | String to compare
  146. | hash | *string* | Hash to test against
  147. | **@returns** | *boolean* | true if matching, otherwise false
  148. | **@throws** | *Error* | If an argument is illegal
  149. ### compare(s, hash, callback, progressCallback=)
  150. Asynchronously compares the given data against the given hash.
  151. | Parameter | Type | Description
  152. |-----------------|-----------------|---------------
  153. | s | *string* | Data to compare
  154. | hash | *string* | Data to be compared to
  155. | callback | *function(Error, boolean)* | Callback receiving the error, if any, otherwise the result
  156. | progressCallback | *function(number)* | Callback successively called with the percentage of rounds completed (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.
  157. | **@returns** | *Promise* | If `callback` has been omitted
  158. | **@throws** | *Error* | If `callback` is present but not a function
  159. ### getRounds(hash)
  160. Gets the number of rounds used to encrypt the specified hash.
  161. | Parameter | Type | Description
  162. |-----------------|-----------------|---------------
  163. | hash | *string* | Hash to extract the used number of rounds from
  164. | **@returns** | *number* | Number of rounds used
  165. | **@throws** | *Error* | If `hash` is not a string
  166. ### getSalt(hash)
  167. Gets the salt portion from a hash. Does not validate the hash.
  168. | Parameter | Type | Description
  169. |-----------------|-----------------|---------------
  170. | hash | *string* | Hash to extract the salt from
  171. | **@returns** | *string* | Extracted salt part
  172. | **@throws** | *Error* | If `hash` is not a string or otherwise invalid
  173. Command line
  174. ------------
  175. `Usage: bcrypt <input> [salt]`
  176. If the input has spaces inside, simply surround it with quotes.
  177. Downloads
  178. ---------
  179. * [Distributions](https://github.com/dcodeIO/bcrypt.js/tree/master/dist)
  180. * [ZIP-Archive](https://github.com/dcodeIO/bcrypt.js/archive/master.zip)
  181. * [Tarball](https://github.com/dcodeIO/bcrypt.js/tarball/master)
  182. Credits
  183. -------
  184. Based on work started by Shane Girish at [bcrypt-nodejs](https://github.com/shaneGirish/bcrypt-nodejs) (MIT-licensed),
  185. which is itself based on [javascript-bcrypt](http://code.google.com/p/javascript-bcrypt/) (New BSD-licensed).
  186. License
  187. -------
  188. New-BSD / MIT ([see](https://github.com/dcodeIO/bcrypt.js/blob/master/LICENSE))