03.11.2011 16:01, Ivan Shmakov пишет:
Иван Лох<l...@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;
}