2010-06-14 139 views
2

我需要创建一个Microsoft Access数据库,但在我的一个表中需要对单个字段进行高度加密。由于AES需要密钥和初始化向量,因此我决定通过要求密码访问数据库(作为密钥)和表中的字段来保存SHA1哈希值加密字段的明文。AES通过VBA加密Microsoft Access字段

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

回答

2

一些替代品从头开始写它;

  • 您可以与本地的CryptoAPI(根API是CryptAquireContext
  • 你可以用它做微软的CAPICOM这是一个COM包装器的CryptoAPI和supports AES
  • 您可以使用第三方库,ebCrypt的库是优秀的,紧凑的和免费的。
0

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

+0

这是为Vb.Net。 MS Access使用VBA,它是VB6(即不是.Net)衍生物 – 2011-09-21 08:38:03

1

这使用RC4加密。加密和解密,你可以通过按钮点击或MS Access中想要的任何事件来调用它。不知道你是否可以使用它,但这是我的全部。 我是从这里: http://bytes.com/topic/access/insights/906671-rc4-encryption-algorithm-vba-vbscript

功能fRunRC4(sMessage,strKey)作为字符串 昏暗kLen,X,Y,I,J,临时 昏暗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 

端功能

+1

在提及的链接中还有一个VBA版本的AES – smirkingman 2015-08-03 10:01:36

0

我来这个问题很迟,但如果你愿意考虑第三方解决方案,NETLIB Encryptionizer平台允许你透明的几乎任何基于Windows的应用程序或加密数据服务,包括MS Access: http://www.netlib.com/file-encryption.asp