Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

Документация
Функция htChangeCryptoKey

htChangeCryptoKey - Сменить крипто-ключ закрытия данных

Назначение:

Крипто-ключ закрытия данных задается во время создания таблицы, однако может быть изменен по желанию пользователя. Функция предназначена для смены крипто-ключа закрытия данных. При выполнении операции журнал изменений таблицы переносится в постоянную часть. Индексы удаляются. Создаются копии перешифрованной постоянной части и ассоциатора (с расширением .$DT и .$AS), в которые переносится существующая информация. После успешного завершения этого процесса старая постоянная часть таблицы и ее ассоциатор удаляются. А построенные вновь - переименовываются, занимая их место. Таблица должна быть закрыта и не использоваться в сети другими абонентами, иначе функция завершится с ошибкой.

Прототип:

int HTAPI htChangeCryptoKey(
  char far 	*fpTableName,	/* Имя таблицы (можно без расширения) */
  char far 	*fpReadPswd,	/* Пароль доступа на чтение */
  char far 	*fpWritePswd,	/* Пароль доступа на запись */
  char far 	*fpOldCrypto,	/* Старый крипто-ключ закрытия данных */
  char far	*fpNewCrypto,	/* Новый крипто-ключ закрытия данных */
  int		nReindex	/* !=0 перепостроение индексов */
);

Параметры

fpTableName задает имя файла описания таблицы (с указанием полного или частичного пути), расширение задавать не обязательно
fpReadPswd задает строку, используемую в качестве пароля для доступа к таблице на чтение. Если пароля нет, можно задать NULL или пустую строку "".
fpWritePswd задает строку, используемую в качестве пароля для доступа к таблице на запись. Если пароля нет, можно задать NULL или пустую строку "".
fpOldCrypto задает строку, используемую в качестве старого ключа закрытия данных. Если пароля нет, можно задать NULL или пустую строку "".
fpNewCrypto задает строку, используемую в качестве нового пароля для закрытия данных. Значащими являются только первые 8 символов. Если пароль не нужен, можно задать NULL или пустую строку "".
nReindex Если параметр отличен от нуля, удаленные в процессе выполнения операция индексы будут построены вновь

Результат

0 успех
отрицательное число код ошибки

Пример.

Создать таблицу из трех полей с шифрованием данных и сменить ключ закрытия.

 ELEMENT asElem[] = {
	 { 10, 0, EC_FIELD, ET_CHAR, EK_NOTKEY, "Name" },
	 { 0, 0, EC_FIELD, ET_BYTE, EK_NOTKEY, "Sex" },
	 { 0, 0, EC_FIELD, ET_WORD, EK_NOTKEY, "Salary" }
 };
 THANDLE hNew;
 int rc;
 . . .
 htTableCreate( "staff", asElem, sizeof(asElem) / sizeof(ELEMENT),
			 "password", NULL, NULL, TAB_PRIVATE, &hNew );
 . . .
 htTableClose( hNew );
 . . .
 rc = htChangeCryptoKey( "staff", NULL, NULL, "password", "newpswd", 1 );
 if( rc < 0 )
 /* Обработка ошибок */