AES通过VBA加密Microsoft访问字段

问题描述 投票:3回答:4

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

由于AES同时需要密钥和初始化向量,因此我决定通过要求密码来访问数据库(作为密钥)以及表中的字段来保存明文的SHA1哈希来解决此问题。加密的字段。

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

ms-access vba aes access-vba
4个回答
2
投票

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

  • 您可以使用本机CryptoAPI(根API为CryptAquireContext)做到这一点
  • 您可以使用Microsoft的CAPICOM,它是CryptoAPI和supports AES的COM包装。
  • 您可以使用第三方库,ebCrypt中的一个库非常好,紧凑,免费。

1
投票

下面是使用RC4加密的示例。

来源:http://bytes.com/topic/access/insights/906671-rc4-encryption-algorithm-vba-vbscript

Function 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


End Function

0
投票

您可以使用SlowAES(封装为COM对象的AES的Java脚本实现)来实现。

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.