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;
   }


Ответить