しかしながら、上記特許文献1に開示される「情報送信方法及び携帯端末」によると、暗号化されているものをQRコードに逆変換した場合には、通常、暗号化されたデータそのものは文字情報として意味をなさないものであるため、携帯端末等の画面に表示される情報は意味不明なものであったり、画面表示の制御等に影響を与え得る制御コードに相当する情報であったりする。
このため、意味不明な情報である場合には、当該携帯端末等の使用者に不信感を与え得るという問題や、それが暗号化された情報であることを認識し得る使用者には対しては、解読を試みようとする不用意な動機を与える可能性があることから、セキュリティ上の問題を生じ得る。
また、制御コードに相当する情報である場合には、画面表示が乱れたり、その他のシステム上の問題にもつながり得るという問題がある。
本発明は、上述した課題を解決するためになされたもので、その目的とするところは、一般仕様の読取装置で読み取る利用者には秘匿データの存在を認識し得ない二次元コードの生成方法を提供することにある。本発明の他の目的は、コード語を配置すべきコード領域の空き部分に存在するデータコードをデコードし得る二次元コードの読取装置を提供することにある。
上記目的を達成するため、特許請求の範囲に記載の請求項1の二次元コードの生成方法では、開示するデータを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、前記コード領域の空き部分にデータを表さない埋め草コードを配置する二次元コードの生成方法であって、秘匿するデータを表すコード語としてコード化された秘匿データコードを前記埋め草コードの一部または全部に代えて、前記終端識別コードの後に配置することを技術的特徴とする。
特許請求の範囲に記載の請求項2の二次元コードの生成方法では、請求項1記載の二次元コードの生成方法において、前記終端識別コードと前記秘匿データコードとの間には、後続のデータコードが前記秘匿データコードであることを示す秘匿識別コードが配置されていることを技術的特徴とする。
特許請求の範囲に記載の請求項3の二次元コードの生成方法では、請求項1または2記載の二次元コードの生成方法において、前記秘匿データコードは、所定の暗号化方式により暗号化されていることを技術的特徴とする。
特許請求の範囲に記載の請求項4の二次元コードの生成方法では、請求項3記載の二次元コードの生成方法において、前記秘匿データコードには、前記暗号化されている前記秘匿データコードを復号できる鍵を特定可能な鍵特定情報が付加されていることを技術的特徴とする。
特許請求の範囲に記載の請求項5の二次元コードの生成方法では、請求項3記載の二次元コードの生成方法において、前記秘匿データコードには、前記暗号化されている前記秘匿データコードを復号できる鍵が付加されていることを技術的特徴とする。
特許請求の範囲に記載の請求項6の二次元コードの生成方法では、請求項3記載の二次元コードの生成方法において、前記秘匿データコードは、複数で、各秘匿データコードごとに異なった鍵で暗号化されており、前記各秘匿データコードには、前記暗号化されている前記秘匿データコードを復号できる鍵を特定可能な鍵特定情報がそれぞれに付加されていることを技術的特徴とする。
特許請求の範囲に記載の請求項7の二次元コードの生成方法では、請求項3記載の二次元コードの生成方法において、前記秘匿データコードは、複数で、各秘匿データコードごとに異なった鍵で暗号化されており、前記各秘匿データコードには、前記暗号化されている前記秘匿データコードを復号できる鍵がそれぞれに付加されていることを技術的特徴とする。
特許請求の範囲に記載の請求項8の二次元コードの生成方法では、請求項1〜7のいずれか一項に記載の二次元コードの生成方法において、前記開示するデータと前記秘匿するデータとが、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合、前記秘匿データコードには、前記データレコード中の位置関係を示す位置情報が付加されていることを技術的特徴とする。
特許請求の範囲に記載の請求項9の二次元コードの読取装置では、データを表すコード語としてコード化されたデータコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記データコードがなすコード列の終端を示す終端識別コードがこのコード列の最後に配置されるとともに、前記コード領域の空き部分にデータを表さない埋め草コードが配置される二次元コードを読取可能な二次元コードの読取装置であって、前記終端識別コードよりも前に配置される前記データコードである第1のデータコードをデコードする第1デコード手段と、前記終端識別コードの後に第2のデータコードが配置されているか否かを判断するデータコード判断手段と、前記データコード判断手段により前記第2のデータコードが配置されていると判断した場合、前記第2のデータコードをデコードする第2デコード手段と、を備えることを技術的特徴とする。
特許請求の範囲に記載の請求項10の二次元コードの読取装置では、請求項9記載の二次元コードの読取装置において、前記第2のデータコードと前記終端識別コードとの間に、前記第2のデータコードが秘匿するデータを表すコード語としてコード化された秘匿データコードであることを示す秘匿識別コードが配置されている場合における請求項9記載の二次元コードの読取装置であって、前記秘匿識別コードが配置されているか否かを判断する秘匿識別コード判断手段と、前記秘匿識別コード判断手段により前記秘匿識別コードが配置されていると判断した場合、前記第2のデータコードが秘匿データである旨の情報を出力する秘匿情報出力手段と、を備えることを技術的特徴とする。
特許請求の範囲に記載の請求項11の二次元コードの読取装置では、前記第2のデータコードが所定の暗号化方式により暗号化されている場合における請求項9または10記載の二次元コードの読取装置であって、前記暗号化された第2のデータコードを復号できる鍵を用いて前記暗号化された第2のデータコードを復号する復号手段、を備えることを技術的特徴とする。
特許請求の範囲に記載の請求項12の二次元コードの読取装置では、請求項11記載の二次元コードの読取装置において、前記復号できる鍵は、当該二次元コードの読取装置が備えていることを技術的特徴とする。
特許請求の範囲に記載の請求項13の二次元コードの読取装置では、前記復号できる鍵を特定可能な鍵特定情報が前記第2のデータコードに付加されている場合における請求項11記載の二次元コードの読取装置であって、前記鍵特定情報に基づいて、当該二次元コードの読取装置が有する鍵が前記復号できる鍵であるか否かを判断する鍵適合判断手段を備え、前記鍵適合判断手段により当該二次元コードの読取装置が有する鍵が前記復号できる鍵であると判断した場合にはこの鍵を用いて前記復号手段により前記第2のデータコードを復号し、前記鍵適合判断手段により当該二次元コードの読取装置が有する鍵が前記復号できる鍵でないと判断した場合には前記第2のデータコードを復号しない、ことを技術的特徴とする。
特許請求の範囲に記載の請求項14の二次元コードの読取装置では、前記第2のデータコードが複数あり、各第2のデータコードごとに異なった鍵で暗号化されており、前記第2のデータコードには、前記暗号化されている前記第2のデータコードを復号できる鍵特定情報がそれぞれに付加されている場合における請求項13記載の二次元コードの読取装置であって、前記鍵適合判断手段は、前記各第2のデータコードについて当該二次元コードの読取装置が有する鍵が前記復号できる鍵であるか否かを判断することを特徴とする。
特許請求の範囲に記載の請求項15の二次元コードの読取装置では、前記復号できる鍵が前記第2のデータコードに付加されている場合における請求項11記載の二次元コードの読取装置であって、前記復号できる鍵を前記第2のデータコードから分離する鍵分離手段を備え、前記鍵分離手段により分離した鍵を用いて前記復号手段により前記第2のデータコードを復号することを特徴とする。
特許請求の範囲に記載の請求項16の二次元コードの読取装置では、前記第2のデータコードが複数あり、各第2のデータコードごとに異なった鍵で暗号化されており、前記第2のデータコードには、前記暗号化されている前記第2のデータコードを復号できる鍵がそれぞれに付加されている場合における請求項15記載の二次元コードの読取装置であって、前記鍵分離手段は、前記各第2のデータコードから前記復号できる鍵を分離することを技術的特徴とする。
特許請求の範囲に記載の請求項17の二次元コードの読取装置では、コード化される前のデータレコード中の位置関係を示す位置情報が前記第2のデータコードに付加されている場合における請求項9〜16のいずれか一項に記載の二次元コードの読取装置であって、前記第2のデータコードから前記位置情報を分離する位置情報分離手段と、前記第2デコード手段によりデコードされた第2のデータを前記位置情報分離手段により分離された位置情報に基づいて前記データレコード中に配置するデータ配置手段と、を備えることを技術的特徴とする。
上記目的を達成するため、特許請求の範囲に記載の請求項18の二次元コードの生成方法では、開示するデータを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置、または前記開示データコードがなすコード列の終端位置を特定可能な終端識別情報をこのコード列の所定の位置に配置する二次元コードの生成方法であって、秘匿するデータを表すコード語としてコード化された秘匿データコードを、前記終端識別コードの後、または前記終端識別情報により特定される前記終端位置の後、に配置することを技術的特徴とする。
特許請求の範囲に記載の請求項19の二次元コードの生成方法では、請求項18記載の二次元コードの生成方法において、前記終端識別コードと前記秘匿データコードとの間には、後続のデータコードが前記秘匿データコードであることを示す秘匿識別コードが配置されていることを技術的特徴とする。
特許請求の範囲に記載の請求項20の二次元コードの生成方法では、請求項18または19記載の二次元コードの生成方法において、前記秘匿データコードは、所定の暗号化方式により暗号化されていることを技術的特徴とする。
特許請求の範囲に記載の請求項21の二次元コードの生成方法では、請求項20記載の二次元コードの生成方法において、前記秘匿データコードには、前記暗号化されている前記秘匿データコードを復号できる鍵を特定可能な鍵特定情報が付加されていることを技術的特徴とする。
特許請求の範囲に記載の請求項22の二次元コードの生成方法では、請求項20記載の二次元コードの生成方法において、前記秘匿データコードには、前記暗号化されている前記秘匿データコードを復号できる鍵が付加されていることを技術的特徴とする。
特許請求の範囲に記載の請求項23の二次元コードの生成方法では、請求項20記載の二次元コードの生成方法において、前記秘匿データコードは、複数で、各秘匿データコードごとに異なった鍵で暗号化されており、前記各秘匿データコードには、前記暗号化されている前記秘匿データコードを復号できる鍵を特定可能な鍵特定情報がそれぞれに付加されていることを技術的特徴とする。
特許請求の範囲に記載の請求項24の二次元コードの生成方法では、請求項20記載の二次元コードの生成方法において、前記秘匿データコードは、複数で、各秘匿データコードごとに異なった鍵で暗号化されており、前記各秘匿データコードには、前記暗号化されている前記秘匿データコードを復号できる鍵がそれぞれに付加されていることを技術的特徴とする。
特許請求の範囲に記載の請求項25の二次元コードの生成方法では、請求項18〜24のいずれか一項に記載の二次元コードの生成方法において、前記開示するデータと前記秘匿するデータとが、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合、前記秘匿データコードには、前記データレコード中の位置関係を示す位置情報が付加されていることを技術的特徴とする。
特許請求の範囲に記載の請求項26の二次元コードの読取装置では、データを表すコード語としてコード化されたデータコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置、または前記データコードがなすコード列の終端位置を特定可能な終端識別情報をこのコード列の所定の位置に配置される二次元コードを読取可能な二次元コードの読取装置であって、前記終端識別コードよりも前に配置される前記データコード、または前記終端識別情報により特定される前記終端位置よりも前に配置される前記データコード、である第1のデータコードをデコードする第1デコード手段と、前記終端識別コードの後または前記終端位置よりも後に第2のデータコードが配置されているか否かを判断するデータコード判断手段と、前記データコード判断手段により前記第2のデータコードが配置されていると判断した場合、前記第2のデータコードをデコードする第2デコード手段と、を備えることを技術的特徴とする。
特許請求の範囲に記載の請求項27の二次元コードの読取装置では、前記第2のデータコードと前記終端識別コードとの間に、前記第2のデータコードが秘匿するデータを表すコード語としてコード化された秘匿データコードであることを示す秘匿識別コードが配置されている場合における請求項26記載の二次元コードの読取装置であって、前記秘匿識別コードが配置されているか否かを判断する秘匿識別コード判断手段と、前記秘匿識別コード判断手段により前記秘匿識別コードが配置されていると判断した場合、前記第2のデータコードが秘匿データである旨の情報を出力する秘匿情報出力手段と、を備えることを技術的特徴とする。
特許請求の範囲に記載の請求項28の二次元コードの読取装置では、前記第2のデータコードが所定の暗号化方式により暗号化されている場合における請求項26または27記載の二次元コードの読取装置であって、前記暗号化された第2のデータコードを復号できる鍵を用いて前記暗号化された第2のデータコードを復号する復号手段、を備えることを技術的特徴とする。
特許請求の範囲に記載の請求項29の二次元コードの読取装置では、請求項28記載の二次元コードの読取装置において、前記復号できる鍵は、当該二次元コードの読取装置が備えていることを技術的特徴とする。
特許請求の範囲に記載の請求項30の二次元コードの読取装置では、前記復号できる鍵を特定可能な鍵特定情報が前記第2のデータコードに付加されている場合における請求項28記載の二次元コードの読取装置であって、前記鍵特定情報に基づいて、当該二次元コードの読取装置が有する鍵が前記復号できる鍵であるか否かを判断する鍵適合判断手段を備え、前記鍵適合判断手段により当該二次元コードの読取装置が有する鍵が前記復号できる鍵であると判断した場合にはこの鍵を用いて前記復号手段により前記第2のデータコードを復号し、前記鍵適合判断手段により当該二次元コードの読取装置が有する鍵が前記復号できる鍵でないと判断した場合には前記第2のデータコードを復号しない、ことを技術的特徴とする。
特許請求の範囲に記載の請求項31の二次元コードの読取装置では、前記第2のデータコードが複数あり、各第2のデータコードごとに異なった鍵で暗号化されており、前記第2のデータコードには、前記暗号化されている前記第2のデータコードを復号できる鍵特定情報がそれぞれに付加されている場合における請求項30記載の二次元コードの読取装置であって、前記鍵適合判断手段は、前記各第2のデータコードについて当該二次元コードの読取装置が有する鍵が前記復号できる鍵であるか否かを判断することを技術的特徴とする。
特許請求の範囲に記載の請求項32の二次元コードの読取装置では、前記復号できる鍵が前記第2のデータコードに付加されている場合における請求項28記載の二次元コードの読取装置であって、前記復号できる鍵を前記第2のデータコードから分離する鍵分離手段を備え、前記鍵分離手段により分離した鍵を用いて前記復号手段により前記第2のデータコードを復号することを技術的特徴とする。
特許請求の範囲に記載の請求項33の二次元コードの読取装置では、前記第2のデータコードが複数あり、各第2のデータコードごとに異なった鍵で暗号化されており、前記第2のデータコードには、前記暗号化されている前記第2のデータコードを復号できる鍵がそれぞれに付加されている場合における請求項32記載の二次元コードの読取装置であって、前記鍵分離手段は、前記各第2のデータコードから前記復号できる鍵を分離することを技術的特徴とする。
特許請求の範囲に記載の請求項34の二次元コードの読取装置では、コード化される前のデータレコード中の位置関係を示す位置情報が前記第2のデータコードに付加されている場合における請求項26〜33のいずれか一項に記載の二次元コードの読取装置であって、前記第2のデータコードから前記位置情報を分離する位置情報分離手段と、前記第2デコード手段によりデコードされた第2のデータを前記位置情報分離手段により分離された位置情報に基づいて前記データレコード中に配置するデータ配置手段と、を備えることを技術的特徴とする。
上記目的を達成するため、特許請求の範囲に記載の請求項35の二次元コードの生成方法では、開示するデータを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置、または前記開示データコードがなすコード列の終端位置を特定可能な終端識別情報をこのコード列の所定の位置に配置する二次元コードの生成方法であって、
秘匿するデータを表すコード語としてコード化された秘匿データコードに所定の加工を施して、前記終端識別コードの後、または前記終端識別情報により特定される前記終端位置の後、に配置することを技術的特徴とする。
特許請求の範囲に記載の請求項36の二次元コードの生成方法では、請求項35記載の二次元コードの生成方法において、前記終端識別コードと前記秘匿データコードとの間には、後続のデータコードが前記秘匿データコードであることを示す秘匿識別コードが配置されていることを技術的特徴とする。
特許請求の範囲に記載の請求項37の二次元コードの生成方法では、請求項35または36記載の二次元コードの生成方法において、前記所定の加工は、前記秘匿データを構成するビットの並替え、前記秘匿データを構成するビットの分散配置、前記秘匿データを構成するビットにより特定されるデータ値の変換、のいずれかであることを技術的特徴とする。
特許請求の範囲に記載の請求項38の二次元コードの生成方法では、請求項37記載の二次元コードの生成方法において、前記ビットの並替えまたは分散配置は、前記開示データコードの内容に基づいて行われることを技術的特徴とする。
特許請求の範囲に記載の請求項39の二次元コードの生成方法では、請求項37記載の二次元コードの生成方法において、前記ビットの並替えまたは分散配置は、当該二次元コードに付随する固有情報に基づいて行われることを技術的特徴とする。
特許請求の範囲に記載の請求項40の二次元コードの生成方法では、請求項37記載の二次元コードの生成方法において、前記データ値の変換は、所定の変換テーブルまたは所定の変換式に基づいて行われることを技術的特徴とする。
特許請求の範囲に記載の請求項41の二次元コードの生成方法では、請求項35〜40のいずれか一項に記載の二次元コードの生成方法において、前記開示するデータと前記秘匿するデータとが、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合、前記秘匿データコードには、前記データレコード中の位置関係を示す位置情報が付加されていることを技術的特徴とする。
上記目的を達成するため、特許請求の範囲に記載の請求項42の二次元コードの読取装置において、データを表すコード語としてコード化されたデータコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置、または前記データコードがなすコード列の終端位置を特定可能な終端識別情報をこのコード列の所定の位置に配置される二次元コードを読取可能な二次元コードの読取装置であって、前記終端識別コードよりも前に配置される前記データコード、または前記終端識別情報により特定される前記終端位置よりも前に配置される前記データコード、である第1のデータコードをデコードする第1デコード手段と、前記終端識別コードの後または前記終端位置よりも後に第2のデータコードが配置されているか否かを判断するデータコード判断手段と、前記データコード判断手段により前記第2のデータコードが配置されていると判断した場合、所定の抽出処理により前記第2のデータコードを抽出する抽出手段と、前記抽出手段により抽出された前記第2のデータコードをデコードする第2デコード手段と、を備えることを特徴とする。
特許請求の範囲に記載の請求項43の二次元コードの読取装置では、前記第2のデータコードと前記終端識別コードとの間に、前記第2のデータコードが秘匿するデータを表すコード語としてコード化された秘匿データコードであることを示す秘匿識別コードが配置されている場合における請求項42記載の二次元コードの読取装置であって、前記秘匿識別コードが配置されているか否かを判断する秘匿識別コード判断手段と、前記秘匿識別コード判断手段により前記秘匿識別コードが配置されていると判断した場合、前記第2のデータコードが秘匿データである旨の情報を出力する秘匿情報出力手段と、を備えることを技術的特徴とする。
特許請求の範囲に記載の請求項44の二次元コードの読取装置では、前記第2のデータコードが、当該第2のデータコードを構成するビットの並替えまたはビットの分散配置により加工されていた場合における請求項42または43記載の二次元コードの読取装置であって、前記所定の抽出処理は、前記第2のデータコードを構成するビットの並替えまたはビットの分散配置を元に戻すことが可能な前記第1のデータコードの内容に基づいて、当該第2のデータコードを抽出することを技術的特徴とする。
特許請求の範囲に記載の請求項45の二次元コードの読取装置では、前記第2のデータコードが、当該第2のデータコードを構成するビットの並替えまたはビットの分散配置により加工されていた場合における請求項42または43記載の二次元コードの読取装置であって、前記所定の抽出処理は、当該二次元コードに付随する固有情報で、前記第2のデータコードを構成するビットの並替えまたはビットの分散配置を元に戻すことが可能な情報に基づいて、当該第2のデータコードを抽出することを技術的特徴とする。
特許請求の範囲に記載の請求項46の二次元コードの読取装置では、前記第2のデータコードが、当該第2のデータコードを構成するビットにより特定されるデータ値の変換により加工されていた場合における請求項42または43記載の二次元コードの読取装置であって、前記所定の抽出処理は、前記第2のデータコードを構成するビットにより特定されるデータ値を逆変換することが可能な所定の変換テーブルまたは所定の変換式に基づいて、当該第2のデータコードを抽出することを技術的特徴とする。
特許請求の範囲に記載の請求項47の二次元コードの読取装置では、請求項42〜46のいずれか一項に記載の二次元コードの読取装置において、前記第1デコード手段による前記第1のデータコードのデコード機能と、前記第2デコード手段による前記第2のデータコードのデコード機能と、のいずれか一方を当該二次元コードの読取装置の使用者に選択させ得るデコード機能選択手段を備えることを技術的特徴とする。
請求項1の発明では、秘匿するデータを表すコード語としてコード化された秘匿データコードを埋め草コードの一部または全部に代えて、終端識別コードの後に配置する。一般に、二次元コードの読取装置は、二次元コードのデコード処理において、コード領域に配置されたデータコードの先頭からコード列の終端を示す終端識別コードまでを読み取ってデコードするアルゴリズム仕様に設定されているため、通常、終端識別コードの後に配置される埋め草コード等は読み取りの対象にならない。このため、終端識別コードの後に、埋め草コードの一部または全部に代えて配置されるデータコードは、たとえそれが読み取り可能なコード語であっても、一般仕様の読取装置ではデコードすることはないので、終端識別コードの後に秘匿したいデータコード(秘匿データコード)を配置することにより、終端識別コードの前に配置されたデータコードは読み取ることはできても、当該秘匿データコードは読み取ることはできない。したがって、このような秘匿データコードが含まれる二次元コードを一般仕様の読取装置で読み取っても、当該秘匿データコードによって秘匿しようとするデータの存在はわからないので、一般仕様の読取装置の利用者には秘匿データの存在を認識させないようにすることができる。
請求項2の発明では、終端識別コードと秘匿データコードとの間には、後続のデータコードが秘匿データコードであることを示す秘匿識別コードが配置されている。これにより、終端識別コードの後に配置されたデータコードは、秘匿データコードであることがわかるので、例えば、読取対象外のデータやデータ化けしたデータ等を秘匿データコードと誤認して読み取ることを防ぎ、またこれに起因する誤動作の発生を防止することもできる。
請求項3の発明では、秘匿データコードは、所定の暗号化方式により暗号化されている。これにより、たとえ終端識別コードの後に埋め草コードの一部または全部に代えて、秘匿データコードが配置されていることが利用者等に知られても、当該秘匿データコードは所定の暗号化方式により暗号化されているので、セキュリティの強度を高めることができる。
請求項4の発明では、秘匿データコードには、暗号化されている秘匿データコードを復号できる鍵を特定可能な鍵特定情報が付加されている。これにより、当該二次元コードの読取装置やシステムにおいては、秘匿データコードを復号できる鍵を容易に特定することができたり、復号できる鍵であるか否かを判断することができる。
請求項5の発明では、秘匿データコードには、暗号化されている秘匿データコードを復号できる鍵が付加されている。これにより、当該二次元コードの読取装置やシステムにおいては、秘匿データコードを復号できる鍵を持っていなくても、当該秘匿データコードを復号して元の平文に戻すことができる。
請求項6の発明では、秘匿データコードは、複数で、各秘匿データコードごとに異なった鍵で暗号化されており、各秘匿データコードには、暗号化されている秘匿データコードを復号できる鍵を特定可能な鍵特定情報がそれぞれに付加されている。これにより、当該二次元コードの読取装置やシステムにおいては、各秘匿データコードごとに復号できる鍵を容易に特定することができたり、復号できる鍵であるか否かを判断することができる。
請求項7の発明では、秘匿データコードは、複数で、各秘匿データコードごとに異なった鍵で暗号化されており、各秘匿データコードには、暗号化されている秘匿データコードを復号できる鍵がそれぞれに付加されている。これにより、当該二次元コードの読取装置やシステムにおいては、各秘匿データコードごとに復号できる鍵を持っていなくても、当該秘匿データコードを復号して元の平文に戻すことができる。
請求項8の発明では、開示するデータと秘匿するデータとが、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合、秘匿データコードには、データレコード中の位置関係を示す位置情報が付加されている。これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合であっても、デコードしたデータを、この位置情報に基づいてコード化前の位置関係に配置することができる。
請求項9の発明では、データコード判断手段により、終端識別コードの後に第2のデータコードが配置されているか否かを判断し、第2のデータコードが配置されていると判断した場合には、第1デコード手段により第1のデータコードをデコードするとともに、第2デコード手段により第2のデータコードをデコードする。これにより、本来、埋め草コードしか配置されない終端識別コードの後のコード領域(コード領域の空き部分)に、第2のデータコードが配置されていても、この第2のデータコードをデコードすることができる。したがって、コード語を配置すべきコード領域の空き部分に存在するデータコードをデコードすることができる。
請求項10の発明では、第2のデータコードと終端識別コードとの間に、第2のデータコードが秘匿するデータを表すコード語としてコード化された秘匿データコードであることを示す秘匿識別コードが配置されている場合においては、秘匿識別コード判断手段により、秘匿識別コードが配置されているか否かを判断し、秘匿識別コードが配置されていると判断した場合、秘匿情報出力手段により、第2のデータコードが秘匿データである旨の情報を出力する。これにより、この情報を受けた他の装置、処理またはシステムでは、第2のデータコードが秘匿データである旨を把握することができる。また、本来、埋め草コードしか配置されない終端識別コードの後のコード領域(コード領域の空き部分)に、埋め草コード以外のもので第2のデータコードではないもの(例えばデータ化けにより埋め草コードに該当しなくなったもの)が配置されている場合には、秘匿データである旨の情報が出力されないので、第2のデータコード以外のものをデコードすることで生じ得る誤動作を防止することができる。
請求項11の発明では、第2のデータコードが所定の暗号化方式により暗号化されている場合においては、復号手段により、暗号化された第2のデータコードを復号できる鍵を用いて暗号化された第2のデータコードを復号する。これにより、第2デコード手段によりデコードされた第2のデータコードの内容が所定の暗号化方式により暗号化されている場合でも、その内容を復号して元の平文に戻すことができる。
請求項12の発明では、復号できる鍵は、当該二次元コードの読取装置が備えている。これにより、当該二次元コード自体には復号できる鍵を含めたり、他から取得する必要がないので、復号に関する情報処理を簡素化することができる。
請求項13の発明では、鍵適合判断手段により、鍵特定情報に基づいて、当該二次元コードの読取装置が有する鍵が復号できる鍵であるか否かを判断し、当該読取装置が有する鍵が復号できる鍵であると判断した場合にはこの鍵を用いて復号手段により第2のデータコードを復号し、当該読取装置が有する鍵が復号できる鍵でないと判断した場合には第2のデータコードを復号しない。これにより、終端識別コードよりも前に配置される第1のデータコードは第1デコード手段によりデコードされても、当該読取装置が有する鍵が復号できる鍵でない場合には、終端識別コードよりも後に配置される第2のデータコードはデコードも復号されないので、不要な復号処理を抑制することができる。
請求項14の発明では、第2のデータコードが複数あり、各第2のデータコードごとに異なった鍵で暗号化されており、第2のデータコードには、暗号化されている第2のデータコードを復号できる鍵特定情報がそれぞれに付加されている場合において、鍵適合判断手段は、各第2のデータコードについて当該二次元コードの読取装置が有する鍵が復号できる鍵であるか否かを判断する。これにより、各第2のデータコードごとに異なった鍵で暗号化されている場合であっても、各第2のデータコードについて、請求項13の発明と同様に、終端識別コードよりも前に配置される第1のデータコードは第1デコード手段によりデコードされても、当該読取装置が有する鍵が復号できる鍵でない場合には、終端識別コードよりも後に配置される第2のデータコードは復号されないので、不要な復号処理を抑制することができる。
請求項15の発明では、復号できる鍵が第2のデータコードに付加されている場合において、鍵分離手段により分離した鍵を用いて復号手段により第2のデータコードを復号する。これにより、秘匿データコードを復号できる鍵を当該読取装置が持っていなくても、当該秘匿データコードを復号して元の平文に戻すことができる。
請求項16の発明では、第2のデータコードが複数あり、各第2のデータコードごとに異なった鍵で暗号化されている場合であっても、各第2のデータコードについて、請求項15の発明と同様に、秘匿データコードを復号できる鍵を当該読取装置が持っていなくても、当該秘匿データコードを復号して元の平文に戻すことができる。
請求項17の発明では、コード化される前のデータレコード中の位置関係を示す位置情報が第2のデータコードに付加されている場合において、位置情報分離手段により第2のデータコードから位置情報を分離し、この分離された位置情報に基づいて第2のデータをデータ配置手段によりデータレコード中に配置する。これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合であっても、デコードしたデータを、この位置情報に基づいてコード化前の位置関係に配置することができる。
請求項18の発明では、秘匿するデータを表すコード語としてコード化された秘匿データコードを終端識別コードの後、または終端識別情報により特定される終端位置の後、に配置する。一般に、二次元コードの読取装置は、二次元コードのデコード処理において、コード領域に配置されたデータコードの先頭からコード列の終端を示す終端識別コードまでを読み取ってデコードするアルゴリズム仕様に設定されているため、通常、終端識別コードの後に配置されるデータコードは読み取りの対象にならない。このため、終端識別コードの後に配置されるコード等は、たとえそれが読み取り可能なコード語であっても、一般仕様の読取装置ではデコードすることはないので、終端識別コードの後、または終端識別情報により特定される終端位置の後、に秘匿したいデータコード(秘匿データコード)を配置することにより、終端識別コードの前に配置されたデータコードは読み取ることはできても、当該秘匿データコードは読み取ることはできない。したがって、このような秘匿データコードが含まれる二次元コードを一般仕様の読取装置で読み取っても、当該秘匿データコードによって秘匿しようとするデータの存在はわからないので、一般仕様の読取装置の利用者には秘匿データの存在を認識させないようにすることができる。
請求項19の発明では、終端識別コードと秘匿データコードとの間には、後続のデータコードが秘匿データコードであることを示す秘匿識別コードが配置されている。これにより、終端識別コードの後に配置されたデータコードは、秘匿データコードであることがわかるので、例えば、読取対象外のデータやデータ化けしたデータ等を秘匿データコードと誤認して読み取ることを防ぎ、またこれに起因する誤動作の発生を防止することもできる。
請求項20の発明では、秘匿データコードは、所定の暗号化方式により暗号化されている。これにより、たとえ終端識別コードの後に秘匿データコードが配置されていることが利用者等に知られても、当該秘匿データコードは所定の暗号化方式により暗号化されているので、セキュリティの強度を高めることができる。
請求項21の発明では、秘匿データコードには、暗号化されている秘匿データコードを復号できる鍵を特定可能な鍵特定情報が付加されている。これにより、当該二次元コードの読取装置やシステムにおいては、秘匿データコードを復号できる鍵を容易に特定することができたり、復号できる鍵であるか否かを判断することができる。
請求項22の発明では、秘匿データコードには、暗号化されている秘匿データコードを復号できる鍵が付加されている。これにより、当該二次元コードの読取装置やシステムにおいては、秘匿データコードを復号できる鍵を持っていなくても、当該秘匿データコードを復号して元の平文に戻すことができる。
請求項23の発明では、秘匿データコードは、複数で、各秘匿データコードごとに異なった鍵で暗号化されており、各秘匿データコードには、暗号化されている秘匿データコードを復号できる鍵を特定可能な鍵特定情報がそれぞれに付加されている。これにより、当該二次元コードの読取装置やシステムにおいては、各秘匿データコードごとに復号できる鍵を容易に特定することができたり、復号できる鍵であるか否かを判断することができる。
請求項24の発明では、秘匿データコードは、複数で、各秘匿データコードごとに異なった鍵で暗号化されており、各秘匿データコードには、暗号化されている秘匿データコードを復号できる鍵がそれぞれに付加されている。これにより、当該二次元コードの読取装置やシステムにおいては、各秘匿データコードごとに復号できる鍵を持っていなくても、当該秘匿データコードを復号して元の平文に戻すことができる。
請求項25の発明では、開示するデータと秘匿するデータとが、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合、秘匿データコードには、データレコード中の位置関係を示す位置情報が付加されている。これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合であっても、デコードしたデータを、この位置情報に基づいてコード化前の位置関係に配置することができる。
請求項26の発明では、データコード判断手段により、終端識別コードの後または終端位置よりも後に第2のデータコードが配置されているか否かを判断し、第2のデータコードが配置されていると判断した場合には、第1デコード手段により第1のデータコードをデコードするとともに、第2デコード手段により第2のデータコードをデコードする。これにより、本来、データコードが配置されない終端識別コードの後のコード領域(コード領域の空き部分)等に、第2のデータコードが配置されていても、この第2のデータコードをデコードすることができる。したがって、コード語を配置すべきコード領域の空き部分に存在するデータコードをデコードすることができる。
請求項27の発明では、第2のデータコードと終端識別コードとの間に、第2のデータコードが秘匿するデータを表すコード語としてコード化された秘匿データコードであることを示す秘匿識別コードが配置されている場合においては、秘匿識別コード判断手段により、秘匿識別コードが配置されているか否かを判断し、秘匿識別コードが配置されていると判断した場合、秘匿情報出力手段により、第2のデータコードが秘匿データである旨の情報を出力する。これにより、この情報を受けた他の装置、処理またはシステムでは、第2のデータコードが秘匿データである旨を把握することができる。また、本来、データコードが配置されない終端識別コードの後のコード領域(コード領域の空き部分)に、第2のデータコードではないもの(例えばデータ化けしたコード相当のもの)が配置されている場合には、秘匿データである旨の情報が出力されないので、第2のデータコード以外のものをデコードすることで生じ得る誤動作を防止することができる。
請求項28の発明では、第2のデータコードが所定の暗号化方式により暗号化されている場合においては、復号手段により、暗号化された第2のデータコードを復号できる鍵を用いて暗号化された第2のデータコードを復号する。これにより、第2デコード手段によりデコードされた第2のデータコードの内容が所定の暗号化方式により暗号化されている場合でも、その内容を復号して元の平文に戻すことができる。
請求項29の発明では、復号できる鍵は、当該二次元コードの読取装置が備えている。これにより、当該二次元コード自体には復号できる鍵を含めたり、他から取得する必要がないので、復号に関する情報処理を簡素化することができる。
請求項30の発明では、鍵適合判断手段により、鍵特定情報に基づいて、当該二次元コードの読取装置が有する鍵が復号できる鍵であるか否かを判断し、当該読取装置が有する鍵が復号できる鍵であると判断した場合にはこの鍵を用いて復号手段により第2のデータコードを復号し、当該読取装置が有する鍵が復号できる鍵でないと判断した場合には第2のデータコードを復号しない。これにより、終端識別コードよりも前に配置される第1のデータコードは第1デコード手段によりデコードされても、当該読取装置が有する鍵が復号できる鍵でない場合には、終端識別コードよりも後に配置される第2のデータコードはデコードも復号されないので、不要な復号処理を抑制することができる。
請求項31の発明では、第2のデータコードが複数あり、各第2のデータコードごとに異なった鍵で暗号化されており、第2のデータコードには、暗号化されている第2のデータコードを復号できる鍵特定情報がそれぞれに付加されている場合において、鍵適合判断手段は、各第2のデータコードについて当該二次元コードの読取装置が有する鍵が復号できる鍵であるか否かを判断する。これにより、各第2のデータコードごとに異なった鍵で暗号化されている場合であっても、各第2のデータコードについて、請求項13の発明と同様に、終端識別コードよりも前に配置される第1のデータコードは第1デコード手段によりデコードされても、当該読取装置が有する鍵が復号できる鍵でない場合には、終端識別コードよりも後に配置される第2のデータコードは復号されないので、不要な復号処理を抑制することができる。
請求項32の発明では、復号できる鍵が第2のデータコードに付加されている場合において、鍵分離手段により分離した鍵を用いて復号手段により第2のデータコードを復号する。これにより、秘匿データコードを復号できる鍵を当該読取装置が持っていなくても、当該秘匿データコードを復号して元の平文に戻すことができる。
請求項33の発明では、第2のデータコードが複数あり、各第2のデータコードごとに異なった鍵で暗号化されている場合であっても、各第2のデータコードについて、請求項15の発明と同様に、秘匿データコードを復号できる鍵を当該読取装置が持っていなくても、当該秘匿データコードを復号して元の平文に戻すことができる。
請求項34の発明では、コード化される前のデータレコード中の位置関係を示す位置情報が第2のデータコードに付加されている場合において、位置情報分離手段により第2のデータコードから位置情報を分離し、この分離された位置情報に基づいて第2のデータをデータ配置手段によりデータレコード中に配置する。これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合であっても、デコードしたデータを、この位置情報に基づいてコード化前の位置関係に配置することができる。
請求項35の発明では、秘匿するデータを表すコード語としてコード化された秘匿データコードに所定の加工を施して、終端識別コードの後、または終端識別情報により特定される終端位置の後、に配置する。一般に、二次元コードの読取装置は、二次元コードのデコード処理において、コード領域に配置されたデータコードの先頭からコード列の終端を示す終端識別コードまでを読み取ってデコードするアルゴリズム仕様に設定されているため、通常、終端識別コードの後に配置されるデータコードは読み取りの対象にならない。このため、終端識別コードの後に配置されるコード等は、たとえそれが読み取り可能なコード語であっても、一般仕様の読取装置ではデコードすることはないので、終端識別コードの後、または終端識別情報により特定される終端位置の後、に秘匿したいデータコード(秘匿データコード)を配置することにより、終端識別コードの前に配置されたデータコードは読み取ることはできても、当該秘匿データコードは読み取ることはできない。また、秘匿データコードは、所定の加工を施されて当該秘匿データコードの存在がわからないように加工されているので、たとえ終端識別コードの後等を読み取る試みがなされても、秘匿データコードが配置されていることすらわからない。したがって、このような秘匿データコードが含まれる二次元コードを一般仕様の読取装置で読み取っても、当該秘匿データコードによって秘匿しようとするデータの存在はわからないので、一般仕様の読取装置の利用者には秘匿データの存在を認識させないようにすることができる。また、セキュリティの強度を一層高めることができる。
請求項36の発明では、終端識別コードと秘匿データコードとの間には、後続のデータコードが秘匿データコードであることを示す秘匿識別コードが配置されている。これにより、終端識別コードの後に配置されたデータコードは、秘匿データコードであることがわかるので、例えば、読取対象外のデータやデータ化けしたデータ等を秘匿データコードと誤認して読み取ることを防ぎ、またこれに起因する誤動作の発生を防止することもできる。
請求項37の発明では、請求項35の所定の加工を例示する。即ち、所定の加工は、秘匿データを構成するビットの並替え、秘匿データを構成するビットの分散配置、秘匿データを構成するビットにより特定されるデータ値の変換、のいずれかである。
例えば、請求項38の発明では、請求項35の所定の加工がビットの並替えまたは分散配置である場合には、開示データコードの内容に基づいて行われる。
また、請求項39の発明では、請求項35の所定の加工がビットの並替えまたは分散配置である場合には、当該二次元コードに付随する固有情報に基づいて行われる。
さらに、請求項40の発明では、請求項35の所定の加工がデータ値の変換である場合には、所定の変換テーブルまたは所定の変換式に基づいて行われる。
請求項41の発明では、開示するデータと秘匿するデータとが、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合、秘匿データコードには、データレコード中の位置関係を示す位置情報が付加されている。これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合であっても、デコードしたデータを、この位置情報に基づいてコード化前の位置関係に配置することができる。
請求項42の発明では、第1デコード手段により、終端識別コードよりも前に配置されるデータコード、または終端識別情報により特定される終端位置よりも前に配置されるデータコード、である第1のデータコードをデコードし、データコード判断手段により、終端識別コードの後または終端位置よりも後に第2のデータコードが配置されているか否かを判断し、データコード判断手段により第2のデータコードが配置されていると判断した場合、抽出手段による所定の抽出処理により第2のデータコードを抽出する。そして、抽出手段により抽出された第2のデータコードを第2デコード手段によってデコードする。これにより、本来、データコードが配置されない終端識別コードの後のコード領域(コード領域の空き部分)等に、所定の加工が施された第2のデータコードが配置されていても、この第2のデータコードをデコードすることができる。したがって、コード語を配置すべきコード領域の空き部分に存在するデータコードをデコードすることができる。
請求項43の発明では、第2のデータコードと終端識別コードとの間に、第2のデータコードが秘匿するデータを表すコード語としてコード化された秘匿データコードであることを示す秘匿識別コードが配置されている場合においては、秘匿識別コード判断手段により、秘匿識別コードが配置されているか否かを判断し、秘匿識別コードが配置されていると判断した場合、秘匿情報出力手段により、第2のデータコードが秘匿データである旨の情報を出力する。これにより、この情報を受けた他の装置、処理またはシステムでは、第2のデータコードが秘匿データである旨を把握することができる。また、本来、データコードが配置されない終端識別コードの後のコード領域(コード領域の空き部分)に、第2のデータコードではないもの(例えばデータ化けしたコード相当のもの)が配置されている場合には、秘匿データである旨の情報が出力されないので、第2のデータコード以外のものをデコードすることで生じ得る誤動作を防止することができる。
請求項44の発明では、第2のデータコードが、当該第2のデータコードを構成するビットの並替えまたはビットの分散配置により加工されていた場合においては、所定の抽出処理は、第2のデータコードを構成するビットの並替えまたはビットの分散配置を元に戻すことが可能な第1のデータコードの内容に基づいて、当該第2のデータコードを抽出する。これにより、第1のデータコードの内容に基づいて、ビットの並替えや分散配置といった所定の加工が行われている場合においては、このような第2のデータコードをデコードすることができる。
請求項45の発明では、第2のデータコードが、当該第2のデータコードを構成するビットの並替えまたはビットの分散配置により加工されていた場合においては、所定の抽出処理は、当該二次元コードに付随する固有情報で、第2のデータコードを構成するビットの並替えまたはビットの分散配置を元に戻すことが可能な情報に基づいて、当該第2のデータコードを抽出する。これにより、当該二次元コードに付随する固有情報に基づいて、ビットの並替えや分散配置といった所定の加工が行われている場合においては、このような第2のデータコードをデコードすることができる。
請求項46の発明では、第2のデータコードが、当該第2のデータコードを構成するビットにより特定されるデータ値の変換により加工されていた場合においては、所定の抽出処理は、第2のデータコードを構成するビットにより特定されるデータ値を逆変換することが可能な所定の変換テーブルまたは所定の変換式に基づいて、当該第2のデータコードを抽出する。これにより、所定の変換テーブルまたは所定の変換式に基づいて、データ値の変換といった所定の加工が行われている場合においては、このような第2のデータコードをデコードすることができる。
請求項47の発明では、デコード機能選択手段により、第1デコード手段による第1のデータコードのデコード機能と、第2デコード手段による第2のデータコードのデコード機能と、のいずれか一方を当該二次元コードの読取装置の使用者に選択させ得る。これにより、当該二次元コードの読取装置の使用者は、デコード機能選択手段によって、第1デコード手段による第1のデータコードのデコード機能と、第2デコード手段による第2のデータコードのデコード機能と、のいずれか一方を選択することができるので、例えば、第2のデータコードは読んでも第1のデータコードを読みたくない場合や、それとは逆に、第1のデータコードは読んでも第2のデータコードを読みたくない場合に、不要なデコード処理によるデコード時間を削減することができる。したがって、デコード時間を短縮することができる。
以下、本発明の二次元コードの生成方法およびその読取装置の実施形態について図を参照して説明する。なお、以下説明する各実施形態では、二次元コードの例として、QRコードを挙げるが、本発明に係る二次元コードはこれに限られることはなく、例えば、データマトリクス、マキシコード、CPコード、PDF417やRSSコンポジット等であってもQRコードと同様に本発明を適用することができる。
[第1実施形態]
まず、本発明の第1実施形態に係るQRコードプリンタ10の構成を、図1を参照して説明する。なお、図1(A) には、本第1実施形態に係るQRコードプリンタ10とそれに接続されるパーソナルコンピュータ(以下「パソコン」という)1とを示す説明図が図示されており、また図1(B) には、QRコードプリンタ10のハードウェア構成例を示すブロック図が図示されている。
図1(A) に示すように、QRコードプリンタ10は、ケーブル5を介してパソコン1に接続されることにより、パソコン1から出力されて当該QRコードプリンタ10に入力される英数字、漢字や記号等の文字データ(以下これらを「印刷データ」と総称する)に基づいてQRコードを生成してラベルP等に印刷する機能を有するものである。なお、ここでいう「QRコード」とは、日本工業規格(JIS)の二次元コードシンボル−QRコード−基本仕様(JIS X 0510:2004)に従うものである。
パソコン1は、パソコン本体2およびディスプレイ3により構成されており、パソコン本体2は、図略の、MPU、メインメモリ(主記憶装置)、ハードディスク(補助記憶装置)、入出力インタフェース、通信インタフェース、キーボード、ポインティングデバイス等からなる情報処理装置で、またディスプレイ3は、パソコン本体2に接続されることによりパソコン本体2から出力される情報を画面表示可能な情報表示装置である。
なお、このパソコン本体2には、QRコードプリンタ10のデバイスドライバがインストールされて(組み込まれて)おり、当該パソコン1の利用者が、QRコードとしてラベルPに印刷したい文字等を含んだ印刷データを、パソコン本体2からQRコードプリンタ10に対して任意に出力可能にしている。
これに対し、QRコードプリンタ10は、図1(B) に示すように、主に、MPU11、メモリ12、インタフェース13、ローラ制御部14、ヘッド制御部15、ローラ17、ヘッド18等から構成されている。なお、これらは、図略のプリント配線板に実装あるいは図略のハウジング内に内装されている。
MPU11は、QRコードプリンタ10全体を制御可能なマイクロコンピュータ(以下「マイコン」という)で、メモリバスを介して接続されるメモリ12とともに情報処理装置を構成し得るもので情報処理機能を有する。このMPU11には、メモリ12のほかに、インタフェース13、ローラ制御部14やヘッド制御部15も接続されている。なお、後述するコード生成処理は、このMPU11およびメモリ12により実行される。
メモリ12は、半導体メモリ装置で、例えばRAM(DRAM、SRAM等)やROM(EPROM、EEPROM等)がこれに相当する。このメモリ12のうちのRAMには、前述したパソコン1から送られてくる文字データを蓄積するバッファ領域のほか、MPU11が算術演算や論理演算等の各処理時に利用する作業領域等も確保可能に構成されている。またROMには、後述のコード生成処理等を実行可能な所定プログラムやその他、ローラ制御部14やヘッド制御部15等の各ハードウェアを制御可能なシステムプログラム等が予め格納されている。
インタフェース13は、前述したパソコン1のパソコン本体2から送られてくる印刷データ等を受信可能にする入力インタフェースで、シリアルバス等を介してMPU11に接続されている。このインタフェース13を介してMPU11に入力された印刷データは、コード生成処理によって後述するように情報処理されてコード化される。
ローラ制御部14は、ローラ17の駆動機構(図略)を制御し得る制御装置で、シリアルバス等を介してMPU11に接続されている。これにより、MPU11から受けた制御信号に従ってローラ17の回転の開始や停止あるいは回転方向等を制御している。
ヘッド制御部15は、例えば、感熱用紙からなるラベルに対して任意のパターンを印刷し得るサーマルヘッドで、シリアルバス等を介してMPU11に接続されている。本実施形態では、後述のコード生成処理によって生成されたQRコードを感熱ラベルに印刷可能にするもので、前述したローラ制御部14による感熱ラベルの紙送りタイミングに同期して、QRコードを構成する位置検出パターン、タイミングパターンやデータコード等を当該ラベルに印刷する。
なお、以下、ヘッド制御部15として、サーマルヘッドの場合を例示して説明するが、QRコードを印刷できるものであれば、例えば、インクジェット用やドットインパクト用のヘッドでも良いし、また印刷機構として、レーザプリンタやLEDプリンタ等であっても良い。
このようにQRコードプリンタ10を構成することによって、パソコン1から出力されて当該QRコードプリンタ10に入力された印刷データは、インタフェース13を介してメモリ12のバッファ領域に一旦蓄えられた後、次に説明するコード生成処理に渡される。ここで、コード生成処理を図2〜図4を参照して説明する。なお、図2には、コード生成処理の流れを示すフローチャートが図示されている。また図3には、図2に示すコード生成処理により情報処理されるデータやコードのフォーマット例が図示されている。さらに図4には、1型のQRコードの構成例が図示されている。
図2に示すように、コード生成処理は、QRコードプリンタ10の電源投入により起動するMPU11およびメモリ12によって開始され、まずステップS101により初期設定処理が行われる。この処理は、メモリ12の作業領域や印刷データを蓄えるバッファ領域をクリアしたり、所定のフラグやカウンタ等をクリアする。
ステップS103では、印刷データを受信したか否かを判断する処理で、印刷データを受信するまで、このステップを繰り返す(S103;No)。そして、印刷データを受信したと判断すると(S103;Yes)、続くステップS105によりタイマーのカウント値をクリアする処理を行う。このステップS105でカウンタ値がクリアされるタイマーは、次のステップS107により所定時間の経過を計時するものである。
ステップS107では、先のタイマーにより所定時間が経過したか否かを判断する処理が行われる。即ち、パソコン1から送られてくる印刷データに、暗号化等に関するデータが含まれているか否かを次のステップS111により判断する必要上、例えば、所定時間として1秒間が経過したか否かを判断し、この時間が経過するまでに、パソコン1から暗号化に関するデータが送られてこない場合には、所定時間の経過とともにステップS109に処理を移行する(S107;Yes)。
これに対し、所定時間が経過していない場合には(S107;No)、次のステップS111により暗号化等に関するデータとして、秘匿する必要のあるデータ(以下「秘匿データ」という)のデータレコード中の位置関係を示す秘匿データ位置情報と暗号するために用いる暗号キー(暗号鍵)とを受信したか否かを判断する処理が行われる。そして、これらを受信していると判断した場合には(S111;Yes)、続くステップS113に処理を移行し、これらを受信していると判断できない場合には(S111;No)、前述したステップS107に処理を戻して、再度、時間の経過を判断する。
そして、所定時間が経過したとステップS107により判断した場合には(S107;Yes)、ステップS109により所定のフラグに「0」をセットする。このフラグは、印刷データに秘匿データが含まれているか否かを示すもので、「0」がセットされている場合には、秘匿データが含まれていないことを示し、「1」がセットされている場合には、秘匿データが含まれていることを示す。このため、ステップS111により暗号化等に関するデータを受信していると判断した場合には(S111;Yes)、続くステップS113によりこのフラグに「1」をセットする処理が行われる。
ステップS113により所定のフラグに「1」をセットすると、続くステップ115により、開示データおよび秘匿データを並び替える処理が行われる。即ち、印刷データに、第三者に開示するデータ(開示データ)と、第三者には秘密にして隠しておきたいデータ(秘匿データ)と、が含まれており、これらがデータレコード中で混在している場合に、ステップS111により受信した「秘匿データのデータレコード中の位置関係を示す位置情報」に基づいて、データの順番を入れ替えて、開示データの集まりと秘匿データの集まりとに分ける処理を行う。
例えば、図3(A) に示すように、例えば、パソコン1から送られてくる印刷データのレコードに、開示データA、秘匿データα、開示データB、秘匿データβの順に並ぶデータが含まれていたとすると、ステップS115により、これらのデータの順番を入れ替えて図3(B) に示すように、開示データA、開示データB、秘匿データα、秘匿データβの順に並び替える処理を行う。これにより、開示データと秘匿データとがそれぞれまとめられるので、後のステップ121による終端識別コードの付加処理や、ステップS125による秘匿識別コードの付加処理等が容易になる。
次のステップS117では、開示データや秘匿データ等の各データをJISの基本仕様(JIS X 0510:2004)に従って符号化する処理が行われる。これにより、開示するデータを表すコード語としてコード化された開示データコードが生成され、また秘匿するデータを表すコード語としてコード化された秘匿データコードが生成される。
また続くステップS119では、開示データの各データに対する誤り訂正符号をJISの基本仕様(JIS X 0510:2004)に準拠して生成しさらにそれをコード化して誤り訂正コードを生成する処理が行われる。また、秘匿データについても、例えば、開示データと同様に、JISの基本仕様(JIS X 0510:2004)に記載されている誤り訂正コードの生成アルゴリズムを用いて誤り訂正符号を生成しそれをコード化して誤り訂正コードを生成する処理が行われる。
そして、続くステップS121により、開示データコードの後に終端識別コードを付加する処理が行われる。終端識別コードは、例えば、4ビットパターンで「0000」であり、図3(C) に示すように、開示データコードAの後に続く開示データコードBの直後に位置する。なお、図3(C) では、便宜上、開示データコードを「開示コード」、終端識別コードを「終端子」、とそれぞれ表現している。
次のステップS123では、前述した所定のフラグが「1」にセットされているか否か、即ち秘匿データが含まれているか否かを判断する処理が行われる。そして、秘匿データが含まれている場合には(フラグが「1」にセットされている場合:S123;Yes)、ステップS125に処理を移行し、また秘匿データが含まれていない場合には(フラグが「0」にセットされている場合:S123;No)、一連の秘匿処理(S125〜S133)を飛ばしてステップS135に処理を移行する。
ステップS125〜S133は、印刷データに秘匿データが含まれている場合に行われる一連の秘匿処理である。まず、ステップS125により、秘匿識別コードを終端識別コードの直後に付加する処理が行われる。
このステップS125による処理は、秘匿識別コードを終端識別コードの直後に配置することで、この終端識別コードの後に配置されているデータコードが「秘匿するデータを表すコード語としてコード化されたものであること」を明示的に表す。これにより、本コード生成処理によって生成されたQRコードQを、QRコードリーダ等のデコードする際に、当該QRコードQに秘匿データコードが含まれていることを認識可能にするので、例えば、読取対象外のデータやデータ化けしたデータ等を秘匿データコードと誤認して読み取ることを防ぎ、またこれに起因する誤動作の発生を防止することもできる。
次のステップS127では、秘匿データコードのデータ長を計算して求め、このデータ長をコード化したものを秘匿識別コードの直後に付加する処理が行われる。これにより、秘匿データコードが配置される領域や範囲がわかるので、本コード生成処理によって生成されたQRコードQを、QRコードリーダ等のデコードする際に、どこまでが秘匿データコードであるか、または暗号データコードであるかを認識可能にする。
例えば、図3(C) に示す例では、秘匿データコードαのデータ長と秘匿データコードβのデータ長との和が当該データ長として計算されて秘匿識別コードの直後に付加される。なお、図3(C) では、便宜上、秘匿データコードを「秘匿コード」、秘匿識別コードを「秘匿識別子」、とそれぞれ表現している。
続くステップS129では、暗号キーがあるか否かを判断することによって、秘匿データコードを暗号化する必要があるか否かを判断する。即ち、ステップS111によって暗号キーをパソコン1から受信している場合には、暗号キーがあるので(S129;Yes)、ステップS131に移行して暗号化処理を行う。これに対して、ステップS111によって暗号キーをパソコン1から受信していない場合には、暗号キーがないので(S129;No)、ステップS131による暗号化処理を飛ばしてステップS133に移行する。
なお、ステップS111により暗号キーを受信していない場合であっても、パソコン1が予め暗号キーをメモリ12やハードディスク等の情報記憶媒体に保持しているときには暗号キーがあるので(S129;Yes)、ステップS131で暗号化処理を行う。
ステップS131では、秘匿データコードを暗号化する処理が行われる。この処理は、例えば、公知の視覚復号型暗号技術(視覚復号型秘密分散法)を用いて秘匿データコードを暗号化する。これにより、このような暗号化されていない平文データが付加されている場合に比べてセキュリティの強度を高めることができる。
例えば、図3(D) に示す例では、秘匿データコードαを構成する「暗号化データ」の部分が暗号化され、「開始桁」、「文字数」および「復号キー検査データ」も併せて生成される。最初に位置する「開始桁」は、当該暗号化された秘匿データの位置情報として、印刷データの先頭をゼロ番地とした場合に表現可能なアドレス値がこれに相当する。また次の「文字数」は、暗号化されている秘匿データの文字数である。これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合であっても、本コード生成処理によって生成されたQRコードQを、QRコードリーダ等のデコードする際において、デコードしたデータをこの位置情報に基づいてコード化前の位置関係に配置することができる。
最後に付加されている「復号キー検査データ」は、当該暗号を解読するのに用いる復号キーを特定可能な鍵特定情報で、暗号方式が暗号キーと復号キーとが同じ共通鍵暗号方式(「秘密鍵暗号方式」ともいう)の場合には、当該復号キー検査データは暗号キーも特定できる。これにより、本コード生成処理によって生成されたQRコードQを、QRコードリーダ等のデコードする際に、秘匿データコードを復号キー(復号できる鍵)を容易に特定することができたり、復号キーであるか否かを判断することができる。
なお、秘匿データコードβについても秘匿データコードαと同様に構成され、「復号キー検査データ」として、秘匿データコードαを復号する復号キーと同じ情報を付加しても良いし、また秘匿データコードαの暗号キーとは異なった他の暗号キーで秘匿データコードβの秘匿データを暗号化した場合には、他の復号キーを特定する「復号キー検査データ」を付加しても良い。これにより、本コード生成処理によって生成されたQRコードQを、QRコードリーダ等のデコードする際に、各秘匿データコードごとに復号できる鍵を容易に特定することができたり、復号できる鍵であるか否かを判断することができる。
ステップS133では、データ長の直後に秘匿データコードを付加する処理が行われる。図3(D) に示す例では、秘匿データコードαおよび秘匿データコードβをデータ長の後に付加する。これにより、一般仕様の二次元コードの読取装置では、二次元コードのデコード処理において、終端識別コードの後に配置される埋め草コード等は読み取りの対象にしないため、このように終端識別コードの後に配置された秘匿データコードは読み取ることはできない。したがって、このような秘匿データコードが含まれる二次元コードを一般仕様の読取装置で読み取っても、当該秘匿データコードの存在はわからないので、当該読取装置の利用者には秘匿データの存在を認識させないようにすることが可能となる。
続くステップS135では、例えば、JISの基本仕様(JIS X 0510:2004)に記載されている処理アルゴリズムに準拠して、秘匿データコードの後に埋め草コードを付加する処理が行われ、さらにステップS137では、誤り訂正コードを付加する処理が行われる。これにより、図3(C) に示すフォーマットのデータコードが生成される。
そして、ステップS139では、ステップS137により生成されたデータコードに基づいて、各セルを生成し、図4に示すデータブロックに配置する処理が行われる。即ち、図4に示す1型のQRコードでは、1辺が21セル(モジュール)の正方形状に構成されているため、三隅に設けられている位置検出パターンや形式情報(図4に示す斜線部分)、さらにはタイミングパターンを除いたコード領域に、8個のセルを4行2列に配置して構成されるデータブロックを26ブロック(A0〜A25)配置する。
例えば、図3(C) に示す例では、開示データコードAをA0〜A2、開示データコードBをA3〜A6に配置し、終端識別コードをA7に配置する。そして、この終端識別コードの後方で、通常は埋め草コードが配置される位置に相当するA8〜A17に、秘匿識別コード、データ長、秘匿識別コード等を配置する。
即ち、A8に秘匿識別コードを配置し、その後のA9にデータ長を配置して、さらにこの後のA10〜A13に秘匿データコードα、A14〜A17に秘匿データコードβをそれぞれ配置する。そして、通常のQRコードと同様に、誤り訂正コードを最後のA20〜A25に配置して、この間の空いている部分であるA18〜A19に埋め草コードを配置する。なお、A15およびA18は、タイミングパターンを挟んで位置していることから、A15はA15とA15’とに、またA18はA18とA18’とに分割されている。
なお、ステップS131において、図3(E) に示すように、「復号キー検査データ」に代えて、復号キーそのものを付加しても良い。これにより、本コード生成処理によって生成されたQRコードQを、QRコードリーダ等のデコードする際に、例えば、当該QRコードリーダ等が秘匿データコードαの復号キーを持っていなくても、秘匿データコードαを復号して元の平文に戻すことができる。
また、秘匿データコードβについても、同様に「復号キー検査データ」に代えて、復号キーそのものを付加しても良い。付加する復号キーは、秘匿データコードαを復号する復号キーと同じものを付加しても良いし、また秘匿データコードαの暗号キーとは異なった他の暗号キーで秘匿データコードβの秘匿データを暗号化した場合には、この他の暗号キーに対応する他の復号キーを付加しても良い。これにより、本コード生成処理によって生成されたQRコードQを、QRコードリーダ等のデコードする際に、当該QRコードリーダ等が、各秘匿データコードごとに対応するそれぞれの復号キーを持っていなくても、それぞれの秘匿データコードを復号して元の平文に戻すことができる。
また、ステップS123により、秘匿データが含まれていないと判断した場合であっても(フラグが「0」にセットされている場合:S123;No)、図3(F) に示すように、暗号化していない平文データの前に、ステップS131で付加した「開始桁」や「文字数」を付加する処理ステップを、ステップS123とステップS135との間に設けても良い。これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合であっても、本コード生成処理によって生成されたQRコードQを、QRコードリーダ等のデコードする際において、デコードしたデータをこの位置情報に基づいてコード化前の位置関係に配置することができる。
以上説明したように、本第1実施形態に係るQRコードプリンタ10によると、MPU11により実行されるコード生成処理によって生成されるQRコードQでは、ステップS133により秘匿データコードが、埋め草コードの一部または全部に代えて、終端識別コードの後に配置されている。これにより、終端識別コードの後に配置された秘匿データコードは、一般仕様の読取装置では読み取りの対象にならないので、このような秘匿データコードが含まれる二次元コードを一般仕様の読取装置で読み取っても、当該秘匿データコードによって秘匿しようとするデータの存在はわからない。したがって、一般仕様の読取装置の利用者には秘匿データの存在を認識させないようにすることができる。
よって、このような秘匿データコードを含んでいても、一般仕様の読取装置には当該秘匿データコードのデコードデータに相当するものが画面表示されないので、利用者に秘匿データの存在を認識させることがなく、当該利用者に対して不信感を与えたり、解読を試みようとする不用意な動機を与えることがない。また、当該秘匿データコードのデコードデータに相当するものが制御データ等であっても、それが画面表示されることがないので、画面表示が乱れたりもしない。
なお、上述した第1実施形態では、QRコードプリンタ10により、ラベルPにQRコードQを印刷する例を挙げて説明したが、本発明はこれに限られることはなく、QRコードQを視覚的に表現可能なものであればよく、例えば、図2に示すコード生成処理をパソコン本体2により実行してディスプレイ3にQRコードQを表示するように構成しても良い。この場合、コード生成処理は、コンピュータプログラムとして概念できるので、例えば、「開示するデータを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、前記コード領域の空き部分にデータを表さない埋め草コードを配置する二次元コードの生成装置として、コンピュータを機能させるためのプログラムであって、秘匿するデータを表すコード語としてコード化された秘匿データコードを前記埋め草コードの一部または全部に代えて、前記終端識別コードの後に配置することを特徴とする二次元コードの生成プログラム。」と表現可能な技術的思想を把握できる。これにより、この二次元コードの生成プログラムにより二次元コードの生成装置として機能するコンピュータは、上述したQRコードプリンタ10のMPU11等と同様の作用および効果を奏する。
また、上述した第1実施形態では、QRコードプリンタ10にパソコン1を接続して当該パソコン1から印刷データを送る構成を例示して説明したが、英数字、漢字や記号等の文字データを出力可能な情報処理装置であれば、このような機能を備えたデジタルカメラや携帯電話機、あるいはハンドヘルドコンピュータやハンディターミナル等を、QRコードプリンタ10に接続する構成を採っても上述した作用および効果を得ることができる。
[第2実施形態]
次に、本発明の第2実施形態に係るQRコードリーダ20の構成を説明する。本第2実施形態に係るQRコードリーダ20は、第1実施形態で説明したQRコードプリンタ10により印刷されたQRコードQをデコード可能なQRコードリーダ20である。なお、QRコードリーダ20によりデコード可能なQRコードQの構成は、図3および図4を参照して既に説明しているので、ここでは説明を割愛する。
まず、本発明の第2実施形態に係るQRコードリーダ20の構成を図5を参照して説明する。なお、図5には、本第2実施形態に係るQRコードリーダのハードウェア構成例を示すブロック図が図示されている。
図5に示すように、QRコードリーダ20は、主に、照明光源21、受光センサ23、結像レンズ27等の光学系と、メモリ35、制御回路40、操作スイッチ42、液晶表示器46等のマイコン系と、電源スイッチ41、バッテリ49等の電源系と、から構成されている。なお、これらは、図略のプリント配線板に実装あるいは図略のハウジング内に内装されており、ハードウェア的には一般仕様のQRコードリーダ(読取装置)と同様に構成されている。
光学系は、照明光源21、受光センサ23、結像レンズ27等から構成されている。照明光源21は、照明光Lfを発光可能な照明光源として機能するもので、例えば、赤色のLEDとこのLEDの出射側に設けられる拡散レンズ、集光レンズ等とから構成されている。本第2実施形態では、受光センサ23を挟んだ両側に照明光源21が設けられており、図略のケースの読取口を介してラベルPに向けて照明光Lfを照射可能に構成されている。このラベルPには、第1実施形態で説明したQRコードQが印刷されている。
受光センサ23は、ラベルPやQRコードQに照射されて反射した反射光Lrを受光可能に構成されるもので、例えば、C−MOSやCCD等の固体撮像素子である受光素子を2次元に配列したエリアセンサが、これに相当する。受光センサ23は、結像レンズ27を介して入射する入射光をこの受光面23aで受光可能に図略のプリント配線板に実装されている。
結像レンズ27は、外部から読取口を介して入射する入射光を集光して受光センサ23の受光面23aに像を結像可能な結像光学系として機能するもので、例えば、鏡筒とこの鏡筒内に収容される複数の集光レンズとにより構成されている。
次に、マイコン系の構成概要を説明する。マイコン系は、増幅回路31、A/D変換回路33、メモリ35、アドレス発生回路36、同期信号発生回路38、制御回路40、操作スイッチ42、LED43、ブザー44、液晶表示器46、通信インタフェース48等から構成されている。このマイコン系は、その名の通り、マイコンとして機能し得る制御回路40およびメモリ35と中心に構成される。
光学系の受光センサ23から出力される画像信号は、増幅回路31に入力されることで所定ゲインで増幅された後、A/D変換回路33に入力されると、アナログ信号からディジタル信号に変換される。そして、ディジタル化された画像信号、つまり画像データは、メモリ35に入力されると、画像データ蓄積領域に蓄積される。なお、同期信号発生回路38は、受光センサ23およびアドレス発生回路36に対する同期信号を発生可能に構成されており、またアドレス発生回路36は、この同期信号発生回路38から供給される同期信号に基づいて、メモリ35に格納される画像データの格納アドレスを発生可能に構成されている。
メモリ35は、半導体メモリ装置で、例えばRAM(DRAM、SRAM等)やROM(EPROM、EEPROM等)がこれに相当する。このメモリ35のうちのRAMには、前述した画像データ蓄積領域のほかに、制御回路40が算術演算や論理演算等の各処理時に利用する作業領域等も確保可能に構成されている。またROMには、後述するデコード処理等を実行可能な所定プログラムやその他、照明光源21、受光センサ23等の各ハードウェアを制御可能なシステムプログラム等が予め格納されている。
制御回路40は、QRコードリーダ20全体を制御可能なマイコンで、CPU、システムバス、入出力インタフェース等からなり、メモリ35とともに情報処理装置を構成し得るもので情報処理機能を有する。この制御回路40には、内蔵された入出力インタフェースを介して種々の入出力装置と接続可能に構成されており、本第2実施形態の場合、電源スイッチ41、操作スイッチ42、LED43、ブザー44、液晶表示器46、通信インタフェース48等が接続されている。
これにより、例えば、電源スイッチ41や操作スイッチ42の監視や管理、またインジケータとして機能するLED43の点灯・消灯、ビープ音やアラーム音を発生可能なブザー44の鳴動のオンオフ、さらには読み取ったQRコードQによるコード内容を画面表示可能な液晶表示器46の画面制御や外部装置とのシリアル通信を可能にする通信インタフェース48の通信制御等を可能にしている。なお、通信インタフェース48に接続される外部装置には、当該QRコードリーダ20の上位システムに相当するホストコンピュータHST等が含まれる。
電源系は、電源スイッチ41、バッテリ49等により構成されており、制御回路40により管理される電源スイッチ41のオンオフによって、上述した各装置や各回路に、バッテリ49から供給される駆動電圧の導通や遮断が制御されている。なお、バッテリ49は、所定の直流電圧を発生可能な二次電池で、例えば、リチウムイオン電池等がこれに相当する。また、バッテリ49によることなく、例えば、通信インタフェース48を介して接続されるホストコンピュータHST等の外部装置から電力供給を受ける構成を採る場合もあり、この場合には当該バッテリ49は不要となる。
このようにQRコードリーダ20を構成することによって、例えば、電源スイッチ41がオンされて所定の自己診断処理等が正常終了し、QRコードQの読み取りが可能な状態になると、照明光Lfの発光を指示する操作スイッチ42(例えばトリガースイッチ)の入力を受け付ける。これにより、利用者がトリガースイッチを引いてオンにすることで、制御回路40が同期信号を基準に照明光源21に発光信号を出力するので、当該発光信号を受けた照明光源21は、LEDを発光させて照明光Lfを照射する。
すると、QRコードQに照射された照明光Lfが反射し、その反射光Lrが読取口を介して結像レンズ27に入射するため、受光センサ23の受光面23aには、QRコードQの像が結像される。これにより、QRコードQの像が受光センサ23を露光するため、上述したマイコン系によって画像処理された当該QRコードQの画像データが、メモリ35の画像データ蓄積領域を介して、次に説明するデコード処理に渡される。
ここで、デコード処理を図4,図6および図7を参照して説明する。なお、図6には、デコード処理の流れを示すフローチャートが図示されている。また図7には、図6に示す復号化処理の流れを示すフローチャートが図示されている。また、図4には、1型のQRコードの構成例を示す説明図が図示されている。
図6に示すように、デコード処理は、QRコードリーダ20の電源投入により起動する制御回路40およびメモリ35によって開始され、まずステップS201により初期設定処理が行われる。この処理は、メモリ35の作業領域や画像データを蓄える画像データ蓄積領域をクリアしたり、所定のフラグやカウンタ等をクリアする。なお、ここで説明するQRコードリーダ20は、ホストコンピュータHSTと接続されており、当該ホストコンピュータHSTから設定データとして復号キーのデータを取得するものとする。
ステップS203では、タイマーのカウント値をクリアする処理が行われる。このステップS203でカウンタ値がクリアされるタイマーは、次のステップS205により所定時間の経過を計時するものである。
ステップS205では、先のタイマーにより所定時間が経過したか否かを判断する処理が行われる。即ち、ホストコンピュータHSTから送られてくる設定データに復号キーのデータが含まれているか否かを次のステップS209により判断する必要上、例えば、所定時間として5秒間が経過したか否かを判断し、この時間が経過するまでに、ホストコンピュータHSTから暗号化に関するデータが送られてこない場合には、所定時間の経過とともにステップS207に処理を移行する(S205;Yes)。
これに対し、所定時間が経過していない場合には(S205;No)、次のステップS209により復号キー(復号鍵)を受信したか否かを判断する処理が行われる。そして、これを受信していると判断した場合には(S209;Yes)、続くステップS211に処理を移行し、受信していると判断できない場合には(S209;No)、前述したステップS205に処理を戻して、再度、時間の経過を判断する。
そして、所定時間が経過したとステップS205により判断した場合には(S205;Yes)、ステップS207により所定のフラグに「0」をセットする。このフラグは、QRコードQの秘匿データコードを復号キーで復号するか否かを示すもので、「0」がセットされている場合には、復号キーで復号しないことを示し、「1」がセットされている場合には、復号キーで復号することを示す。このため、209により復号キーを受信していると判断した場合には(S209;Yes)、続くステップS211によりこのフラグに「1」をセットする処理が行われる。
ステップS211により所定のフラグに「1」をセットすると、続くステップ213により、画像データを取得する処理が行われる。即ち、メモリ35の画像データ蓄積領域から蓄えられている画像データを読み出す処理を行う。これにより、例えば、図4に示すようなQRコードQのコード画像が得られる。
続くステップS215では、位置検出パターンを検出する処理が行われる。即ち、QRコードQは、図4に示すように、その三隅に位置検出パターンが設けられているため、これらを検出することによって、次のステップS217によりQRコードQのコード外形を検出する。
そして、ステップS219により各セルの中心座標を算出する処理を行うことによって次ステップS221により各セルの白黒を判別する。これにより、図4に示す形式情報(図4に示す斜線部分)やデータブロックを認識可能になるので、続くステップS223により、欠損等しているデータブロックがある場合には、そのブロックを誤り訂正可能であるか否かを判断する。
そして、ステップS223により誤り訂正可能であると判断できる場合には(S223;OK)、誤り訂正をして続くステップS300により復号化処理を行う。これに対し、ステップS223により誤り訂正可能であると判断できない場合には(S223;NG)、誤り訂正できないので、ステップS213に処理を移行して再度、画像データを取得してステップS215〜S221の各処理を行う。
ステップS300は、その詳細が図7に図示されているので、ここからは図7を参照して復号化処理を説明する。図7に示すように、復号化処理では、ステップS301により、まずカウンタnに0(零)をセットする処理が行われる。このカウンタnは、本復号化処理において、QRコードQを構成するデータコードの順番を示す変数として機能する。
ステップS303では、カウンタnが指すn番目のデータコードを取得する処理が行われる。そして、続くステップS305では、ステップS303により取得されたn番目のデータコードが、終端識別コードであるか否かを判断する処理が行われる。これにより、当該データコードが終端識別コードであると判断した場合には(S305;Yes)、終端識別コードよりも前に配置される通常のデータコードはこれ以上、当該QRコードQには含まれていないことになるので、ステップS315に処理を移行する。
これに対し、当該データコードが終端識別コードであると判断できない場合には(S305;No)、終端識別コードよりも前にまだ通常のデータコードが存在することになるので、続くステップS307に処理を移行して次のデータコード、つまり(n+1)番目のデータコードをコード数iを取得する。これは、第1実施形態で図3(D) を参照して説明したように、データコードの2文字目相当の位置には、文字数が格納されていることに基づくもので、その詳細は、JISの基本仕様(JIS X 0510:2004)の「8.4データの符号化」に記載されている。
ステップS307によりコード数iを取得すると、続くステップS309では、この文字数(i)分だけデータコードを取得する処理が行われ、さらにステップS311により当該データコード、つまり開示データコード(開示するデータを表すコード語としてコード化されたデータコード)を復号(デコード)する処理が行われる。
ステップS311による復号処理が終わると、ステップS313により、カウンタnが次のデータコードを指すように「n+i+1」をカウンタnに設定する処理が行われた後、再びステップS303に処理を戻してn番目のデータコードを取得する処理が行われる。
このように、ステップS303〜S313では、終端識別コードの前方に配置されて元来デコードされる通常のデータコード(第1のデータコード、開示データコード)を取得してデコードする処理が行われる。このため、これらの各ステップを実行する制御回路40等は、特許請求の範囲に記載の「第1デコード手段」に相当し得るものである。
ステップS315は、前述した所定のフラグに「1」がセットされているか否か、つまりQRコードQの秘匿データコードを復号キーで復号するか否かを判断する処理が行われる。そして、当該フラグに「1」がセットされていない場合には(S315;No)、復号キーで復号する必要がないため、本復号化処理を終了して図6に示すステップS300を終えてデコード処理を終了する。
これに対し、所定のフラグに「1」がセットされている場合には(S315;Yes)、復号キーで復号する必要があるため、続くステップS317に処理を移行してカウンタnにn+1を設定し、さらにステップS319によりカウンタnが指すn番目のデータコードを取得する処理が行われる。
そして、続くステップS321では、ステップS319により取得されたn番目のデータコードが、秘匿識別コードであるか否かを判断する処理が行われる。このため、このステップS321を実行する制御回路40等は、特許請求の範囲に記載の「データコード判断手段」や「秘匿識別コード判断手段」に相当し得るものである。
これにより、当該データコードが秘匿識別コードであると判断した場合には(S321;Yes)、秘匿識別コードよりも後には、秘匿データコードが存在することになるので、続くステップS323に処理を移行して次のデータコード、つまり(n+1)番目のデータコードをコード数jを取得する。これも、ステップS309と同様に、データコードの2文字目相当の位置には、文字数が格納されていることに基づくものである。
なお、ステップS321により秘匿識別コードが配置されていると判断した場合には、例えば、ホストコンピュータHSTに対して当該QRコードQには、秘匿識別コードが配置されている旨を通知するように構成しても良い。これにより、ホストコンピュータHSTでは、終端識別コードよりも後方のデータコードが秘匿データコードである旨を把握することができる。また、本来、埋め草コードしか配置されない終端識別コードの後のコード領域(コード領域の空き部分)に、埋め草コード以外のもので秘匿データコードではないもの(例えばデータ化けにより埋め草コードに該当しなくなったもの)が配置されている場合には、秘匿データコードである旨の情報がホストコンピュータHSTに対して出力されないので、秘匿データコード以外のものをデコードすることで生じ得る誤動作を防止することができる。
これに対し、当該データコードが秘匿識別コードであると判断できない場合には(S321;No)、秘匿識別コードよりも後には、これ以上、秘匿データコードが当該QRコードQには含まれていないことになるので、本復号化処理を終了して図6に示すステップS300を終えてデコード処理を終了する。
ステップS323によりコード数jを取得すると、続くステップS325では、この文字数(j)分だけデータコードを取得する処理が行われ、さらにステップS327によりカウンタnが次のデータコード、つまり秘匿データコードを指すように「n+j+2」をカウンタnに設定する処理が行われた後、ステップS329によりn番目の復号キー検査データ(鍵特定情報)を取得する処理が行われる。
そして、このステップS329により取得した復号キー検査データに基づいて、先のステップS209によりホストコンピュータHSTから受信した復号キーがこのn番目の秘匿データコードの暗号化データを解読する鍵として適合しているか否かの判断をステップS331により行う。ステップS331に当該復号キーが適合していると判断した場合には(S331;Yes)、続くステップS333により暗号化データを解読する。
なお、ここでの暗号化は、第1実施形態で説明した公知の視覚復号型暗号技術(視覚復号型秘密分散法)を用いたもので、これにより、秘匿データコードの暗号化データがこのような視覚復号型暗号技術により暗号化されている場合でも、復号して元の平文に戻すことができる。なお、このステップS333を実行する制御回路40等は、特許請求の範囲に記載の「復号手段」に相当し得るものである。
これに対して、ステップS331に当該復号キーが適合していると判断できない場合には(S331;No)、当該n番目の秘匿データコードを解読することなく、その次の秘匿データコードを取得すべく、ステップS337に移行してカウンタnにn+1を設定する。これにより、QRコードリーダ20が有する復号キーが当該n番目の秘匿データコードを解読できる復号キーでない場合には、当該n番目の秘匿データコードは解読も復号されないので、不要な復号処理を抑制することができる。なお、このステップS331を実行する制御回路40等は、特許請求の範囲に記載の「鍵適合判断手段」に相当し得るものである。
ステップS335では、秘匿データコードを復号する処理が行われる。即ちその前のステップS333により暗号化データを解読することができているので、このステップS335により解読した暗号化データに基づいて秘匿データコードを復号(デコード)する。
ステップS335による復号処理が終わると、ステップS337により、カウントnが次のデータコードを指すように「n+1」をカウンタnに設定する処理が行われた後、続くステップS339により、n番目のデータコードを取得する処理が行われる。
そして、ステップS341により、ステップS339で取得したn番目のデータコードが埋め草コードであるか否かを判断する処理が行われる。これにより、もし当該n番目のデータコードが埋め草コードである場合には(S341;Yes)、これ以上、当該QRコードQには秘匿データコードが含まれていないことになるので、本復号化処理を終了して図6に示すステップS300を終えてデコード処理を終了する。
これに対し、ステップS341により当該n番目のデータコードが埋め草コードであると判断されない場合には(S341;No)、当該n番目のデータコードは、秘匿データコードであるので、ステップS323に処理を移行して、再び(n+1)番目のデータコードをコード数jを取得することで、前述と同様の処理を行う。
このように、ステップS319,S323〜S335では、終端識別コードの後方に配置されて、本来はデコードされないデータコード(第2のデータコード、秘匿データコード)を取得してデコードする処理が行われる。このため、これらの各ステップを実行する制御回路40等は、特許請求の範囲に記載の「第2デコード手段」に相当し得る。
以上説明したように、本第2実施形態に係るQRコードリーダ20によると、本来、埋め草コードしか配置されない終端識別コードの後のコード領域(コード領域の空き部分)に、秘匿データコード(第2のデータコード)が配置されていても、この秘匿データコードをデコードすることができる。したがって、コード語を配置すべきコード領域の空き部分に存在するデータコードをデコードすることができる。よって、第1実施形態で説明したQRコードプリンタ10により印刷されたQRコードQを、本第2実施形態に係るQRコードリーダ20によりデコードすることができる。
なお、上述したデコード処理では、ステップS329によりn番目の復号キー検査データを取得するように構成したが、例えば、第1実施形態で図3(E) を参照して説明したように復号キーそのものが秘匿データコードに付加されている場合には、このステップS329に代えて、n番目の復号キーを取得するように構成しても良い。これにより、秘匿データコードの復号キー(復号できる鍵)を当該QRコードリーダ20が持っていなくても、当該秘匿データコードを復号して元の平文に戻すことができる。この場合、「n番目の復号キーを取得する」処理を実行する制御回路40等は、特許請求の範囲に記載の「鍵分離手段」に相当し得る。
また、各秘匿データコードごとに異なった暗号キーで暗号化されている場合であっても、各秘匿データコードについてそれぞれの復号キーが付加されているときには、ステップS329に代えて、n番目の復号キーを取得するように構成することで、秘匿データコードの復号キーを当該QRコードリーダ20が持っていなくても、それぞれの秘匿データコードを復号して元の平文に戻すことができる。
さらに、上述したデコード処理では、ステップS329によりn番目の復号キー検査データを取得するように構成したが、例えば、第1実施形態で図3(D) を参照して説明したように位置情報としての「開始桁」が秘匿データコードに付加されている場合には、このステップS329に代えて、秘匿データコードから「開始桁」を分離してこの分離された「開始桁」に基づいて秘匿データコードを復号(デコード)した秘匿データをコード化される前のデータレコード中の位置関係に配置するように構成しても良い。これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合であっても、デコードしたデータを、この位置情報に基づいてコード化前の位置関係に配置することができる。この場合、「秘匿データコードから「開始桁」を分離する」処理を実行する制御回路40等は、特許請求の範囲に記載の「位置情報分離手段」に相当し得る。また、「この分離された「開始桁」に基づいて秘匿データコードを復号(デコード)した秘匿データをコード化される前のデータレコード中の位置関係に配置する」処理を実行する制御回路40等は、特許請求の範囲に記載の「データ配置手段」に相当し得る。
[第3実施形態]
次に、本発明の第3実施形態に係るQRコードプリンタ10による他のQRコードの生成処理を図8および図9を参照して説明する。ここで説明する他のQRコードは、図9(C) に示すように、埋め草コード(11101100)の代わりに、任意のコード(例えば00000000や11111111)を空き領域に詰めるフォーマットを採るものである。
なお、図8に示すコード生成処理のフローチャートにおいて、既に説明したコード生成処理(図2)を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し詳細な説明を省略する。また、図9に示すデータやコードのフォーマット例についても、同様に、既に説明したフォーマット例(図3)と実質的に同一のフォーマットについては詳細な説明を省略する。なお、図9では、便宜上、開示データコードを「開示コード」、終端識別コードを「終端子」、とそれぞれ表現している。
図8に示すように、コード生成処理は、QRコードプリンタ10の電源投入により起動するMPU11およびメモリ12によって開始され、ステップS101により初期設定処理が行われると、次にステップS103により印刷データを受信する。そして、ステップS107,S111を経て秘匿データを受信すると、ステップS115により開示データおよび秘匿データを並び替え、さらにステップS117により開示データや秘匿データ等の各データを符号化した後、ステップS119により誤り訂正符号を生成してステップS121により開示データコードの後に終端識別コードを付加する。
なお、このような終端識別コードを開示データコードの後に付加するのではなく、例えば、図9(C) の括弧内に示すフォーマットのように、全ての開示データコードのデータ長を算出することによって得られる「開示データコードがなすコード列の終端位置」(以下単に「終端位置」という)を特定できる終端位置データ(図9(C) では「終端情報」)を開示データコードの先頭に配置または付加しても良い。
そして、印刷データに秘匿データが含まれている場合には(S123;Yes)、ステップS125〜S133によって、終端位置に続けて秘匿識別コード等を付加した後、また印刷データに秘匿データが含まれていない場合には(S123;No)、終端位置の後に、それぞれステップS135’により、前述した任意コードとして、例えば、00000000や11111111を付加する。
即ち、ステップS135’による任意コードの付加処理では、終端位置よりも後で誤り訂正コードよりも前の範囲において、秘匿データコードを詰めても空き領域(コード領域の空き部分)が生じる場合に埋め草コードに代えて任意のコード(例えば00000000や11111111)を詰める。このため、例えば、このようなデータフォーマットを構成するメモリ上で、予め全ての範囲をこのような任意のコードで埋める初期化処理をステップS101において処理している場合には、当該ステップS135’を行うことなく省略できる(図8ではステップS135’の枠線は破線で表現されている)。
そして、ステップS137により、誤り訂正コードを付加する処理が行われると、図9(C) に示すフォーマットのデータコードが生成されるため、続くステップS139によりこのようなデータコードに基づいて各セルを生成して図4に示して説明したデータブロックに配置される。つまり、本来、埋め草コードが配置される範囲に前述した任意コードが配置されること以外は、図2〜図4を参照して説明したQRコードと同様に配置される。
以上説明したように、本第3実施形態に係るQRコードプリンタ10によると、MPU11により実行されるコード生成処理によって生成されるQRコードQでは、ステップS133により秘匿データコードが終端位置の後に配置されている。これにより、終端位置の後に配置された秘匿データコードは、一般仕様の読取装置では読み取りの対象にならないので、このような秘匿データコードが含まれる二次元コードを一般仕様の読取装置で読み取っても、当該秘匿データコードによって秘匿しようとするデータの存在はわからない。したがって、一般仕様の読取装置の利用者には秘匿データの存在を認識させないようにすることができる。
よって、このような秘匿データコードを含んでいても、一般仕様の読取装置には当該秘匿データコードのデコードデータに相当するものが画面表示されないので、利用者に秘匿データの存在を認識させることがなく、当該利用者に対して不信感を与えたり、解読を試みようとする不用意な動機を与えることがない。また、当該秘匿データコードのデコードデータに相当するものが制御データ等であっても、それが画面表示されることがないので、画面表示が乱れたりもしない。
なお、上述した第3実施形態では、QRコードプリンタ10により、ラベルPにQRコードQを印刷する例を挙げて説明したが、本発明はこれに限られることはなく、QRコードQを視覚的に表現可能なものであればよく、例えば、図8に示すコード生成処理をパソコン本体2により実行してディスプレイ3にQRコードQを表示するように構成しても良い。この場合、コード生成処理は、コンピュータプログラムとして概念できるので、例えば、「開示するデータを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置、または前記開示データコードがなすコード列の終端位置を特定可能な終端識別情報をこのコード列の所定の位置に配置する二次元コードの生成装置として、コンピュータを機能させるためのプログラムであって、秘匿するデータを表すコード語としてコード化された秘匿データコードを、前記終端識別コードの後、または前記終端識別情報により特定される前記終端位置の後、に配置することを特徴とする二次元コードの生成プログラム。」と表現可能な技術的思想を把握できる。これにより、この二次元コードの生成プログラムにより二次元コードの生成装置として機能するコンピュータは、上述したQRコードプリンタ10のMPU11等と同様の作用および効果を奏する。
また、上述した第3実施形態では、QRコードプリンタ10にパソコン1を接続して当該パソコン1から印刷データを送る構成を例示して説明したが、英数字、漢字や記号等の文字データを出力可能な情報処理装置であれば、このような機能を備えたデジタルカメラや携帯電話機、あるいはハンドヘルドコンピュータやハンディターミナル等を、QRコードプリンタ10に接続する構成を採っても上述した作用および効果を得ることができる。
[第4実施形態]
次に、本発明の第4実施形態に係るQRコードリーダ20による他のQRコードのデコード処理を図10および図11を参照して説明する。なお、「他のQRコード」とは、埋め草コード(11101100)の代わりに、任意のコード(例えば00000000や11111111)を空き領域に詰めるフォーマットを採るコードのことで、第3実施形態に係るQRコードプリンタ10により印刷されたQRコードのことである。
なお、図10に示すデコード処理のフローチャートにおいて、既に説明したデコード処理(図6)を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し詳細な説明を省略する。また、図11に示す復号化処理のフローチャートにおいて、既に説明した復号化処理(図7)を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し詳細な説明を省略する。
図10に示すように、デコード処理は、QRコードリーダ20の電源投入により起動する制御回路40およびメモリ35によって開始され、ステップS201により初期設定処理が行われると、ステップS205により所定時間を経過した後(S205;Yes)、またはステップS209により復号キーを受信した後(S209;Yes)、ステップS213により画像データを取得する。そして、ステップS215,S217,S219,S221によりQRコードQを画像認識してステップS223により誤り訂正可能であるか否かを判断して、誤り訂正可能であると判断できる場合には(S223;OK)、誤り訂正をした後、ステップS300’により復号化処理(図11)を行う。
図11に示すように、ステップS300’の復号化処理では、ステップS301〜S313により終端位置(開示データコードがなすコード列の終端位置で、終端識別コードまたは終端位置データにより特定可能なもの)が見つかると(S305’;Yes)、ステップS315,S317,S319によりカウンタnが指すn番目のデータコードを取得してそれが秘匿識別コードであるか否かをステップS321により判断する。そして、秘匿識別コードであると判断すると(S321;Yes)、S323〜S331により復号キーの適合を調べてその復号キーでS333により暗号化データを解読し、さらにステップS335により秘匿データコードを復号する。
なお、ステップS321により秘匿識別コードが配置されていると判断した場合には、例えば、ホストコンピュータHSTに対して当該QRコードQには、秘匿識別コードが配置されている旨を通知するように構成しても良い。これにより、ホストコンピュータHSTでは、終端識別コードよりも後方のデータコードが秘匿データコードである旨を把握することができる。また、本来、埋め草コードしか配置されない終端識別コードの後のコード領域(コード領域の空き部分)に、埋め草コード以外のもので秘匿データコードではないもの(例えばデータ化けにより埋め草コードに該当しなくなったもの)が配置されている場合には、秘匿データコードである旨の情報がホストコンピュータHSTに対して出力されないので、秘匿データコード以外のものをデコードすることで生じ得る誤動作を防止することができる。
そして、ステップS336’によりこの復号した秘匿データコードが最後の秘匿データコードであるか否かを判断する。具体的には、例えば、図9(C) に示すように、秘匿識別子の次には、その後に続く秘匿データコードのデータ長が格納されているので、これに基づいて当該秘匿データコードが最後の秘匿データコードに該当するか否かを判断する。また、前述したように、最後の秘匿データコードの後、つまり空き領域(コード領域の空き部分)には任意のコード(例えば00000000や11111111)が詰められているので、このような任意のコードの存在に基づいて当該秘匿データコードが最後の秘匿データコードに該当するか否かを判断する。
ステップS336’により当該秘匿データコードが最後の秘匿データコードであると判断されない場合(最後の秘匿データコードでない判断された場合)には(S336’;No)、ステップS337により、カウントnが次のデータコードを指すように「n+1」をカウンタnに設定する処理が行われた後、続くステップS339により、n番目のデータコードを取得する処理が行われて、前述と同様にステップS323〜S331により復号キーの適合を調べる。
これに対し、ステップS336’により当該秘匿データコードが最後の秘匿データコードであると判断された場合には(S336’;Yes)、これ以上、当該QRコードQには秘匿データコードが含まれていないことになるので、本復号化処理を終了して図10に示すステップS300’を終えてデコード処理を終了する。
なお、ステップS303〜S313では、終端位置の前方に配置されて元来デコードされる通常のデータコード(第1のデータコード、開示データコード)を取得してデコードする処理が行われる。このため、これらの各ステップを実行する制御回路40等は、特許請求の範囲に記載の「第1デコード手段」に相当し得るものである。
また、ステップS321では、ステップS319により取得されたn番目のデータコードが、秘匿識別コードであるか否かを判断する処理が行われる。このため、このステップS321を実行する制御回路40等は、特許請求の範囲に記載の「データコード判断手段」や「秘匿識別コード判断手段」に相当し得るものである。さらに、ステップS331やS333を実行する制御回路40等は、特許請求の範囲に記載の「鍵適合判断手段」や「復号手段」に相当し得るものである。
さらに、ステップS319,S323〜S335では、終端位置の後方に配置されて、本来はデコードされないデータコード(第2のデータコード、秘匿データコード)を取得してデコードする処理が行われる。このため、これらの各ステップを実行する制御回路40等は、特許請求の範囲に記載の「第2デコード手段」に相当し得るものである。
以上説明したように、本第4実施形態に係るQRコードリーダ20によると、本来、データコードが配置されない終端位置の後のコード領域(コード領域の空き部分)に、秘匿データコード(第2のデータコード)が配置されていても、この秘匿データコードをデコードすることができる。したがって、コード語を配置すべきコード領域の空き部分に存在するデータコードをデコードすることができる。よって、第3実施形態で説明したQRコードプリンタ10により印刷されたQRコードQを、本第4実施形態に係るQRコードリーダ20によりデコードすることができる。
なお、上述したデコード処理では、ステップS329によりn番目の復号キー検査データを取得するように構成したが、例えば、第1実施形態で図3(E) を参照して説明したように第3実施形態でも同様に、復号キーそのものが秘匿データコードに付加されている場合には(図9(E) 参照)、このステップS329に代えて、n番目の復号キーを取得するように構成しても良い。これにより、秘匿データコードの復号キー(復号できる鍵)を当該QRコードリーダ20が持っていなくても、当該秘匿データコードを復号して元の平文に戻すことができる。この場合、「n番目の復号キーを取得する」処理を実行する制御回路40等は、特許請求の範囲に記載の「鍵分離手段」に相当し得る。
また、各秘匿データコードごとに異なった暗号キーで暗号化されている場合であっても、各秘匿データコードについてそれぞれの復号キーが付加されているときには、ステップS329に代えて、n番目の復号キーを取得するように構成することで、秘匿データコードの復号キーを当該QRコードリーダ20が持っていなくても、それぞれの秘匿データコードを復号して元の平文に戻すことができる。
さらに、上述したデコード処理では、ステップS329によりn番目の復号キー検査データを取得するように構成したが、例えば、第1実施形態で図3(D) を参照して説明したように第3実施形態でも同様に、位置情報としての「開始桁」が秘匿データコードに付加されている場合には(図9(D) 参照)、このステップS329に代えて、秘匿データコードから「開始桁」を分離してこの分離された「開始桁」に基づいて秘匿データコードを復号(デコード)した秘匿データをコード化される前のデータレコード中の位置関係に配置するように構成しても良い。これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合であっても、デコードしたデータを、この位置情報に基づいてコード化前の位置関係に配置することができる。この場合、「秘匿データコードから「開始桁」を分離する」処理を実行する制御回路40等は、特許請求の範囲に記載の「位置情報分離手段」に相当し得る。また、「この分離された「開始桁」に基づいて秘匿データコードを復号(デコード)した秘匿データをコード化される前のデータレコード中の位置関係に配置する」処理を実行する制御回路40等は、特許請求の範囲に記載の「データ配置手段」に相当し得る。
[第5実施形態]
次に、本発明の第5実施形態に係るQRコードプリンタ10による他のQRコードの生成処理を図12〜図14を参照して説明する。ここで説明する他のQRコードは、図14(B) 等に示すように、秘匿データコードα,β等に所定の加工を施して空き領域に詰めるフォーマットを採るものである。
なお、図12に示すコード生成処理のフローチャートにおいて、既に説明したコード生成処理(図2)を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し詳細な説明を省略する。また、図14に示すコードのフォーマット例についても、同様に、既に説明したフォーマット例(図3)と実質的に同一のフォーマットについては詳細な説明を省略する。なお、図14では、便宜上、開示データコードを「開示コード」、終端識別コードを「終端子」、とそれぞれ表現している。
図12に示すように、コード生成処理は、QRコードプリンタ10の電源投入により起動するMPU11およびメモリ12によって開始され、ステップS101により初期設定処理が行われると、次にステップS103により印刷データを受信する。そして、ステップS107,S111を経て秘匿データを受信すると、ステップS117により開示データや秘匿データ等の各データを符号化した後、ステップS121’により開示データコードの後に終端識別コード等(開示データコードがなすコード列の終端位置を含む)を付加する。
そして、印刷データに秘匿データが含まれている場合には(S123;Yes)、ステップS125,S127により終端位置に続けて秘匿識別コードを付加等した後、ステップS131により秘匿データコードを暗号化し、さらにステップS132により空き領域に埋め草コードを付加する。そして、この後にステップS500による所定の加工処理が行われる。一方、印刷データに秘匿データが含まれていない場合には(S123;No)、これらの各処理(S125,S127,S131,S132,S500)を行うことなく、ステップS133に処理を移行する。
ここで、ステップS500による所定の加工処理を図13を参照して説明する。図13に示すように、所定の加工処理では、まずステップS501によりポインタiをゼロクリアする処理が行われる。このポインタiは、ステップS507〜S517による分散配置処理の対象となるビット位置を指すもので、このクリア処理によって0ビット目からスタートする。
ステップS503では、終端位置よりも後に存在する空き領域(図14(A)〜(C)参照)、即ち、本来埋め草コードで埋められる領域で誤り訂正コードの範囲を除いた領域のビット数nを求める処理が行われる。この処理は、後述のステップS513により疑似乱数Rを求める際に使用される定数である。
続くステップS505では、暗号化データのビット数と復号キー検査データのビット数との和m(図14(D),(E)参照)を求める処理が行われる。即ち、分散配置処理の対象となる秘匿データコードのビット数を把握することにより、後述のステップS519による分散配置完了の可否判断を可能にしている。
次のステップS507では、開示データコードと暗号化データとを2バイト単位で排他的論理和(EXOR)演算を行いその結果Sを求める処理が行われ、続くステップS509ではこのような演算結果SをステップS513による疑似乱数のシード値にセットする処理が行われる。このシード値は、所定の演算により疑似乱数を発生させるための種で、このシード値が同じであれば、発生する乱数はまったく同じものとなる。つまり、ステップS513による疑似乱数は、この演算結果Sの値によって発生する値およびその発生順が一義的に定まる。この点で、本加工処理は、開示データコードの内容に基づいて行われることとなる。
ステップS511では、ポインタiをインクリメント、つまり1だけカウントアップさせる処理が行われる。これにより、ステップS517等による分散配置処理の対象となるビットの位置(ポインタiが指し示す位置)のカウントがアップされる。先の例では、0から1にカウントアップされることで、1ビット目が指し示めされる。
続くステップS513により、疑似乱数Rを求める処理が行われる。この演算は、前述したシード値に基づいて所定の乱数発生アルゴリズムに従った情報処理を行うことにより、擬似的に乱数を発生させるもので、ここでは、1からn(nは、空き領域のビット数)までの範囲で、疑似乱数を発生させる。このため、例えば「R=rand()mod n + 1」なる演算式で演算される。
なお、rand()は、シード値Sに対して疑似乱数を返す関数で、また、x mod yは、xに対してモジュロー値yを求める関数である。即ち、先の演算式では、modの前の引数x(rand()のこと)となる疑似乱数の値を、modの後の引数y(nのこと)で割ったときの余りに、1を加えた値として疑似乱数Rが求められる。なお、nは、前述したように、空き領域のビット数である。
このようにステップS513によって1〜nまでの疑似乱数Rが求められると、次のステップS515により当該疑似乱数Rが既に発生したものであるか否かの判断処理が行われる。つまり、疑似乱数Rとして同じ値が発生すると、次のステップS517による再配置処理においてビット値の上書きが行われることから、それ以前に同じビット位置に配置された値が破壊されてしまうことを防止するためである。このため、このステップS515により既に疑似乱数Rとして同じ値が発生していると判断された場合には(S515;Yes)、ステップS513に戻って再度、疑似乱数Rを求める。
ステップS515により既に発生した疑似乱数Rと同じ値であると判断されない場合には(S515;No)、続くステップS517により暗号化データのiビット目(ポインタiが指し示すビットの位置)の値を空き領域のRビット目にセットする処理、つまり配置処理が行われる。先の例では、1ビット目の値が空き領域のRビット目にセットされる。これにより、本来1ビット目に位置している情報が、乱数により不規則的に発生するRビット目に移動する。
続くステップS519では、ポインタiの値が、分散配置処理の対象となる秘匿データコードのビット数の終わり(最終ビット)に達しているか否かを判断する処理、つまり分散配置完了の可否判断が行われる。そして、ポインタiと秘匿データコードの全ビット数とが一致している場合には、秘匿データコードの全てのビットが前述したステップS507〜517による分散配置処理が施されていることになるので(S519;Yes)、本加工処理を終了する。
これに対して、ポインタiと秘匿データコードの全ビット数とが一致していない場合には、秘匿データコードにはまだ分散配置処理が施されていないビットが残存することになるので(S519;No)、ステップS511によりポインタiをカウントアップして再度ステップS513による疑似乱数発生処理を行う。
このようにステップS513〜S517による処理を秘匿データコードの全ビットに対して繰り返し行うことにより、本来、1ビット目、2ビット目、3ビット目、…、(n−1)ビット目、nビット目というように順番に並ぶ各ビット情報が、不規則的に変動する疑似乱数Rに従った位置にRビット目にそれぞれ移動してしまう。このため、ステップS500による所定の加工処理が終了すると、例えば、図14(B) に示すように、分散配置処理が施される前の秘匿データコードα,β(図14(A) )は、いずれもビット単位でバラバラに分解されて秘匿データコード片として分散して再配置され、また、埋め草コードも同様に分散配置処理よってビット単位でバラバラに分解されるため、秘匿データコード片と混在した状態で、空き領域内に再配置される。
これにより、暗号化されている秘匿データコードがさらにスクランブルされてしまうので、セキュリティの強度を一層高めることが可能となる。
なお、本加工処理では、このようなステップS507〜S517による分散配置処理に代えて、例えば、ビット位置を変換可能なビット位置変換テーブル(変換テーブル)に基づくビットの並替えでも良い。具体的には、例えば、1ビット目を4ビット目に、2ビット目を13ビット目に、3ビット目を1ビット目に、4ビット目を2ビット目に、5ビット目を15ビット目に、6ビット目を11ビット目に、7ビット目を8ビット目に、8ビット目を3ビット目に、9ビット目を10ビット目に、10ビット目を6ビット目に、11ビット目を12ビット目に、12ビット目を5ビット目に、13ビット目を9ビット目に、14ビット目を16ビット目に、15ビット目を7ビット目に、16ビット目を14ビット目に、それぞれ位置を変換するビット位置変換テーブルを設けその変換規則に従ってビット位置を変換する。これにより、例えば、16ビット構成のデータ「1001011011010110」(96D6h)は、「0101101101100001」(5A61h)に変換される。
また、このようなビット位置変換テーブルを通すことによって、例えば、先の例では、16進表記のデータ「96D6h」が、「5A61h」に変換されることから、秘匿データコードを構成するビットにより特定されるデータ値、そのものを所定のデータ値変換テーブル(変換テーブル)に基づいて変換する技術的思想として把握することができる。なお、このデータ値の変換は、例えば、入力データXを2倍にしてから1を減算して出力Y(=X×2−1)するといった所定のデータ値変換式によっても可能である。
さらに、例えば、ビット位置を所定ビット数だけLSB側に循環してシフトするように、循環シフトレジスタを通しても良い。先の16ビット構成のデータ例では、「1001011011010110」(96D6h)は、「0110100101101101」(696Dh)に変換される。勿論、シフト量は4ビットに限られることはなく、16ビット構成の場合には、1ビット〜15ビットのうちのいずれでも良く、またシフト方向もMSB側であっても良い。なお、ここで例示した16ビット構成の16ビットは、上述した暗号化データのビット数と復号キー検査データのビット数の和mに相当するものである。なお、図14(D) には、上述したような分散配置処理以外のビットの並替えやビット値の変換によるフォーマット例(暗号化データ+復号キー検査データ)が図示されている(図14(E) は、比較として第3実施形態のコード生成処理により生成された秘匿コードの構成例である。)。
また、前述したステップS507では、開示データコードと暗号化データとを2バイト単位で排他的論理和(EXOR)演算を行いその結果Sを求め、それをステップS509により疑似乱数のシード値にセットしたが、開示データコードに代えて、当該QRコードQに付随する固有情報、例えば、誤り訂正レベル(L,M,Q,H)や型番(1〜40)を用いて暗号化データとを排他的論理和(EXOR)演算を行いその結果Sを求めても良い。なお、誤り訂正レベルや型番の詳細や仕様は、例えば、日本工業規格(JIS)の二次元コードシンボル−QRコード−基本仕様(JIS X 0510:2004)に従う。
ここで、図12に戻ると、ステップS500により所定の加工処理が終了した後は、続くステップS133により秘匿データコードを付加され、さらにステップS134により秘匿データコードが含まれているか否かを判断する処理が行われる。
即ち、ステップS134では、秘匿データコードが含まれている場合には(S134;Yes)、前述したステップS132により埋め草コードが既に付加されていることから、続くステップS135による埋め草コードの付加が不要となる。このため、このような場合には、ステップS135による処理をスキップしてステップS137に処理を移行する。これに対し、秘匿データコードが含まれていない場合、つまり開示データコードのみの場合には(S134;No)、まだ埋め草コードが付加されていないため、続くステップS135により埋め草コードを付加してから、ステップS137に処理を移行する。
そして、ステップS137により、誤り訂正コードを付加する処理が行われると、図14(A)〜(C)に示すフォーマットのデータコードが生成されるため、続くステップS139によりこのようなデータコードに基づいて各セルを生成して図4に示して説明したデータブロックに配置される。
以上説明したように、本第5実施形態に係るQRコードプリンタ10によると、MPU11により実行されるコード生成処理によって生成されるQRコードQでは、ステップS500による加工処理により秘匿データコードに所定の加工を施して、終端識別コードの後、または終端識別情報により特定される終端位置の後、に配置する。これにより、秘匿データコードは、所定の加工を施されて当該秘匿データコードの存在がわからないように加工されているので、たとえ終端識別コードの後等を読み取る試みがなされても、秘匿データコードが配置されていることすらわからないので、セキュリティの強度を一層高めることができる。
なお、上述した第5実施形態では、ステップS113の後に、開示データおよび秘匿データを並び替える処理(図2に示すS115相当)を介在させていないが、印刷データに、第三者に開示するデータ(開示データ)と、第三者には秘密にして隠しておきたいデータ(秘匿データ)と、が含まれており、これらがデータレコード中で混在している場合に、ステップS111により受信した「秘匿データのデータレコード中の位置関係を示す位置情報」に基づいて、データの順番を入れ替えて、開示データの集まりと秘匿データの集まりとに分ける処理を行っても良い。これにより、例えば、パソコン1から送られてくる印刷データのレコードに、開示データA、秘匿データα、開示データB、秘匿データβの順に並ぶデータが含まれていた場合には、ステップS115により、開示データA、開示データB、秘匿データα、秘匿データβの順に並び替える処理を行うことにより、開示データと秘匿データとがそれぞれまとめられるので、後のステップ121による終端識別コードの付加処理や、ステップS125による秘匿識別コードの付加処理等が容易になる。
[第6実施形態]
次に、本発明の第6実施形態に係るQRコードリーダ20による他のQRコードのデコード処理を図15〜図17を参照して説明する。なお、ここで説明する他のQRコードは、図14(B) 等を参照して前述したように、秘匿データコードα,β等に所定の加工を施して空き領域に詰めるフォーマットを採るものである。
なお、図15に示すデコード処理のフローチャートにおいて、既に説明したデコード処理(図10)を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し詳細な説明を省略する。また、図16に示す復号化処理のフローチャートにおいて、既に説明した復号化処理(図11)を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し詳細な説明を省略する。
図15に示すように、デコード処理は、QRコードリーダ20の電源投入により起動する制御回路40およびメモリ35によって開始され、ステップS201により初期設定処理が行われると、ステップS205により所定時間を経過した後(S205;Yes)、またはステップS209により復号キーを受信した後(S209;Yes)、ステップS213により画像データを取得する。そして、ステップS215,S217,S219,S221によりQRコードQを画像認識してステップS223により誤り訂正可能であるか否かを判断して、誤り訂正可能であると判断できる場合には(S223;OK)、誤り訂正をした後、ステップS300”により復号化処理(図16)を行う。
図16に示すように、ステップS300”の復号化処理では、ステップS301〜S313により終端位置(開示データコードがなすコード列の終端位置で、終端識別コードまたは終端位置データにより特定可能なもの)が見つかると(S305’;Yes)、ステップS315,S317,S319によりカウンタnが指すn番目のデータコードを取得してそれが秘匿識別コードであるか否かをステップS321により判断する。そして、秘匿識別コードであると判断すると(S321;Yes)、続くステップS323によりコード数jを取得した後、ステップS600による所定の抽出処理が行われる。
なお、ステップS321により秘匿識別コードが配置されていると判断した場合には、例えば、ホストコンピュータHSTに対して当該QRコードQには、秘匿識別コードが配置されている旨を通知するように構成しても良い。これにより、ホストコンピュータHSTでは、終端識別コードよりも後方のデータコードが秘匿データコードである旨を把握することができる。また、本来、埋め草コードしか配置されない終端識別コードの後のコード領域(コード領域の空き部分)に、埋め草コード以外のもので秘匿データコードではないもの(例えばデータ化けにより埋め草コードに該当しなくなったもの)が配置されている場合には、秘匿データコードである旨の情報がホストコンピュータHSTに対して出力されないので、秘匿データコード以外のものをデコードすることで生じ得る誤動作を防止することができる。
ここで、ステップS600による所定の抽出処理を図17を参照して説明する。なお、図17に示す所定の抽出処理は、既に第5実施形態で説明した所定の加工処理(図13)と情報処理の内容が類似しているので、所定の加工処理を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し詳細な説明を省略する。
図17に示すように、所定の抽出処理では、ステップS501によりポインタiをゼロクリアする処理、ステップS503により終端位置よりも後に存在する空き領域のビット数n(図14(A)〜(C)参照)を求める処理、ステップS505により暗号化データのビット数と復号キー検査データのビット数との和m(図14(D),(E)参照)を求める処理、ステップS507により開示データコードと暗号化データとを2バイト単位で排他的論理和(EXOR)演算を行いその結果Sを求める処理、がそれぞれ順番に行われ、続くステップS509により疑似乱数のシード値にセットする処理が行われる。
このステップS509によりセットされるシード値は、第5実施形態で説明したように、所定の演算により疑似乱数を発生させるための種であり、このシード値が同じであれば、発生する乱数はまったく同じものとなる。このため、同一のQRコードQであれば、所定の加工処理(図13)のシード値と本抽出処理のシード値とは、同じ値となり、次のステップS513による疑似乱数の値およびその発生順も同じになる。
ステップS513により疑似乱数Rを求める処理が行われ、ステップS515により既に発生した疑似乱数Rと同じ値であると判断されない場合には(S515;No)、続くステップS617により、空き領域のRビット目の値を暗号化データバッファのiビット目(ポインタiが指し示すビットの位置)にセットする処理が行われる。
即ち、第5実施形態の所定の加工処理では、ステップS517により、暗号化データのiビット目(ポインタiが指し示すビットの位置)の値を空き領域のRビット目にセットする処理を行うことによって、例えば、1ビット目の値を空き領域のRビット目にセットしたが、本抽出処理のステップS617では、これとは逆に、空き領域のRビット目の値を暗号化データバッファのiビット目(ポインタiが指し示すビットの位置)にセット、例えば、空き領域のRビット目の値を暗号化データバッファの1ビット目にセットする。
これにより、第5実施形態の所定の加工処理により空き領域のRビット目にセットされた暗号化データのiビット目の値は、本抽出処理によって、暗号化データバッファのiビット目にセットされるので、ビット単位でバラバラに分解された秘匿データコード片等を元通りに復元することが可能となる。つまり、ステップS617等では集約復元処理が可能となる。
そして、ステップS519により、ポインタiと秘匿データコードの全ビット数とが一致している場合には、秘匿データコードの全てのビットが前述したステップS507〜517による集約復元処理が施されていることになるので(S519;Yes)、本加工処理を終了する。これに対して、ポインタiと秘匿データコードの全ビット数とが一致していない場合には、秘匿データコードにはまだ復元処理が施されていないビットが残存することになるので(S519;No)、ステップS511によりポインタiをカウントアップして再度ステップS513による疑似乱数発生処理を行う。
ここで、図16に戻ると、ステップS600により所定の抽出処理が終了した後、ステップS325により文字数(j)分だけデータコードを取得し、続くステップS329’によりj番目の復号キー検査データ(鍵特定情報)を取得する。
そして、ステップS329’により取得した復号キー検査データに基づいて、先のステップS209によりホストコンピュータHSTから受信した復号キーがこのj番目の秘匿データコードの暗号化データを解読する鍵として適合しているか否かの判断をステップS331により行い、当該復号キーが適合していると判断した場合には(S331;Yes)、続くステップS333により暗号化データを解読する。
これに対して、ステップS331に当該復号キーが適合していると判断できない場合には(S331;No)、当該n番目の秘匿データコードを解読することなく、本復号化処理を終了する。ステップS335により、秘匿データコードを復号する処理が行われると、図15に示すステップS300”を終えてデコード処理を終了する。
なお、本抽出処理では、このようなステップS507〜S617による集約復元処理に代えて、例えば、ビット位置を逆方向に変換可能なビット位置逆変換テーブルに基づくビットの並替えでも良い。具体的には、例えば、第5実施形態で説明したビット位置逆変換テーブルにおいては、1ビット目を3ビット目に、2ビット目を4ビット目に、3ビット目を8ビット目に、4ビット目を1ビット目に、5ビット目を12ビット目に、6ビット目を10ビット目に、7ビット目を15ビット目に、8ビット目を7ビット目に、9ビット目を13ビット目に、10ビット目を9ビット目に、11ビット目を6ビット目に、12ビット目を11ビット目に、13ビット目を2ビット目に、14ビット目を16ビット目に、15ビット目を5ビット目に、16ビット目を14ビット目に、それぞれ位置を変換するビット位置逆変換テーブルを設けその逆変換規則に従ってビット位置を変換する。これにより、例えば、16ビット構成のデータ「0101101101100001」(5A61h)は、元の「1001011011010110」(96D6h)に変換される。
また、このようなビット位置逆変換テーブルを通すことに代えて、秘匿データコードを構成するビットにより特定されるデータ値を逆方向に変換可能なデータ値逆変換テーブルを用いても良い。例えば、第5実施形態で説明したデータ値変換テーブルの例においては、16進表記のデータ「96D6h」が「5A61h」に変換されることから、これを逆方向の、「5A61h」を「96D6h」に逆変換可能な所定のデータ値逆変換テーブルに基づいて変換することで、復元処理が可能となる。
さらに、このようなビット位置逆変換テーブルを通すことに代えて、秘匿データコードを構成するビットにより特定されるデータ値を逆方向に変換可能なデータ値逆変換式を用いても良い。例えば、第5実施形態で説明した所定のデータ値変換式の例においては、入力データXを2倍にしてから1を減算して出力Y(=X×2−1)しているので、これとは逆に、入力データX’に1を加算した結果を2で除算して出力Y’(=(X’+1)/2)することで、復元処理が可能となる。
さらに、第5実施形態で説明した循環シフトレジスタを通す場合に対しては、所定の加工処理とは逆方向にシフトする循環シフトレジスタを復元処理に用いることで、復元処理が可能となる。例えば、先の16ビット構成のデータ例では、所定の加工処理においてLSB側に4ビットシフトさせることで「1001011011010110」(96D6h)を「0110100101101101」(696Dh)に変換したので、これを、復元処理では、逆方向のMSB側に4ビットシフトさせることで、「1001011011010110」(96D6h)というように元に戻すことが可能となる。
なお、ステップS509によりセットされる疑似乱数のシード値については、第5実施形態と同様に、当該QRコードQに付随する固有情報、例えば、誤り訂正レベル(L,M,Q,H)や型番(1〜40)を用いて暗号化データとを排他的論理和(EXOR)演算を行いその結果Sを求めても良い。なお、誤り訂正レベルや型番の詳細や仕様は、例えば、日本工業規格(JIS)の二次元コードシンボル−QRコード−基本仕様(JIS X 0510:2004)に従う。
なお、ステップS303〜S313では、終端位置の前方に配置されて元来デコードされる通常のデータコード(第1のデータコード、開示データコード)を取得してデコードする処理が行われる。このため、これらの各ステップを実行する制御回路40等は、特許請求の範囲に記載の「第1デコード手段」に相当し得るものである。
また、ステップS321では、ステップS319により取得されたn番目のデータコードが、秘匿識別コードであるか否かを判断する処理が行われる。このため、このステップS321を実行する制御回路40等は、特許請求の範囲に記載の「データコード判断手段」や「秘匿識別コード判断手段」に相当し得るものである。さらに、ステップS333を実行する制御回路40等は、特許請求の範囲に記載の「復号手段」に相当し得るものである。
さらに、ステップS319,S323〜S335では、終端位置の後方に配置されて、本来はデコードされないデータコード(第2のデータコード、秘匿データコード)を取得してデコードする処理が行われる。このため、これらの各ステップを実行する制御回路40等は、特許請求の範囲に記載の「第2デコード手段」に相当し得るものである。
以上説明したように、本第6実施形態に係るQRコードリーダ20によると、本来、データコードが配置されない終端識別コードの後のコード領域(コード領域の空き部分)等に、所定の加工が施された秘匿データコード(第2のデータコード)が配置されていても、この第2のデータコードをデコードすることができる。したがって、コード語を配置すべきコード領域の空き部分に存在するデータコードをデコードすることができる。
また、上述したデコード処理では、ステップS329’によりj番目の復号キー検査データを取得するように構成したが、例えば、第5実施形態で述べたように、ステップS113の後に、開示データおよび秘匿データを並び替える処理(図2に示すS115相当)を介在させて、ステップS111により受信した「秘匿データのデータレコード中の位置関係を示す位置情報」に基づいて、データの順番を入れ替えて、開示データの集まりと秘匿データの集まりとに分ける処理を行った場合には、ステップS329’に代えて、秘匿データコードから「開始桁」を分離してこの分離された「開始桁」に基づいて秘匿データコードを復号(デコード)した秘匿データをコード化される前のデータレコード中の位置関係に配置するように構成しても良い。
これにより、コード語としてコード化される前のデータレコード中の位置関係において前後して混在する場合であっても、デコードしたデータを、この位置情報に基づいてコード化前の位置関係に配置することができる。この場合、「秘匿データコードから「開始桁」を分離する」処理を実行する制御回路40等は、「位置情報分離手段」に相当し得る。また、「この分離された「開始桁」に基づいて秘匿データコードを復号(デコード)した秘匿データをコード化される前のデータレコード中の位置関係に配置する」処理を実行する制御回路40等は、「データ配置手段」に相当し得る。
[第7実施形態]
次に、本発明の第7実施形態に係るQRコードリーダ20によるQRコードQのデコード処理を図18および図19を参照して説明する。なお、ここで説明するQRコードQは、これまで第1実施形態〜第5実施形態において説明した各秘匿データコードを含むQRコードを意味する。
なお、本第7実施形態では、デコード処理のフローチャートは図示しないが、図6、図10や図15に示されるステップS300,S300’,S300”の各復号処理を図18に示す復号処理に置き換えることで、これらのデコード処理を本第7実施形態に適用することができる。また、図18に示す復号化処理のフローチャートにおいて、既に説明した復号化処理(図11)を構成する処理ステップと実質的に同一の処理ステップについては同一符号を付し詳細な説明を省略する。
図18に示すように、復号化処理は、S305’により終端位置(開示データコードがなすコード列の終端位置で、終端識別コードまたは終端位置データにより特定可能なもの)でないと判断すると(S305’;No)、ステップS307,S309により文字数i分のデータコードを取得した後、ステップS310により開示データコードをデコードするか否かを判断する。
即ち、このステップS310では、後で図19を参照して説明する「読取フラグS」の状態((1) 開示データコードだけをデコードするフラグS=1、(2) 秘匿データコードだけをデコードするフラグS=2、(3) 開示データコードと秘匿データコードの双方をデータコードするフラグS=0)に基づいて、開示データコードを復号する情報が当該読取フラグSにセットされているか否かを判断する。この読取フラグSは、例えば、QRコードリーダ20を構成するメモリ35の所定領域またはレジスタに設定されるもので、後述する読取フラグ設定処理(図19参照)により設定される。
そして、(1) 開示データコードだけをデコードするフラグS=1、または(3) 開示データコードと秘匿データコードの双方をデータコードするフラグS=0が読取フラグにセットされている場合)には(S310;Yes)、続くステップS311により開示データコードを復号する処理を行い、(2) 秘匿データコードだけをデコードするフラグS=2が読取フラグにセットされている場合には(S310;No)、続くステップS311により開示データコードを復号する処理をスキップして、ステップS313,S303等により次のデータコードを取得する処理を行う。
一方、ステップS301〜S313により終端位置(開示データコードがなすコード列の終端位置で、終端識別コードまたは終端位置データにより特定可能なもの)が見つかると(S305’;Yes)、ステップS314により秘匿データコードをデコードするか否かを判断する。
即ち、このステップS314は、前述したステップS310とは反対に、秘匿データコードをデコードするか否かを読取フラグSに基づいて判断する。つまり、(2) 秘匿データコードだけをデコードするフラグS=2、または(3) 開示データコードと秘匿データコードの双方をデータコードするフラグS=0が読取フラグにセットされている場合には(S314;Yes)、続くステップS315〜S335により秘匿データコードを復号する処理を行い、(1) 開示データコードだけをデコードするフラグS=1が読取フラグにセットされている場合には(S314;No)、本復号処理を終了する。
ここで、読取フラグ設定処理を図19を参照して説明する。なお、この読取フラグ設定処理は、例えば、当該QRコードリーダ20を構成するハードウェアの各種設定状態(例えば、ビープ音のオンオフ、液晶表示器46のバックライトのオンオフ等)を変更、解除または初期化する場合に起動されるメンテナンスプログラムに含まれるもので、通常のデコード処理(図6、図10や図15)には含まれないものである。なおここでは、メンテナンスプログラムによるメンテナンス処理のフローチャートおよびその説明は省略する。
図19に示すように、読取フラグ設定処理では、まずステップS901により読取フラグSに0(S=0)をセットする等の所定の初期化処理を行った後、ステップS903によりタイマー値をクリアする処理が行われる。このタイマーは、次のステップS905により所定時間を経過したか否かを判断するためにカウントされるものである。
そして、ステップS905により所定時間を経過していないと判断した場合には(S905;No)、続くステップS907によりコマンドを受信したか否かを判断する処理が行われる。このコマンドは、例えば、前述したメンテナンスプログラムにおいて、ホストコンピュータHSTから受信したり、当該QRコードリーダ20を構成する操作スイッチ42から入力されたりするものである。
ステップS907によりコマンドを受信したと判断しない(受信していないと判断した)場合には(S907;No)、ステップS905により再び所定時間を経過しているか否かを判断する。これに対し、コマンドを受信したと判断した場合には(S907;Yes)、続くステップS909により受信したコマンドの内容を判断する処理が行われる。
即ち、ステップS909により、当該コマンドが(1) 開示データコードだけをデコードするものである場合には、ステップS911により読取フラグSに「1」をセットし(S=1)、当該コマンドが(2) 秘匿データコードだけをデコードするものである場合には、ステップS913により読取フラグSに「2」をセットする(S=2)。これに対し、当該コマンドがこれらのいずれでもない場合には、読取フラグSを「0」のままにして、本読取フラグ設定処理を終了する。つまり、この場合には、前述したステップS901によりデフォルトで設定されている「0」をそのまま引き継ぐことで、(3) 開示データコードと秘匿データコードの双方をデータコードする読取フラグSを維持する。
ステップS911,S913により読取フラグがセットされると、本読取フラグ設定処理を終了する。なお、ステップS310,S314は、特許請求の範囲に記載の「デコード機能選択手段」に相当し得るものである。また、ステップS311は、特許請求の範囲に記載の「第1のデータコードのデコード機能」に相当し、ステップS335は、特許請求の範囲に記載の「第2のデータコードのデコード機能」に相当し得るものである。
以上説明したように、本第7実施形態に係るQRコードリーダ20によると、当該QRコードリーダ20の使用者は、開示データコードをデコードするか、秘匿データコードのデコードするか、の少なくとも一方を選択することができるので、例えば、秘匿データコードは読んでも開示データコードを読みたくない場合や、それとは逆に、開示データコードは読んでも秘匿データコードを読みたくない場合に、不要なデコード処理によるデコード時間を削減することができる。したがって、デコード時間を短縮することができる。
なお、上述した実施形態のなかには、例えば、第1実施形態(図2)や第3実施形態(図8)で説明したように、コード生成処理のステップS119において誤り訂正コードを生成しているものがあるが、必ずしもこのステップS119で誤り訂正コードを生成する必要はなく、例えば、当該ステップS119に相当する処理(誤り訂正コード生成処理)を、誤り訂正コードを付加する処理(ステップS137)とともにまたはその前段階で実行するように、コード生成処理の流れを構成しても良い。