DOBON.NETプログラミング道掲示板

ツリー一括表示

Nomalアイコン VB.NETのVBA化 /たんとおやじ (20/10/22(Thu) 22:09) #34567
Nomalアイコン Re[1]: VB.NETのVBA化 /魔界の仮面弁士 (20/10/23(Fri) 01:46) #34568
  └Nomalアイコン Re[2]: VB.NETのVBA化 /たんとおやじ (20/10/23(Fri) 06:57) #34569


親記事 / ▼[ 34568 ]
■34567 / 親階層)  VB.NETのVBA化
□投稿者/ たんとおやじ 一般人(1回)-(2020/10/22(Thu) 22:09:28)
  • アイコン環境/言語:[Windows10(x64),VBA, .NET Framework3.5] 
    分類:[その他] 

    いつも参考にさせていただき、ありがとうございます。
    「パスワードで文字列を暗号化する」のVB.NETのプログラムをExcelのVBAで書こうとしているのですが、

    Dim deriveBytes As New System.Security.Cryptography.Rfc2898DeriveBytes( password, salt)

    のところをVBAでどのように書いたらいいのか悩んでいます。

    Dim SSCObj As Object, deriveBytes As Object
    Set SSC_Obj = CreateObject("System.Security.Cryptography")
    deriveBytes = SSC_Obj.Rfc2898DeriveBytes(password, salt)

    のような感じで書きましたが、2行目でエラーがでます。アドバイスをいただけないでしょうか?

    よろしくお願いします。
違反を報告
[ □ Tree ] 返信 削除キー/

▲[ 34567 ] / ▼[ 34569 ]
■34568 / 1階層)  Re[1]: VB.NETのVBA化
□投稿者/ 魔界の仮面弁士 大御所(1306回)-(2020/10/23(Fri) 01:46:56)
  • アイコンNo34567に返信(たんとおやじさんの記事)
    > 「パスワードで文字列を暗号化する」のVB.NETのプログラムをExcelのVBAで書こうとしているのですが、

    VBA で暗号化処理を記述する場合の選択肢として思い当たるのは、CNG API、CryptAPI、CAPICOM あたりですね。
    https://docs.microsoft.com/ja-jp/windows/win32/seccng/cng-portal?WT.mc_id=DT-MVP-8907
    https://docs.microsoft.com/en-us/windows/win32/seccrypto/cryptography--cryptoapi--and-capicom?WT.mc_id=DT-MVP-8907
    https://docs.microsoft.com/ja-jp/windows/win32/seccrypto/capicom-reference?WT.mc_id=DT-MVP-8907



    > VBAでどのように書いたらいいのか悩んでいます。

    .NET の System.Security.Cryptography.Rfc2898DeriveBytes を挙げられていますが、
    これ自体は暗号化機能そのものではなく鍵導出関数ですよね。必要なのは PBKDF2 ですか?
    https://docs.microsoft.com/ja-jp/dotnet/api/system.security.cryptography.rfc2898derivebytes?WT.mc_id=DT-MVP-8907&view=netframework-4.8


    PBKDF2 アルゴリズムの Rfc2898DeriveBytes にしても
    PBKDF1 アルゴリズムの PasswordDeriveBytes にしても、
    VBA から呼び出せるようにはなっていません。
    (引数付きコンストラクタがサポートされない)


    不幸中の幸いで、PRF (pseudorandom function) については

    CreateObject("System.Security.Cryptography.HMACMD5") 'MD8 ハッシュ関数
    CreateObject("System.Security.Cryptography.HMACSHA1") 'SHA-1 ハッシュ関数
    CreateObject("System.Security.Cryptography.HMACSHA256") 'SHA-256 ハッシュ関数
    CreateObject("System.Security.Cryptography.HMACSHA384") 'SHA-384 ハッシュ関数
    CreateObject("System.Security.Cryptography.HMACSHA512") 'SHA-512 ハッシュ関数
    CreateObject("System.Security.Cryptography.HMACRIPEMD160") 'RIPEMD-160 ハッシュ関数

    として利用できますので、これを用いて PBKDF2 な Function を自作することはできるかもしれません。

    https://tools.ietf.org/html/rfc6070
    https://ja.wikipedia.org/wiki/PBKDF2
違反を報告
[ 親 34567 / □ Tree ] 返信 削除キー/

▲[ 34568 ] / 返信無し
■34569 / 2階層)  Re[2]: VB.NETのVBA化
□投稿者/ たんとおやじ 一般人(2回)-(2020/10/23(Fri) 06:57:12)
  • アイコンNo34568に返信(魔界の仮面弁士さんの記事)

    > VBA で暗号化処理を記述する場合の選択肢として思い当たるのは、CNG API、CryptAPI、CAPICOM あたりですね。


    ありがとうございます。見てみます。

    > これを用いて PBKDF2 な Function を自作することはできるかもしれません。

    自分にはかなりハードルが高そうですが、やってみます。
    挫折しそうになったら、またアドバイスをお願いします。
違反を報告
[ 親 34567 / □ Tree ] 返信 削除キー/


Mode/  Pass/


- Child Tree -