nippy/taoensso.nippy.encryption.html

39 lines
7.4 KiB
HTML
Raw Normal View History

2016-02-25 11:50:00 +00:00
<!DOCTYPE html PUBLIC ""
"">
2020-07-25 07:39:40 +00:00
<html><head><meta charset="UTF-8" /><title>taoensso.nippy.encryption documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Nippy</span> <span class="project-version">2.15.1</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>taoensso</span></div></div></li><li class="depth-2"><a href="taoensso.nippy.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>nippy</span></div></a></li><li class="depth-3 branch"><a href="taoensso.nippy.benchmarks.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>benchmarks</span></div></a></li><li class="depth-3 branch"><a href="taoensso.nippy.compression.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>compression</span></div></a></li><li class="depth-3 branch"><a href="taoensso.nippy.crypto.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>crypto</span></div></a></li><li class="depth-3 branch current"><a href="taoensso.nippy.encryption.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>encryption</span></div></a></li><li class="depth-3 branch"><a href="taoensso.nippy.tools.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>tools</span></div></a></li><li class="depth-3"><a href="taoensso.nippy.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="taoensso.nippy.encryption.html#var-aes128-cbc-encryptor"><div class="inner"><span>aes128-cbc-encryptor</span></div></a></li><li class="depth-1"><a href="taoensso.nippy.encryption.html#var-aes128-gcm-encryptor"><div class="inner"><span>aes128-gcm-encryptor</span></div></a></li><li class="depth-1"><a href="taoensso.nippy.encryption.html#var-IEncryptor"><div class="inner"><span>IEncryptor</span></div></a></li><li class="depth-2 branch"><a href="taoensso.nippy.encryption.html#var-decrypt"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>decrypt</span></div></a></li><li class="depth-2 branch"><a href="taoensso.nippy.encryption.html#var-encrypt"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>encrypt</span></div></a></li><li class="depth-2"><a href="taoensso.nippy.encryption.html#var-header-id"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>header-id</span></div></a></li><li class="depth-1"><a href="taoensso.nippy.encryption.html#var-standard-header-ids"><div class="inner"><span>standard-header-ids</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">taoensso.nippy.encryption</h1><div class="doc"><pre class="plaintext">Simple no-nonsense crypto with reasonable defaults
2020-07-24 18:40:46 +00:00
</pre></div><div class="public anchor" id="var-aes128-cbc-encryptor"><h3>aes128-cbc-encryptor</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Default 128bit AES-CBC encryptor with many-round SHA-512 key-gen.
See also `aes-128-cbc-encryptor`.</pre></div><div class="src-link"><a href="https://github.com/ptaoussanis/nippy/blob/master/src/taoensso/nippy/encryption.clj#L108">view source</a></div></div><div class="public anchor" id="var-aes128-gcm-encryptor"><h3>aes128-gcm-encryptor</h3><div class="usage"></div><div class="doc"><pre class="plaintext">Default 128bit AES-GCM encryptor with many-round SHA-512 key-gen.
2013-06-13 09:49:09 +00:00
2016-02-25 11:50:00 +00:00
Password form [:salted "my-password"]
2013-06-13 09:49:09 +00:00
---------------------------------------
USE CASE: You want more than a small, finite number of passwords (e.g. each
2015-09-17 04:19:19 +00:00
item encrypted will use a unique user-provided password).
2013-06-13 09:49:09 +00:00
IMPLEMENTATION: Uses a relatively cheap key hash, but automatically salts
every key.
PROS: Each key is independent so would need to be attacked independently.
2016-02-25 11:50:00 +00:00
CONS: Key caching impossible, so there's an inherent trade-off between
2013-06-13 09:49:09 +00:00
encryption/decryption speed and the difficulty of attacking any
particular key.
Slower than `aes128-cached`, and easier to attack any particular key - but
keys are independent.
2016-02-25 11:50:00 +00:00
Password form [:cached "my-password"]
2013-06-13 09:49:09 +00:00
---------------------------------------
USE CASE: You want only a small, finite number of passwords (e.g. a limited
2016-02-25 11:50:00 +00:00
number of staff/admins, or you'll be using a single password to
2013-06-13 09:49:09 +00:00
encrypt many items).
IMPLEMENTATION: Uses a _very_ expensive (but cached) key hash, and no salt.
PROS: Great amortized encryption/decryption speed. Expensive key hash makes
attacking any particular key very difficult.
CONS: Using a small number of keys for many encrypted items means that if any
key _is_ somehow compromised, _all_ items encrypted with that key are
compromised.
Faster than `aes128-salted`, and harder to attack any particular key - but
2020-07-24 18:40:46 +00:00
increased danger if a key is somehow compromised.</pre></div><div class="src-link"><a href="https://github.com/ptaoussanis/nippy/blob/master/src/taoensso/nippy/encryption.clj#L67">view source</a></div></div><div class="public anchor" id="var-IEncryptor"><h3>IEncryptor</h3><h4 class="type">protocol</h4><div class="usage"></div><div class="doc"><pre class="plaintext"></pre></div><div class="members"><h4>members</h4><div class="inner"><div class="public anchor" id="var-decrypt"><h3>decrypt</h3><div class="usage"><code>(decrypt encryptor pwd ba)</code></div><div class="doc"><pre class="plaintext"></pre></div></div><div class="public anchor" id="var-encrypt"><h3>encrypt</h3><div class="usage"><code>(encrypt encryptor pwd ba)</code></div><div class="doc"><pre class="plaintext"></pre></div></div><div class="public anchor" id="var-header-id"><h3>header-id</h3><div class="usage"><code>(header-id encryptor)</code></div><div class="doc"><pre class="plaintext"></pre></div></div></div></div><div class="src-link"><a href="https://github.com/ptaoussanis/nippy/blob/master/src/taoensso/nippy/encryption.clj#L12">view source</a></div></div><div class="public anchor" id="var-standard-header-ids"><h3>standard-header-ids</h3><div class="usage"></div><div class="doc"><pre class="plaintext">These'll support :auto thaw
2016-06-10 04:00:39 +00:00
</pre></div><div class="src-link"><a href="https://github.com/ptaoussanis/nippy/blob/master/src/taoensso/nippy/encryption.clj#L7">view source</a></div></div></div></body></html>