平文・プレーンテキスト(plain text)データを暗号化した暗号文・サイファテキスト(ciphertext)を復号する デモ.com
共通鍵暗号方式、100種類以上対応 ~ PHP openssl_encrypt(暗号化)/openssl_decrypt(復号)


共通鍵暗号方式(common key cryptosystem)は、暗号化と復号に同一の(共通の)鍵を用いる暗号方式です。

暗号化デモ

・暗号化データ(必須)
(plain text)
最大100字)

・暗号化メソッド
(method)
暗号化方式 : 201 メニュー

・暗号化キー(必須)
(key)
暗号化/復号するための鍵。最大半角16字。

・オプション
(options)
( true:未加工の「暗号化された文字列」を返します。 false:base64エンコードされた「暗号化された文字列」を返します。
・iv
(initialization vector)
自動生成 入力不要
( iv の長さ。 上暗号化メソッドのメニューと連動しています。

// IV を自動生成するコード $methodは暗号化メソッド
$ivlen = openssl_cipher_iv_length($method);
$iv = openssl_random_pseudo_bytes($ivlen);


※下に結果を表示します     

復号デモ ・・・ 暗号化デモを実施の後に続いて、そのままの状態で「復号する」ボタンを押してください

・暗号化データ
(plain text)


・暗号化されたデータ
(ciphertext)


・暗号化メソッド
(method)
(201 メニュー)

・暗号化キー
(key)
暗号化/復号するためのの鍵

・オプション
(options)
( true:未加工の「暗号化された文字列」を返します。 false:base64エンコードされた「暗号化された文字列」を返します。
・iv
(initialization vector)


※下に結果を表示します     


暗号化/復号サンプルコード


<?php
//PHP openssl_encrypt(暗号化)/openssl_decrypt(復号) サンプル 2019.1.7

    // 暗号化するデータ 平分:plain text
    $plaintext = "暗号化するデータ - PayPay祭で燃え尽きたキャッシュレス化の灯火。";
    // 暗号化方式 暗号化メソッド
    $method = "AES-128-CBC";
    // 暗号化キー 暗号化および復号するときのパスワード 半角16文字以内
    $key = "password12345678";
    // オプション true(1)またはfalse(0)
    // trueに設定すると未加工の出力データとして返します。falseはbase64 エンコードされた値を返します
    $options = 0;
    // 暗号化方式に応じた、iv(初期化ベクトル)に必要な長さを取得 
    $ivlen = openssl_cipher_iv_length($method);
    // iv を自動生成 ivは128ビットまたは64ビットのビット列(暗号化方式により異なる) 
    $iv = openssl_random_pseudo_bytes($ivlen);
    //*** 暗号化 暗号文:ciphertext
    $ciphertext = openssl_encrypt($plaintext,$method,$key,$options,$iv);

    //***復号 平文に戻す
    $decrypt_data = openssl_decrypt($ciphertext,$method,$key,$options,$iv);

    //結果確認
    echo "●暗号化する平文(plain text): " . $plaintext."<br>";
    echo "●暗号化された暗号文(ciphertext): " . $ciphertext."<br>";
    echo "●復号された文(plain text): " . $decrypt_data."<br>";

?>


HOME
 最終更新日:2019.1.7
  掲示板


暗号化メソッドアルゴリズム(Wikipediaより)
項番暗号化メソッド暗号化アルゴリズム
0iv(initialization vector) 初期化ベクトル(英: initialization vector、IV)はビット列であり、ストリーム暗号またはブロック暗号を任意の暗号利用モードで実行するとき、同じ暗号鍵でストリームを生成しても毎回異なるストリームを生成するのに必要とされる。これにより、毎回暗号鍵を替えるといった時間のかかる作業を省くことができる。 IVの大きさは使用する暗号化アルゴリズムと暗号プロトコルに依存し、通常は暗号のブロックサイズと同じか暗号鍵と同じサイズである。IVは受信者がその暗号を解読する際に必須である。
0共通鍵暗号 共通鍵暗号方式(きょうつうかぎあんごうほうしき、英語: common key cryptosystem)は、暗号化と復号に同一の(共通の)鍵を用いる暗号方式である。 秘密鍵暗号方式 (secret key cryptosystem) 、対称鍵暗号 (symmetric key encryption scheme)、慣用暗号方式 (conventional encryptosystem)、共有鍵暗号 (shared key cryptosystem) ともいう。 長所は公開鍵暗号方式と比べて処理が高速であること、短所は鍵の受け渡しに注意を要することである。 どんなに複雑な鍵による暗号化を施しても、鍵さえ分かってしまえばだれでも復号できてしまうためである。暗号化する人と復号する人それぞれが同じ鍵を持つ必要があるが、鍵が漏洩する可能性は、保持者が増えるほど増すことになる。 受け渡し相手によってそれぞれ個別の鍵を持てばよいが、その場合は管理すべき鍵の数が相手の分だけ増加することになる。 具体的には2人でだけ受け渡しをする場合は、1種類の鍵をそれぞれが持てばよいが、3人だと3種類、4人で6種類、5人で10種類と増えていく。
n人の間で必要な鍵を求めるには、n ( n ? 1 ) / 2 {\displaystyle n(n-1)/2} n(n-1)/2 の数式に当てはめればよい。
共通鍵暗号は方式によりブロック暗号とストリーム暗号に大別され、ストリーム暗号のほうがロジック量は少なくて済み、処理速度も有利とされる]。
代表的な共通鍵暗号としては、ブロック暗号に分類されるDES、トリプルDES、FEAL、IDEA、AES、Camellia、ストリーム暗号に分類されるRC4、MUGIが挙げられる。
1AES (Advanced Encryption Standard) 以前の標準暗号であった「DES」は、 時代の経過による相対的な強度の低下 NSAの関与があるその設計の不透明性(詳細はDESの記事を参照) が問題であることから、新しい標準暗号としてアメリカ国立標準技術研究所(NIST)の主導により公募され、AESが選出された。2001年3月に FIPS PUB 197 として公表された。 厳密には「AES」は、選出された以外の暗号も含む、手続き中から使われた「新しい標準暗号」の総称であり、選出された暗号方式自体の名としてはRijndael(ラインダール)である。 AESはSPN構造のブロック暗号で、ブロック長は128ビット、鍵長は128ビット・192ビット・256ビットの3つが利用できる。AESの元となった Rijndael では、ブロック長と鍵長が可変で、128ビットから256ビットまでの32ビットの倍数が選べる。NISTが公募した際のスペックに従い、米国標準となったAESではブロック長は128ビットに固定、鍵長も3種類に限られた。
2BF (Blowfish) ブルース・シュナイアーによって開発された対称ブロック暗号。 鍵長は32ビットから448ビットまで可変、DESやIDEAよりも高速とされています。 特許が取得されていためライセンスフリーな暗号化方式として広く使用されています。
公式サイト
3CAMELLIA Camellia(カメリア)とは、2000年にNTTと三菱電機により共同開発されたブロック暗号である。名称の由来は植物のツバキ(ツバキ属:Camellia)。 CamelliaはFeistel構造を採用したブロック長128ビットのブロック暗号で、鍵長としてAESと同じ128ビット、192ビット、256ビットの3つを選択できる。 また、CamelliaはAESと同等の安全性を保ちつつハードウェアでの低消費電力で高速な暗号化・復号に優れている。
4CAST128(CAST5) Entrust Technologies社(Northern Telecomのグループ会社)のCarlisle AdamsとStafford Travarsesの 開発した64ビット・ブロック暗号化方式で鍵が1~128ビットまで可変である。CAST5ともいう。構造はFeistel構造である。 12~16段のラウンドを持ちDESに似た暗号アルゴリズムを用いている。このアルゴリズムは特許になっているが、その使用はフリーになっており、 RFC 2144として公開されている。PGP 5.0ではCASTがデフォルトで使われている。 http://info.internet.isi.edu/in-notes/rfc/files/rfc2144.txt 128ビットブロックに拡張したCAST-256は、AES候補の1つであった。
5DES (Data Encryption Standard) DESはIBMの開発した暗号方式をベースにして、1977年に米NBS(後のNIST)が標準化した共通鍵方式である。DESは最も広く知られ使われている暗号アルゴリズムである。 DESは56ビットの暗号鍵を使い(実際の鍵の長さは8バイトの64ビットを必要とする、各バイトに鍵とは無関係な1ビットのパリティを付けているので実質の鍵の長さは56ビットとなる)、64ビットのブロック暗号化方式をとっている。1つのブロックの暗号化は16段のラウンドをとってスクランブルを行っている。各ラウンドではS-boxという非線型要素を導入した変換を行っている。 FIPS PUB 46-2 ~ Data Encryption Standard (DES), 1993 December 30. http://www.nist.gov/itl/div897/pubs/fip46-2.htm
6IDEA (International Data Encryption Algorithm) Xuejia LaiとJames Masseyによって設計された、64ビットの共通鍵方式のブロック暗号化方式で、128ビットの鍵を用いる。 8ラウンドのスクランブルを行っている。IDEAはPGPで使われている。 http://www.ascom.ch/Web/systec/security/main.htm
International Data Encryption Algorithm (IDEA) はチューリッヒ工科大学の James Massey と来学嘉(Xuejia Lai)が設計し、1991年に発表したブロック暗号。 DESの代替を意図したアルゴリズムである。IDEAは PES (Proposed Encryption Standard) を若干手直しした暗号であり、元々は IPES (Improved PES) と呼ばれていた。 この暗号は Hasler Foundation(後に Ascom-Tech AG に吸収された)との研究契約の下で設計された。 多数の国で特許を取得しているが、非商用利用については自由に使うことが容認されていた。"IDEA" という名称は商標でもある。 アメリカにおける特許の有効期限が2012年1月をもって失効したことで、全世界で自由に使うことができるようになった。 IDEAは Pretty Good Privacy (PGP) v2.0 で使われていた。これは、v1.0で使われていたBassOmaticが安全でないと判明したために導入されたものである。 IDEAはOpenPGP規格ではオプションのアルゴリズムとされている。GNU Privacy Guard (GnuPG)では、特許の失効を受けて1.4.13/2.0.20から限定的にIDEAをサポートするようになった。
7RC2 RSA Data Security Inc.で開発された共通鍵方式のブロック暗号化方式で64ビットの平文の入力ブロックから64ビットの暗号文を生成する。可変サイズの暗号鍵が使えるのが特徴である。この暗号化の方式は16ビットオペレーションに最適化したアルゴリズムでDESより2倍の高速化が可能であるという。最近RSA社はこのアルゴリズムをインターネットRFCとするためにIETFにドラフトを提出した(97/6)。RC2はRon*s Cipher #2を表している(RonはRon Rivest)。
8RC4 RC4は可変長の鍵サイズを持つバイト処理方式のストリーム暗号である。アルゴリズムは鍵の生成にランダムな置換を行いその周期は10**100と極めて長い。1バイトの処理を行うのに8から16マシンオペレーションですむので高速な処理が可能で、DESより10倍以上高速に処理できる。 RC4はRSA社プロプライエトリーな技術で暗号アルゴリズムは公開されていないことになっていたが、1994年に誰かがインターネットのメーリングリストにソースコードを流した。これが直ちにUsenetのニュースに流れ、現在、世界中のFTPサイトに公開されている。
9SEED SEED(シード)とは、1998年に韓国情報保護振興院 (KISA) で開発されたブロック暗号である。 SEEDは、Feistel構造を採用したブロック長128ビット、処理の繰り返し段数16段のブロック暗号で、鍵長としては128ビットしか選択できない。 日本の暗号評価プロジェクトCRYPTRECより総当たり以外に有効な解読方法がないと評価されつつも、PCでの処理速度についてはやや遅いグループにあると評価されている。 一方、欧州の暗号評価プロジェクトNESSIEからはソフトウェアでの実装にてCamelliaよりも高速に動くプラットホームがあるという評価もされている。 SEEDは韓国情報通信標準規格 (KICS)、S/MIME (RFC 4010)、TLS/SSL (RFC 4162)、IPsec (RFC 4196)、ISO/IEC 18033 (ISO/IEC 18033-3:2010) の標準暗号として採用されている。 なお、SEEDは韓国国内では広く使われているが、それ以外の国では滅多に使われない。
id?
10Triple DES
(プルダウンメニューになし)
1つの平文ブロックの暗号化をDESのアルゴリズムを3回通す。3つの異なる共通鍵(Key1、Key2、key3)を用いる(E-E-E)方式と、2つの共通鍵(Key1、Key2)を使ってDESを3回通す(E-D-E)方式がある。後者はKey1でDESの暗号を行い、その結果をKey2で復号し、さらにKey1で再暗号化を行う。受信した暗号文の復号はこの逆をとる。DESのアルゴリズムをそのまま使い、暗号の強度を増す方法として使われる。この暗号方式の実質的な暗号の強度は80ビット程度の鍵に相当するという。最近は56ビット鍵のDESの弱さが指摘されているのでTriple DESの使用が薦められている。E-D-E方式はANSIでバンキングの標準になっておおり、米金融界ではこのTriple DESを使うようにしている。
11RC5
(プルダウンメニューになし)
RSA社のRCシリーズの暗号方式で1995年に提案されたもの。可変長ブロックサイズと可変長の鍵サイズ、さらに可変長回数のラウンドを持つブロック暗号化方式である。ブロックサイズは32、64、128ビットがとれる。ラウンド数は0から255、鍵サイズは0から2048ビットまで可変である。この方式はシンプルであるが強固なもので差分解読や線形解読に強いといわれる。 The RC5, RC5-CBC, RC5-CBC-Pad, and RC5-CTS Algorithms ftp://ftp.rsa.com/pub/rc5/rfc2040.txt
12ECB (Electronic Code Book Mode) 電子コードブック・モード:平文をブロック毎に処理した暗号ブロックを単純に連結して暗号文を作る方式。したがい、iv(初期化ベクトル)は使用しない。
この方法だと平文のブロックの同じパターンに対して暗号文のブロックに同じパターンが生じることになり、暗号解読の手段に使われる恐れがある。 このモードはそれぞれのブロックが独立しているので、短文のメッセージの暗号化に使われることが多い。長い実際の文書の暗号化には実用上はこの方法は使われず、CBCが使われる。
≫wikipedia 暗号利用モード ECB,CBC, PCBC, CFB, OFB, CTR
13CBC (Cipher Block Chaining Mode) 暗号ブロック連鎖モード:1つ前の暗号化したブロックと暗号化対象の現在の平文のブロックとの排他ORをとってから暗号化鍵でこのブロックの暗号化を行う。 結果の暗号文は次のブロックとの排他ORに使われる。このように前のブロックと次々に連鎖させて暗号文を作る。 ブロックの最初はその前のブロックがないので初期ベクトル(IV:Initial Vector)を与えて排他ORをとる。 このようにすることでECBのように、平文のブロックに同じパターンがあっても暗号文には同じパターンを生じないので、暗号解読を困難にさせることが出来る。 復号はこの逆の手法をとる。
実用に使われる文書の暗号化はこのCBCが多く用いられる。ただしこの方法は前のブロックの通信の過程でビットエラーが生じるとこのエラーが次々と次のブロックにエラーを波及させてしまう欠点を持っている。 暗号化アルゴリズム
14OFB (Output Feed Back) アウトプット・フィードバック・モード:OFBはECBの欠点である統計的な類推(平文の同じビットパターンで暗号文の同じビットパターンを生成する)の可能性を防ぐとともに、CBCで問題となるエラービットの波及を防ぐ。はじめにブロック長と同じ長さの初期ベクトルをブロック暗号方法で暗号化し第1乱数ブロックを作る、この乱数ブロックと平文のブロックとの排他ORをとったものが暗号文の第1ブロックとなる。次に第1乱数ブロックを次のブロック暗号の入力にフィードバックし、第2乱数ブロックを作る。これと平文の第2ブロックの排他ORをとって暗号文の第2ブロックをつくる。この操作を繰り返す。OFBでは初期ベクトルは同じ鍵を使う場合は異なったものを使わなければならない。OFBでは乱数ブロックを作るのにブロック暗号化を使うが、送信する暗号文は乱数列と平文の排他ORをとるストリーム暗号法となる。ブロックサイズが短いと同じ乱数ブロックを生成する確率が高くなり、解読にヒントを与えることになる。64ビットのブロックでは約300Gビット毎に繰り返しが現れることになる。この方法は伝走路にエラーの発生が生じる頻度の高いディジタル放送や電話などの音声のスクランブルなどに用いられる。 暗号化アルゴリズム
15CTR (Counter Mode) 暗号フィードバック・モード:CFBはOFBと非常に似た方法である。違いはOFBでは生成した乱数ブロックを次の乱数ブロックを生成する入力としたが、CFBでは前に生成した暗号文を次の乱数ブロックを作るための入力にする方法をとる。OFBと同様にストリーム暗号となる。 暗号化アルゴリズム
16CFB (Cipher Feedback Mode) CTRモード (Counter Mode) は、ブロック暗号を同期型のストリーム暗号として扱うものである。integer counter mode (ICM) あるいは segmented integer counter mode (SIC) とも呼ばれる。 「カウンター」と呼ばれる値を暗号化することで鍵ストリームブロックを生成する。カウンターとしては、単調増加であり値が重複することがなければどのような関数でも用いることができるが、1ずつ増加するものがもっとも単純でありもっとも一般的である。単純かつ決定論的な関数をカウンターとして用いることには異論があり、批評家は「暗号システムを系統だった入力に晒すことは、不必要なリスクを招くものである」と主張していた。現在では、CTRモードは広く受け入れられており、入力関数に由来する問題はCTRモードではなく基礎となるブロック暗号によるものと認識されている。 CTRモードはNiels FergusonおよびBruce Schneierによって推薦される2つの暗号利用モードのうちの1つとなっている(もう1つはCBCモード)。 CTRモードはOFBモードに似た性質を示すが、復号におけるランダムアクセス性を有している。CTRモードは暗号化、復号のいずれも並列処理が可能であり、マルチプロセッサ環境に適している。また、OFBモードのような短いサイクルの問題も存在しない。
17CCM(Counter with CBC-MAC) Counter with CBC-MAC (CCM、CCMモード)は、ブロック暗号の暗号利用モードの一つであり、認証付き暗号の一つである。CCMモードは128ビットブロック暗号に対してのみ定義されており、RFC 3610ではAESでの利用について定義されている。 CTRモードの派生として、CCMモードはストリーム暗号として振る舞う[1]。そのため、初期化ベクトル (IV)を慎重に選択し、再使用することは避けなければならない。 名称が示すように、CCMモードはカウンター (CTR)モードとCBC-MACモードを組み合わせたものであり、前者が暗号化に、後者が認証に用いられる。同一の鍵を暗号化と認証の双方に用いることができることができ、暗号化に用いられたカウンター値が認証で用いられる初期化ベクトルと衝突することがない。この組み合わせについては、ブロック暗号の安全性に基づくNISTによる検証結果が存在する[2]。この検証結果より、CCMモードは128ビットAESだけでなく任意のブロック長のブロック暗号および任意長の擬似乱数の生成に適用可能であることが示された(CTRモード、CBC-MACのいずれも一方向のみでの利用に限る)。 CCMモードはRuss Housley、Doug Whiting、Niels Fergusonによって設計された。CCMモードの開発時、Russ HousleyはRSA Laboratoriesに勤務していた。 CCM*と呼ばれるCCMモードの派生が存在し、ZigBeeでの暗号化に利用されている。CCM*はCCMモードのすべての機能を有しており、暗号化のみ、完全性の検証のみでの利用も可能である。
18XTS XEX(Xor Encrypt Xor)-TCB(Tweaked CodeBook)-CTS(Cipher Text Stealing)の略。LRWよりも高速で安全な暗号化方式。
19HMAC HMAC (Hash-based Message Authentication Code) とは、メッセージ認証符号 (MAC; Message Authentication Code) の一つであり、秘密鍵とメッセージ(データ)とハッシュ関数をもとに計算される。 1997年2月、IBMのKrawczykらにより提唱され、RFC 2104として公開されている。 また、FIPS PUB 198にも採用されている。 MACは認証及び改竄検出技術の核となるアルゴリズムである。 MAC値の算出時にHMACアルゴリズムの中で用いられるハッシュアルゴリズムは、MD5やSHA-1など任意の繰返し型ハッシュ関数が適用可能であり、それぞれHMAC-MD5、HMAC-SHA1などと呼ばれる。 HMACは次のように定義される:
H M A C K ( m ) = h ( ( K ? o p a d ) | | h ( ( K ? i p a d ) | | m ) ) . {\displaystyle {\mathit {HMAC}}_{K}(m)=h\left((K\oplus opad)\;||\;h((K\oplus ipad)\;||\;m)\right).} {\displaystyle {\mathit {HMAC}}_{K}(m)=h\left((K\oplus opad)\;||\;h((K\oplus ipad)\;||\;m)\right).}
ここで、"h" は繰返し型ハッシュ関数、"K" は秘密鍵で、もしハッシュ関数 "h" のブロック長より短い場合は "K" を先頭に寄せて末尾に0x00でパディングを行う。"m" は認証対象メッセージである。"||" は連結、"? {\displaystyle \oplus } \oplus "は排他的論理和を表す。2つの定数 "ipad" と "opad" は、各々ハッシュ関数 "h" のブロック長と同じ長さの埋め草で、"ipad" = 0x363636...3636 と "opad" = 0x5c5c5c...5c5c と定義する。つまり、ハッシュ関数 "h" のブロック長が 512ビット(64オクテット)の場合ならば、埋め草の "ipad" と "opad" は、それぞれ64オクテットの 0x36 や 0x5c の連続である。 HMACにより算出された値はMAC値と呼ばれる。
20SHA Secure Hash Algorithm(セキュアハッシュアルゴリズム)、略称SHAは、一群の関連した暗号学的ハッシュ関数であり、 アメリカ国立標準技術研究所(NIST)によって標準のハッシュ関数Secure Hash Standardに指定されている。 (2017年現在)SHA-0、SHA-1、SHA-2、SHA-3の4種類(ないし、SHA-0はSHA-1に含めて3種類)に大別される。 SHA-2まではMD5などと同じ Merkle?Damgard construction(en:Merkle?Damgard construction)のバリエーションと言える構造だが、 SHA-3 は全く別の構造となっている。SHA-2 以降はハッシュサイズを大きくしたバリエーションが用意されており、 SHA-2には、SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256 があり、SHA-3には、 SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256 がある。