AES, шифрующий поле доступа Microsoft через VBA - PullRequest
2 голосов
/ 14 июня 2010

Мне нужно создать базу данных Microsoft Access, но в одной из моих таблиц необходимо, чтобы одно поле было строго зашифровано.

Поскольку AES требует и ключ, и вектор инициализации, я решил решить эту проблему, запросив пароль для доступа к базе данных (в качестве ключа) и поле в таблице для хранения хэша SHA1.открытого текста зашифрованного поля.

Кто-нибудь знает, где я могу найти VBA-совместимый код для фактического шифрования?

Ответы [ 4 ]

2 голосов
/ 15 июня 2010

Некоторые альтернативы написанию с нуля;

  • Вы можете сделать это с помощью собственного CryptoAPI (корневой API равен CryptAquireContext)
  • Вы можете использовать Microsoft CAPICOM , который является оболочкой COM для CryptoAPI, а поддерживает AES .
  • . Вы можете использовать стороннюю библиотеку, из ebCrypt отличную, компактнуюи бесплатно.
1 голос
/ 21 июня 2013

Используется шифрование RC4. Шифрует и дешифрует, и вы вызываете его с помощью нажатия кнопки или любого другого события в MS Access. Не уверен, что вы можете использовать это, но это все, что у меня есть. Я получил это отсюда: http://bytes.com/topic/access/insights/906671-rc4-encryption-algorithm-vba-vbscript

Функция fRunRC4 (sMessage, strKey) As String Dim kLen, x, y, i, j, temp Dim s (256), k (256)

'Init keystream
kLen = Len(strKey)
For i = 0 To 255
    s(i) = i
    k(i) = Asc(Mid(strKey, (i Mod kLen) + 1, 1))
Next

j = 0
For i = 0 To 255
    j = (j + k(i) + s(i)) Mod 255
    temp = s(i)
    s(i) = s(j)
    s(j) = temp
Next

'Drop n bytes from keystream
x = 0
y = 0
For i = 1 To 3072
    x = (x + 1) Mod 255
    y = (y + s(x)) Mod 255
    temp = s(x)
    s(x) = s(y)
    s(y) = temp
Next

'Encode/Decode
For i = 1 To Len(sMessage)
    x = (x + 1) Mod 255
    y = (y + s(x)) Mod 255
    temp = s(x)
    s(x) = s(y)
    s(y) = temp

    fRunRC4 = fRunRC4 & Chr(s((s(x) + s(y)) Mod 255) Xor Asc(Mid(sMessage, i, 1)))
Next

Функция завершения

0 голосов
/ 21 июня 2010

База знаний MS предоставляет VB-код для использования CryptoAPI . Обратите внимание, что пример объясняет, как зашифровать, но не как расшифровать результаты. Но это довольно легко сделать, так как объявление расшифровки API имеет почти те же аргументы. Однако обратите внимание, что подпрограмма преобразования строки в байт в коде примера неправильно удаляет конечные пробелы во время процесса расшифровки, поэтому вы должны изменить этот код, чтобы исправить это.

0 голосов
/ 18 июня 2010

Вы можете сделать это с помощью SlowAES, Javascript-реализации AES, обернутой в COM-объект.

больше информации в этом другом ответе.
Как зашифровать в VBScript с помощью AES?

рабочий исходный код здесь:
http://cheeso.members.winisp.net/srcview.aspx?dir=AES-example

...