[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Новый менеджер паролей



03.11.2011 16:01, Ivan Shmakov пишет:
Иван Лох <loh@1917.com> writes:
On Thu, Nov 03, 2011 at 12:17:49PM +0400, Sergey Stremidlo wrote:
 >> Кроме этого просмотрел pwm - упор на диалоговый режим, такое не
 >> надо.  Надо проще:

 >> passman -a -p pass -k key -v "value1 and value2" - добавить

 >> passman [-r] -p pass -k key - показать

 > Так делать очень плохо.  Например, потому, что этот пароль остается в
 > истории шелла, или потому, что он виден в многопользовательских
 > системах через ps.

	… Попробовал представить себе su(1) или sudo(8) с передачей
	пароля через командную строку…

я это полностью понимаю, это для того чтобы потом гуй прикрутить или пользовать из других прог как пароледержатель, через канал (popen()) передавать пароль,
...хотя вот вдумался - ведь пароль можно пускануть следующей подачей через канал то...
подразобрался с использованием AES, вот так пойдет?
а то не вкурил до конца накой два ключа :), но мне кажется что потянет

// in   - входная строка
// out  - выходная
// len  - размер строки
// pass - фраза для генерации ключей
// mode = AES_ENCRYPT | AES_DECRYPT
int crypt (char *in, char *out, int len, char *pass, int mode)
{
/*      Для шифрования AES требуется 128,192,256-битный ключ
            для этого возьмем инвертированные байты пароля и повторим
                его если он меньше 16 символов и получим 128 бит
*/
        AES_KEY aeskey;
        char key[16];
        char  iv[16];
        int i,passlen,passi;

        passlen = strlen(pass);
        for (i=0; i<16; i++)
        {
                key[i] = ~pass[i % passlen];
                 iv[i] = -pass[i % passlen];
        }

        AES_set_encrypt_key(key, 128, &aeskey);
        AES_cbc_encrypt(in, out, len, &aeskey, iv, mode);
        return 0;
}


Reply to: