summaryrefslogtreecommitdiffstats
path: root/nikola/rc4.py
diff options
context:
space:
mode:
Diffstat (limited to 'nikola/rc4.py')
-rw-r--r--nikola/rc4.py84
1 files changed, 0 insertions, 84 deletions
diff --git a/nikola/rc4.py b/nikola/rc4.py
deleted file mode 100644
index 93b660f..0000000
--- a/nikola/rc4.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-A RC4 encryption library (used for password-protected posts).
-
-Original RC4 code license:
-
- Copyright (C) 2012 Bo Zhu http://about.bozhu.me
-
- Permission is hereby granted, free of charge, to any person obtaining a
- copy of this software and associated documentation files (the "Software"),
- to deal in the Software without restriction, including without limitation
- the rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- DEALINGS IN THE SOFTWARE.
-"""
-
-import base64
-import sys
-
-
-def KSA(key):
- """Run Key Scheduling Algorithm."""
- keylength = len(key)
-
- S = list(range(256))
-
- j = 0
- for i in range(256):
- j = (j + S[i] + key[i % keylength]) % 256
- S[i], S[j] = S[j], S[i] # swap
-
- return S
-
-
-def PRGA(S):
- """Run Pseudo-Random Generation Algorithm."""
- i = 0
- j = 0
- while True:
- i = (i + 1) % 256
- j = (j + S[i]) % 256
- S[i], S[j] = S[j], S[i] # swap
-
- K = S[(S[i] + S[j]) % 256]
- yield K
-
-
-def RC4(key):
- """Generate RC4 keystream."""
- S = KSA(key)
- return PRGA(S)
-
-
-def rc4(key, string):
- """Encrypt things.
-
- >>> print(rc4("Key", "Plaintext"))
- u/MW6NlArwrT
- """
- string.encode('utf8')
- key.encode('utf8')
-
- def convert_key(s):
- return [ord(c) for c in s]
- key = convert_key(key)
- keystream = RC4(key)
- r = b''
- for c in string:
- if sys.version_info[0] == 3:
- r += bytes([ord(c) ^ next(keystream)])
- else:
- r += chr(ord(c) ^ next(keystream))
- return base64.b64encode(r).replace(b'\n', b'').decode('ascii')