| 4D v15 R2Generate digest | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v15 R2
 Generate digest 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Generate digest ( param ; algorithm ) -> 戻り値 | ||||||||
| 引数 | 型 | 説明 | ||||||
| param | BLOB, テキスト変数 |   | Digestキーを取得するBLOBやテキスト | |||||
| algorithm | 倍長整数 |   | キーの生成に使用するアルゴリズム 0= MD5、1 = SHA1、 2=4Dダイジェスト | |||||
| 戻り値 | テキスト |   | Digestキーの値 | |||||
Generate digestコマンドはBLOBやテキストのDigestキーを指定したアルゴリズムで生成して返します。
現在4Dでは2つのアルゴリズム、MD5 (Message Digest 5) と SHA-1 (Secure Hash 1) と 4D (内部アルゴリズム)が利用できます。これらのアルゴリズムは異なるハッシュ関数です:
注:  コマンドを空のテキストやBLOBに対して実行すると、計算結果として以下が返されます (エラーにはなりません): "d41d8cd98f00b204e9800998ecf8427e"  (MD5)
 "da39a3ee5e6b4b0d3255bfef95601890afd80709" (SHA-1)
param 引数にはテキストまたはBLOBフィールドや変数を渡します。Generate digestコマンドはダイジェストキーを文字列として返します。
algorithm 引数で使用するハッシュ関数を指定します。Digest Typeテーマの以下の定数を使用できます:
| 定数 | 型 | 値 | コメント | 
| 4D digest | 倍長整数 | 2 | 4D内部のアルゴリズムを使用 | 
| MD5 digest | 倍長整数 | 0 | MD5アルゴリズムを使用 | 
| SHA1 digest | 倍長整数 | 1 | SHA-1アルゴリズムを使用 | 
ダイジェストキーの計算が失敗した場合コマンドはエラーを生成し、空の文字列を返します。このエラーはON ERR CALLでインストールされるエラー処理メソッドで処理できます。
この例題ではMD5アルゴリズムを使用して2つのドキュメントを比較します:
 PLATFORM PROPERTIES($Platf;$Syst;$vlMachine)
  // 一番目のドキュメントを読み込みモードで開く
 $Same:=True
 $vhDocRef1:=Open document("";"*";Read Mode))
 If(OK=1) // ドキュメントが選択されたら
    DOCUMENT TO BLOB(Document;$FirstBlob) // ドキュメントをロード
    If(OK=1)
       If($Platf=Mac OS)
          DOCUMENT TO BLOB(Document;$FirstBlobRF;*)
  // Mac OSではリソースフォークもロード
          $MD5_1RF:=Generate digest($FirstBlobRF;MD5 digest)
       End if
 
  // 二番目のドキュメントを読み込みモードで開く
       $vhDocRef2:=Open document("";"*";Read Mode))
       If(OK=1)
          DOCUMENT TO BLOB(Document;$SecondBlob)
          If(OK=1)
             If($Platf=Mac OS)
                DOCUMENT TO BLOB(Document;$SecondBlobRF;*)
                $MD5_2RF:=Generate digest($SecondBlobRF;MD5 digest)
                If($MD5_1RF#$MD5_2RF) // ダイジェストを比較
                   $Same:=False
                End if
             End if
             $MD5_1:=Generate digest($FirstBlob;MD5 digest)
             $MD5_2:=Generate digest($SecondBlob;MD5 digest)
             If(($MD5_1#$MD5_2)|($Same=False))
                ALERT("異なるドキュメントです")
             End if
          End if
       End if
    End if
 End ifこの例題ではテキストのダイジェストキーを取得します:
 $key1:=Generate digest("The quick brown fox jumps over the lazy dog.";MD5 digest)
  // $key1は"e4d909c290d0fb1ca068ffaddf22cbd0"
 $key2:=Generate digest("The quick brown fox jumps over the lazy dog.";SHA1 digest)
  // $key2は"408d94384216f890ff7a0c3528e8bed1e0b01621"
	プロダクト: 4D
	テーマ: ツール
	番号: 
        1147
        
        
        
	
	初出: 4D v13
	変更: 4D v14
	
	
	
	ランゲージリファレンス ( 4D v15)
	
	ランゲージリファレンス ( 4D v15 R2)
	
	
	ランゲージリファレンス ( 4D v15.4)
	
	ランゲージリファレンス ( 4D v15.3)
 コメントを追加
コメントを追加