デジタル署名(デジタルしょめい)とは、書面上の手書き署名のセキュリティ特性を模倣するために用いられる公開鍵暗号技術の一種である。
公開鍵暗号方式とハッシュ関数を利用した「デジタル署名」のデータの流れを、VBAの関数構造としてイメージ化するためのサンプルコードです。
実際の暗号化アルゴリズムは実装していませんが、送信者と受信者の処理におけるデータのやり取りの流れを把握できます。
Sub 送信者の処理()
Dim 公開鍵 As String
Dim 秘密鍵 As String
Dim メッセージ As String
Dim ハッシュ値 As String
Dim 署名 As String
公開鍵 = 公開鍵生成()
秘密鍵 = 秘密鍵生成()
鍵公開 公開鍵
メッセージ = メッセージ作成()
ハッシュ値 = ハッシュ値算出(メッセージ)
署名 = ハッシュ値を秘密鍵で暗号化(ハッシュ値, 秘密鍵)
Call 署名を送信(署名)
Call メッセージを送信(メッセージ)
End Sub
Function 公開鍵生成() As String
End Function
Function 秘密鍵生成() As String
End Function
Function 鍵公開(ByVal 公開鍵 As String) As Boolean
End Function
Function メッセージ作成() As String
End Function
Function ハッシュ値算出(ByVal メッセージ As String) As String
End Function
Function ハッシュ値を秘密鍵で暗号化(ByVal ハッシュ値 As String, ByVal 秘密鍵 As String) As String
End Function
Function 署名を送信(ByVal 署名 As String) As Boolean
End Function
Function メッセージを送信(メッセージ) As String
End Function
Sub 受信者の処理()
Dim 送信者の公開鍵 As String
Dim 送信者の署名 As String
Dim 送信者のメッセージ As String
Dim 送信者のハッシュ値 As String
Dim 検算用のハッシュ値 As String
送信者の公開鍵 = 送信者の公開鍵入手()
送信者の署名 = 送信者の署名入手()
送信者のメッセージ = 送信者のメッセージ入手()
送信者のハッシュ値 = 復号化しハッシュ値の取得(送信者の署名, 送信者の公開鍵)
検算用のハッシュ値 = ハッシュ値算出(送信者のメッセージ)
Call ハッシュ値を比較(送信者のハッシュ値, 検算用のハッシュ値)
End Sub
Function 送信者の公開鍵入手() As String
End Function
Function 送信者の署名入手() As String
End Function
Function 送信者のメッセージ入手() As String
End Function
Function 復号化しハッシュ値の取得(ByVal 送信者の署名 As String, ByVal 送信者の公開鍵 As String) As String
End Function
Function ハッシュ値を比較(ByVal 送信者のハッシュ値 As String, ByVal 検算用のハッシュ値 As String)
End Function
この記事の更新履歴
この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。
2026年9月27日
- 変更リンク切れとなっていた古い外部参考サイトのURLを削除し、Wikipediaの公式情報へ整理しました。
- 変更引用タグ内に露出していたコードを通常のHTMLタグを用いたコードブロック形式に修正しました。
