質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

3回答

1681閲覧

accessについて、ハッシュ関数を用いてハッシュ化したい

syosinsya109

総合スコア41

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2022/10/11 04:28

編集2022/10/11 07:49

前提

accessのvbaについて質問します。
ある特定の文字列をハッシュ化しようとハッシュ関数を調べていたのですが、インポートなどが必要なようで思っているハッシュ関数が見つかりませんでした。
phpのようなハッシュ関数はaccessには存在しないのでしょうか。不要なインポートはできる限り避けたいです。

実現したいこと

文字列のハッシュ化

オートメーションエラー

該当のソースコード

vba

1Option Compare Database 2 3Private Sub コマンド0_Click() 4 Dim test As String 5 6   test = sha("a") 7  Debug.Print test 8End Sub 9 10 11Function sha(str As String) As String 12 Dim objSHA256 13 Set objSHA256 = CreateObject("System.Security.Cryptography.SHA256Managed") 14 15 Dim objUTF8 16 Set objUTF8 = CreateObject("System.Text.UTF8Encoding") 17 18 Dim bytes() As Byte 19 bytes = objUTF8.GetBytes_4(str) 20 21 Dim hash() As Byte 22 hash = objSHA256.ComputeHash_2((bytes)) 23 24 Dim i 25 Dim tmp 26 For i = 1 To UBound(hash) + 1 27 tmp = tmp & Right("0" & Hex(AscB(MidB(hash, i, 1))), 2) 28 Next i 29 30 sha = LCase(tmp) 31 32End Function

試したこと

以下のurlのソースコードを用いて動かしたら上記のようなエラーが出てきました。
https://techblog.recochoku.jp/5991

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2022/10/11 06:09

> インポートなどが必要 参照設定なら分かりますけど、「インポート」ってなんですか?
syosinsya109

2022/10/11 07:39

https://www.taru-net.jp/download/md5/ https://onl.tw/pu9uT2w インポートと言う言い方であっているかは分かりませんが、上記の2つのurlのように、外部からのデータを使いシステムを動かすことを自分ではインポートと呼んでいます。 上記は、外部のデータをダウンロードしたり、ライブラリをインストールしたりしますので、このようなやり方を使わないハッシュ関数みたいなお手軽なものを探しています。
sazi

2022/10/11 09:37

リンク先では、「ダウンロード」と言われているのはサンプルプログラムだし、参照しているライブラリは標準なので、インストールは不要なはずです。
kikukiku

2022/10/12 00:09

>メモリーが足りなく、又処理の多さの問題だと思いますので自分のパソコンの問題だと思います。 >自分は上記のやり方でできないと諦め、別の方法を探しています。 >https://www.sejuku.net/blog/75643 仮に本当にメモリ不足、PCのスペック不足だとした場合、 ハッシュ値を計算することそのものが重たい処理(メモリを多く消費する処理)であるため、 別の方法があったとしても、そのPCでは厳しいのではないかと思います。 PCのメモリを比較的消費しない方法となると、 ハッシュ値を作成できるWEBAPIを自身のPC以外に構築して そのWEBAPIをaccessから利用するということが考えられます。 これは外部サービスを使うことになるのでダメなんですかね。
guest

回答3

0

自己解決

自己解決しました。
ハッシュ化は自身のパソコンでは厳しいということで、暗号化テーブルを作り、そこに1文字を暗号化するためのデータを入れることにより自身のパターンで暗号化することができました。
回答してくださった方ありがとうございました。

投稿2022/10/14 03:23

syosinsya109

総合スコア41

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

phpのようなハッシュ関数はaccessには存在しないのでしょうか

phpの関数みたいなそのものは存在しませんので、以下の様なライブラリを組み込んだ関数を自作する必要があるでしょうね。

SHA256Managed クラス

※自作に関しては、ネットから情報を得て行われているようですので、そのまま進められれば良いのかと思います。

投稿2022/10/11 09:32

sazi

総合スコア25184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ググったりしてますでしょうか?
秒で出てきましたよ

https://techblog.recochoku.jp/5991

投稿2022/10/11 08:17

okakemetal

総合スコア261

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syosinsya109

2022/10/11 08:23

回答ありがとうございます。 質問でも述べていますが、そのサイトは既に検索済みで、エラーも公表しております。 しかし、エラー内容を調べた限りではメモリーに問題がありそうなのでそのサイトはあまり参考にしていません。 自分はハッシュ関数でお手軽に使える関数を探しています。
kikukiku

2022/10/11 09:17

accessを持っていないので、Excelで試してみましたが 掲載のURLの方法で、エラーなく動きますね。 検証の方法が悪いのだと思います。
syosinsya109

2022/10/11 09:42

メモリーが足りなく、又処理の多さの問題だと思いますので自分のパソコンの問題だと思います。 自分は上記のやり方でできないと諦め、別の方法を探しています。 https://www.sejuku.net/blog/75643
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問