Рубрики
Без рубрики

Простое шифрование для скрытия паролей

Недавно мне нужно было пройти JSON между простым приложением Java Script и кусочком кода Python, используемым в Teamci … Теги с JavaScript, Python.

Недавно мне нужно было пройти JSON между простым приложением Java Script и кусочком Python Code, используемым в конфигурации сборки TeamCity. То, что JSON содержит пароли, а Teamcity, к сожалению, показывать его в интерфейсе.

Я попытался играть с командыми городскими паролем, но это довольно ограничено и не может быть передано между сборками в цепочке.

Я реализовал очень простое шифрование с обеих сторон (JS и Python), и я шифрую пароль в JSON. Таким образом, Team City показывает только зашифрованный пароль, у меня могут быть все пароли, которые мне нужны в моем JSON.

Я выбираю XOR шифр в качестве моего метода шифрования. Я не мог добавить какие-либо библиотеки Crypto в мой код Python, и XOR является Super легко в реализации на обоих языках. I BASE64 кодирует результат шифрования, чтобы сделать его более приятной строкой.

Вот моя реализация для JS

function encode(key, data) {
    return btoa(xorEncrypt(key, data));
}

function xorEncrypt(key, data) {
    return _.map(data, function(c, i) {
        return c.charCodeAt(0) ^ keyCharAt(key, i);
    });
}

function keyCharAt(key, i) {
    return key.charCodeAt( Math.floor(i % key.length) );
}

Я использую underscore.js здесь.

Вот моя реализация для Python

import base64
import math


def key_char_at(key, i):
    return key[math.floor(i % len(key))]

def decode(key, password):
    base64_bytes = password.encode('ascii')
    password_bytes = base64.b64decode(base64_bytes)
    decodedPassword = password_bytes.decode('ascii')
    password_array = decodedPassword.split(",")
    finalPassword = []
    for i in range(len(password_array)):
        finalPassword.append(chr(int(password_array[i]) ^ ord(key_char_at(key, i))))
    return ''.join(finalPassword)

Оригинал: “https://dev.to/pavel_polivka/simple-encryption-for-hiding-passwords-971”