# Window: crypto property



The **`crypto`** read-only property of the [Window](https://developer.mozilla.org/en-US/docs/Web/API/Window) interface returns the [Crypto](https://developer.mozilla.org/en-US/docs/Web/API/Crypto) object for this window's scope. This object gives web pages access to certain cryptographic related services.

Although the property itself is read-only, all of its methods (and the methods of its
child object, [SubtleCrypto](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto)) are not read-only, and therefore vulnerable
to attack by [polyfill](https://developer.mozilla.org/en-US/docs/Glossary/polyfill).

Although `crypto` is available on all windows, the returned `Crypto` object only has one usable feature in insecure contexts: the [getRandomValues()](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues) method. In general, you should use this API only in secure contexts.

## Value

An instance of the [Crypto](https://developer.mozilla.org/en-US/docs/Web/API/Crypto) interface, providing access to general-purpose cryptography and a strong random-number generator.

## Examples

This example uses the `crypto` property to access the [getRandomValues()](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues) method.

### HTML

```html
<p id="myRandText">The random numbers are:</p>
<button type="button">Generate 10 random numbers</button>
```

### JavaScript

```js
function genRandomNumbers() {
  const array = new Uint32Array(10);
  globalThis.crypto.getRandomValues(array);

  const randText = document.getElementById("myRandText");
  randText.textContent = `The random numbers are: ${array.join(" ")}`;
}

document.querySelector("button").addEventListener("click", genRandomNumbers);
```

### Result

## Specifications

## Browser compatibility

## See also

- The [Crypto](https://developer.mozilla.org/en-US/docs/Web/API/Crypto) interface
- [WorkerGlobalScope.crypto](https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope/crypto)
