AES通过VBA加密Microsoft Access字段

时间:2010-06-14 15:29:22

标签: ms-access vba aes access-vba

我需要创建一个Microsoft Access数据库,但在我的一个表中需要对单个字段进行高度加密。

由于AES需要密钥和初始化向量,我决定通过要求密码来访问数据库(作为密钥)来解决这个问题,并且表中的字段用于保存明文的SHA1哈希值加密字段。

有谁知道我在哪里可以找到与VBA兼容的代码来实际进行加密?

4 个答案:

答案 0 :(得分:2)

从头开始编写它的一些替代方法;

  • 您可以使用本机CryptoAPI(根API为CryptAquireContext)来实现
  • 您可以使用Microsoft的CAPICOM,它是CryptoAPI和supports AES的COM包装器。
  • 您可以使用第三方库,来自ebCrypt的图书馆非常优秀,紧凑且免费。

答案 1 :(得分:1)

这使用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

结束功能

答案 2 :(得分:0)

您可以使用SlowAES(一种AES的Javascript实现)包装为COM对象。

这个其他答案的更多信息。
How to encrypt in VBScript using AES?

这里的工作源代码:
http://cheeso.members.winisp.net/srcview.aspx?dir=AES-example

答案 3 :(得分:0)

MS知识库提供VB code for using the CryptoAPI。请注意,该示例说明了如何加密但不解释如何解密结果。但这很容易做到,因为解密API声明具有几乎相同的参数。但请注意,示例代码中的字符串到字节转换例程将在解密过程中错误地删除尾随空格,因此您必须更改该代码以解决此问题。